\font\bigrm=cmbx12 \def\akkzent#1{{\accent'175 #1}} \def\Oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant \def\Hex#1{\hbox{\rm\akkzent{}\tt#1}} % hexadecimal constant \def\mf{METAFONT} \def\absatz{\par\penalty-50\vskip7.5pt plus4.5pt minus6pt\noindent} \def\abs{\parsep} \verbatimon \heading {Anhang D:\quad Zeichens"atze} \bigskip Eine zus"atzliche Aufgabe, die sich bei der Automatisierung des Notensatzes ergibt, ist die Erstellung von besonderen Zeichens"atzen, denn in der Regel enthalten die vorhandenen Zeichens"atze keine Notenschriftzeichen. Obwohl sie nicht f"ur die Noteneingabe, sondern f"ur die Ausgabe von Musik von Bedeutung ist, soll hier kurz auf die erstellten Zeichens"atze eingegangen werden. Diese werden dann in der Arbeit von A. Steinbach \lit{\Steinb} benutzt. \abs Wie in der Einleitung schon gesagt wurde, wird zur Erstellung der Zeichen das zu \TeX\ geh"orende Programm \mf\ verwandt. Dieses soll im folgenden kurz erl"autert werden. \absatz \subheading{Methode zur Erstellung von Zeichens"atzen} Die f"ur den Notensatz notwendigen Zeichens"atze werden mit dem von D. E. Knuth entwickelten Programm \mf\ erzeugt \lit{\Knuthmf}. Dieses Programm bietet sich an, weil zur Darstellung eines Zeichens im Gegensatz zu anderen Methoden relativ wenig Daten erforderlich sind. Au\3erdem ist es an das f"ur die Automatisierung des Notensatzes benutzte Textsatzsystem \TeX\ angepa\3t. \abs \mf\ erh"alt als Eingabe eine mathematische Beschreibung der Zeichen. Diese besteht im wesentlichen aus der Angabe von Kontrollpunkten und Anweisungen, wie diese zu verbinden sind. Die Punkte werden durch ihre Koordinaten, die Verbindungsvorschriften durch Winkel und Steigungen beschrieben. \mf\ zieht daraufhin mit verschiedenen Stiften, deren Form ebenfalls gew"ahlt werden kann, laut Anweisung Kurven durch die Kontrollpunkte. Dazu werden Splines verwendet. Ein Vorteil, der bei der Erstellung der Zeichen f"ur den Notensatz oft ausgenutzt wird, ist, da\3 mehrmals auftretende Kurven einmal definiert und mit Hilfe einer Kontrollsequenz an den entsprechenden Stellen eingesetzt werden k"onnen. \abs \mf\ erzeugt die Zeichen in der vom Benutzer gew"unschten ger"atespezifischen Aufl"osung. Eine ausf"uhrliche Beschreibung von \mf\ steht in dem Buch ``The \mf--book'' von D. E. Knuth \lit{\Knuthmf}. \absatz Nach dieser kurzen Erkl"arung der Arbeitsweise des Programms \mf\ sollen nun die f"ur den automatisierten Notensatz notwendigen Zeichens"atze vorgestellt werden. \absatz \subheading{Zeichens"atze f"ur den Notensatz} In den folgenden Tabellen 1 bis 7 werden die erzeugten Zeichens"atze (Fonts) gezeigt. Jedes Zeichen (Character) eines Fonts kann "uber seinen zugeordneten Charactercode angesprochen werden. Die Tabellen sind so aufgebaut, da\3 die Codes k"onnen am Tabellenrand sowohl in oktaler (\Oct{000} -- \Oct{177}) als auch in hexadezimaler (\Hex{00} -- \Hex{7F}) Notation abgelesen werden. So hat zum Beispiel das Aufl"osungszeichen (\font\music= music16 {\music \char'066\ }) den Oktalcode \Oct{066} und den Hexadezimalcode \Hex{36}, der kleine Violinschl"ussel dagegen den Code \Oct{118} bzw. \Hex{48}. Die bisher erstellten und verwendeten Zeichens"atze haben ein Schriftgr"o\3e von 16pt, dies entspricht der H"ohe eines Notenliniensystems (Rastralh"ohe). Sie sind also f"ur Noten, die eine Notenkopfh"ohe |\nhh| = 4pt besitzen, ausgelegt. Der Name oben links in der Tabelle bezeichnet den jeweiligen Zeichensatz. \abs Die erste Tabelle enth"alt die Notenschriftelemente wie Notenk"opfe, F"ahnchen, Versetzungszeichen, Pausen, Notenschl"ussel und Sonderzeichen, zum Beispiel f"ur Taktangaben. Dieser Zeichensatz ist noch durch Hinzunahme weiterer Sonderzeichen erweiterbar. \abs Tabelle 2 zeigt den Zeichensatz, der f"ur den Satz der Balken notwendig ist. Die Balken unterscheiden sich in der L"ange und der Steigung voneinander. Allerdings k"onnen nicht alle Balken beliebiger L"ange in den Zeichens"atzen aufgef"uhrt werden, da diese sonst zu umfangreich werden w"urden. Aus diesem Grund werden die Balken aus Teilst"ucken zusammengesetzt. F"ur die Steigungen sind charakteristische Balkensteigungen ausgew"ahlt worden (\lit{\Steinb}, Kap.11). Eine Zeile der Tabelle enth"alt die zu einer festen Balkensteigung geh"orenden Teilst"ucke. Die L"ange dieser Teilst"ucke wird dabei von einer Spalte zur andern verdoppelt. In einer Spalte stehen die Teilst"ucke, deren Anfangs-- und Endpunkte jeweils die gleichen Abzissenwerte haben. Der Code eines Balkenst"ucks kann demnach mit einer einfachen Gleichung aus seiner L"ange und Steigung berechnet werden. \abs Der dritte Zeichensatz (Tabelle 3) enth"alt die ungeteilten Haltebogen, die Crescendo-- und Decrescendozeichen und Bogenst"ucke, aus denen Bogen zusammengesetzt werden k"onnen. Die Bogenst"ucke sind zeilenweise mit wachsender Steigung angeordnet, w"ahrend die anderen Zeichen dieses Zeichensatzes der L"ange nach geordnet sind. Der Auswahl der L"angen und Steigungen liegen die Berechnungen aus \lit{\Steinb}, Kap.11 zugrunde. Dies gilt auch f"ur die n"achsten Zeichens"atze. \abs Die restlichen vier Tabellen zeigen die Zeichens"atze f"ur Bogen. Tabelle 4 und 5 enthalten die konvexen Bogen, Tabelle 6 und 7 die konkaven Bogen. Die konvexen Bogen werden oberhalb einer Notenzeile gezogen, w"ahrend die konkaven Bogen unterhalb einer Notenzeile gezeichnet werden. Die beiden Zeichens"atze, die zu einer Bogenart geh"oren, unterscheiden sich in der Sekantensteigung. In Tabelle 4 und 6 sind die Bogen mit positiver, in Tabelle 5 und 7 mit negativer Sekantensteigung aufgelistet. Die Bogen innerhalb eines Zeichensatzes sind wiederum so angelegt, da\3 der Charactercode eines Bogens wieder aus der L"ange und Steigung berechnet werden kann. Dabei wurden jedoch die Bogen spaltenweise mit wachsender Steigung angeordnet, wobei jede Spalte Bogen von zwei verschiedenen L"angen enth"alt. Eine Ausnahme bildet die erste Spalte. Dort wurden alle zum Satz erforderlichen Bogen der L"angen 1 |\nhw|, 2 |\nhw| und 3 |\nhw| angeordnet. \absatz Im Anschlu\3 an diese Beschreibung folgen die einzelnen Zeichens"atze (Tabellen 1 bis 7). Das \mf-Programm, mit dem die Zeichens"atze generiert werden k"onnen, ist in der vorliegenden Arbeit weggelassen worden und kann gesondert angefordert werden. \vfill\eject \verbatimoff % macros for font tables % aus dem \tex book von Donald E. Knuth \verbatimon \countdef\counter=255 \def\oddline#1{\cr \noalign{\nointerlineskip} \multispan{19}\hrulefill& \setbox0=\hbox{\lower 2.3pt\hbox{\Hex{#1x}}}\smash{\box0}\cr \noalign{\nointerlineskip}} \def\evenline{\cr\noalign{\hrule}} \def\chartstrut{\lower4.5pt\vbox to14pt{}} \def\beginchart#1{$$\global\counter=0 #1 \halign to\hsize\bgroup \chartstrut##\tabskip0pt plus10pt& &\hfil##\hfil&\vrule##\cr \lower6.5pt\null &{\it\fontname\ } &&\Oct0&&\Oct1&&\Oct2&&\Oct3&&\Oct4&&\Oct5&&\Oct6&&\Oct7&\evenline} \def\endchart{\raise11.5pt\null&&&\Hex 8&&\Hex 9&&\Hex A&&\Hex B& &\Hex C&&\Hex D&&\Hex E&&\Hex F&\cr\egroup$$} \def\:{\setbox0=\hbox{\char\counter}% \ifdim\ht0>7.5pt \dimen1=\ht0 \advance \dimen1 by 2pt \ht0=\dimen1 \fi \ifdim\dp0>2.5pt \dimen1=\dp0 \advance \dimen1 by 2pt \dp0=\dimen1 \fi \setbox0=\hbox{% \vrule depth \dp0 width 0pt \box0}\box0\global\advance\counter by1 } \def\normalchart{% &\Oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 &\Oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\Oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 &\Oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\Oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 &\Oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\Oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 &\Oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\Oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 &\Oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\Oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 &\Oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\Oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 &\Oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\Oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 &\Oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} \def\table #1 {{\offinterlineskip \font\sfont=#1 \edef\fontname{#1} \beginchart\sfont \normalchart \endchart \bigskip }} \table{music16} \centerline{\bf Tabelle 1} \vfill\eject \table{beam16} \centerline{\bf Tabelle 2} \vfill\eject % { \advance\hsize by 4cm\advance \hoffset by -2cm \table{slur16} \centerline{\bf Tabelle 3} \vfill\eject } \table{sluruu16} \centerline{\bf Tabelle 4} \vfill\eject \table{slurdu16} \centerline{\bf Tabelle 5} \vfill\eject \table{slurud16} \centerline{\bf Tabelle 6} \vfill\eject \table{slurdd16} \centerline{\bf Tabelle 7} \vfill\eject