\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

