%                                                                       %
% Copyright (C) 1986,1987 by Andrea Steinbach and Angelika Schofer      %
%                                                                       %
%                                                                       %
% 10.11.87 \def\hunkglue ge"andert. (welche Auswirkungen hat das,       %
%                ausser dass \two... einen Fehler weniger macht???)     %
% 16.11.87 \def\intslurwidth ge"andert (vor division += \seminhw        %
% 16.11.87 \def\gradientslur ge"andert (vor division += .5\seminhh      %
%                                                                       %
\def\fmtname{MTeX}\def\fmtversion{0.92}
\immediate\write10{MTeX Version 0.92 - Release  16 November 1987}
%                                                                       %
%               INHALTSVERZEICHNIS                                      %
%                                                                       %
% Allgemeine Vereinbarungen ......................................... 2 %
% Definitionen der neuen Zeichensaetze .............................. 2 %
% Definitionen der neuen Character .................................. 2 %
% Registerdefinitionen: Count,Box,Dimen usw ......................... 3 %
% Registerinitialisierungen ......................................... 6 %
% Punktierung ....................................................... 7 %
% Hilfsfunktionen - Hilfsmacros ..................................... 8 %
% Macros zur Listenerzeugung und Verarbeitung .......................10 %
% Notenlinien und Hilfslinien .......................................11 %
% Taktstriche u. ae. ................................................12 %
% Das Setzen der Versetzungszeichen .................................13 %
% Versetzungszeichen - Eingabemacros ................................14 %
% Noten              - Eingabemacros ................................14 %
% Pausen             - Eingabemacros ................................14 %
% Wertpunkte ........................................................15 %
% Akkorde            - Eingabemacros ................................16 %
% Konstruktion der Noten und Pausen .................................16 %
% Berechnung der Notenhalslaengen ...................................17 %
% Konstruktion der Notenhaelse ......................................18 %
% Das Setzen der Noten ..............................................18 %
% Tonarten und Aufloesung, Notenschluessel und Taktangabe ...........19 %
% Die Verarbeitung der Nachbarschaften ..............................20 %
% Die Initialisierung der Listen einer Notengruppe ..................20 %
% Abarbeitung und Setzen einer Notengruppe ..........................21 %
% Verbalkung - Eingabemacros ........................................21 %
% Berechnungen der Halslaengen und Steigung .........................22 %
% Plazierung und Zusammensetzung der Balken .........................24 %
% Die Bogen .........................................................25 %
% Akzente fuer Noten und Akkorde ....................................30 %
% Textunterlage .....................................................31 %
% Zweistimmige Notation in einem System .............................33 %
% Beginn und Ende ...................................................33 %
% Defaults ..........................................................34 %
%                                                                       %
%                                                                       %
%      (Seitennummern bei Druck des Makropakets mit 60 Zeilen je Seite) %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
%                                                                       %
\catcode`@=11
%       **************************************************              %
%       *    Allgemeine Vereinbarungen                   *              %
%       **************************************************              %
\frenchspacing
%\parindent 0pt
% Parameter fuer Notensatz
\def\inisong{\linepenalty10%\linepenalty100
  \pretolerance=-1
  \tolerance=200
  \finalhyphendemerits=-1000
  \hyphenpenalty=-1000
  \exhyphenpenalty=-100
  \doublehyphendemerits=-1000
  \adjdemerits=1000
  \adjdemerits=250
  \interlinepenalty=-10 \inidefaults}%\inidefaults siehe DEFAULTS
%\parfillskip0pt
%       Dimensionen die  in PLAIN TEX eingefuehrt wurden
%\newdimen\p@ \p@=1pt % this saves macro space and time
%\newdimen\z@ \z@=0pt % can be used both for 0pt and 0
%\newskip\z@skip \z@skip=0pt plus0pt minus0pt
%\newbox\voidb@x % permanently void box register
%       **************************************************              %
%       *    Definition der neuen Zeichensaetze          *              %
%       **************************************************              %
\font\music=music16                         %Noten
\font\smallmusic=music16                    %Noten(im Moment noch mit
                                            %\music identisch
\font\beamfont=beam16                       %Balken
\font\slurfont=slur16                       %Bogen
\font\slurfontuu=sluruu16                   %Bogen
\font\slurfontud=slurud16                   %Bogen
\font\slurfontdu=slurdu16                   %Bogen
\font\slurfontdd=slurdd16                   %Bogen
\font\eightrm   =cmr8
%       **************************************************              %
%       *    Definition der neuen Character              *              %
%       **************************************************              %
\catcode`\"=12
\def\hex{"} % zum Eingeben von Zahlen in hex
\def\3{\char"19{}}
\catcode`\"=\active %Unlaute
\def"{\accent'177}
%
\chardef\quart=\hex21                       %Notenkoepfe
\chardef\half=\hex22
\chardef\whole=\hex23
\chardef\eighthup=\hex28                    %Faehnchen
\chardef\eighthdown=\hex2D
\chardef\sixteenthup=\hex29
\chardef\sixteenthdown=\hex2E
\chardef\thirtytwoup=\hex2A
\chardef\thirtytwodown=\hex2F
\chardef\sixtyfourup=\hex2B
\chardef\sixtyfourdown=\hex30
\chardef\hundredtwentyeightup=\hex2C
\chardef\hundredtwentyeightdown=\hex31
\chardef\wholerest=\hex3C                   %Pausen
\chardef\halfrest=\hex3D
\chardef\quartrest=\hex3E
\chardef\eighthrest=\hex3F
\chardef\sixteenthrest=\hex40
\chardef\doublerest=\hex3A                  %Taktpausen
\chardef\ddoublerest=\hex3B
\chardef\fermateup=\hex50                   %Fermaten
\chardef\fermatedown=\hex51
\chardef\mflat=\hex32                       %Versetzungszeichen
\chardef\mdoubleflat=\hex33
\chardef\mquartflat=\hex37
\chardef\mthreequartflat=\hex3A
\chardef\msharp=\hex34
\chardef\mdoublesharp=\hex35
\chardef\mnatural=\hex36
\chardef\mviolin=\hex47                     %Notenschluessel
\chardef\mviolinoct=\hex47
\chardef\mviolinOct=\hex47
\chardef\mbass=\hex49
\chardef\mbassoct=\hex49
\chardef\mbassOct=\hex49
\chardef\mbariton=\hex4D
\chardef\mtenor=\hex4C
\chardef\malt=\hex4B
\chardef\mmezzosopran=\hex4E
\chardef\msopran=\hex4E
\chardef\mC=\hex53                          %Taktangaben
\chardef\allabreve=\hex52
\chardef\mCreverse=\hex54
%       **************************************************              %
%       *    Registerdefinitionen                        *              %
%       **************************************************              %
%1.Hilfsregister
\newbox\hb@i                   % Hilfsbox
\newbox\hb@ii                  % Hilfsbox
\newbox\hb@iii                 % Hilfsbox
\newbox\hb@iv                  % Hilfsbox
\newdimen\hd@i                 % Hilfsdimension
\newdimen\hd@ii                % Hilfsdimension
\newdimen\hd@iii               % Hilfsdimension
\newcount\hc@i                 % Hilfscount
\newcount\hc@ii                % Hilfscount
\newskip\hs@i                  % Hilfsskip
\newskip\hs@ii                 % Hilfsskip
\newskip\hs@iii                % Hilfsskip
\newskip\hs@iv                 % Hilfsskip
\newskip\hs@v                  % Hilfsskip
\newskip\hs@vi                 % Hilfsskip
\newskip\hs@vii                % Hilfsskip
\newtoks\ht@i                  % Hilfstokenregister
%2. Boxes fuer Notenkonstruktionen
\newbox\notebox         %zum Setzen der Noten
\newbox\leftbox         %Akkordnoten links vom Notenhals
\newbox\rightbox        %Akkordnoten rechts vom Notenhals
\newbox\dotbox          %Wertpunkte fuer Akkorde
\newbox\akzentbox       %Akzente
\newbox\hunkbox         %Hunks
\newbox\h@nkbox         %Hunks im zweidimensionalen Satz
\newbox\legerbox        %Hilfslinien
\newbox\firstvoice      %erste Stimme bei Zweistimmiger Notation
\newbox\secondvoice     %zweite Stimme bei Zweistimmiger Notation
\newbox\placebox        %zum Setzen der Taktangabe
\newbox\neighborhood    %Box zum Speichern der Nachbarschaft
%3. Tokenregister
\newtoks\notename       %Noten- oder Pausenwertname
\newtoks\direction      %Richtung des Notenhalses up oder down
\newtoks\d@rection      %Richtung des Notenhalses (global)
\newtoks\cleftoks       %aktueller Notenschluessel
\newtoks\signtoks       %aktuelle  Vorzeichnung
\newtoks\canceltoks     %aktuelle  Aufloesung
\newtoks\slurtoks       %zur Bestimmung des Charactercodes fuer Bogen
\newtoks\ta             %fuer Listenverarbeitung ....
\newtoks\tb             % .... bei \rightappend
%4.Umgebungen
\newif\iffirst          %erste Zeile Zeilenanfang: Initialisierung von
                        %Notenschluessel, Tonart und Taktart
\newif\ifbeam           %Verbalkung
\newif\ifchord          %Akkord
\newif\ifleft           %Plazieren der Akkordnoten links vom Notenhals
\newif\ifstemup         %Notenhalsrichtung aufwaerts
\newif\ifgroup          %Initialisierung der Nachbarschaftslisten
\newif\iftwo            %zweistimmiger Notensatz
\groupfalse\chordfalse\leftfalse\beamfalse\groupfalse\twofalse
%5.Countregister
\newcount\dur@tion
%     \dur@tion           Notenwert
%          0                   1/1
%          1                   1/2
%          2                   1/4
%          3                   1/8
%          4                   1/16
%          5                   1/32
%          6                   1/64
%          7                   1/128
\newcount\pitch                % interne Tonhoehe
\newcount\pit@                 % interne Hilfstonhoehe
\newcount\oldpitch             % interne Tonhoehe
\global\oldpitch=0             % Anfangsbelegung
\newcount\maxpitch             % maximale interne Tonhoehe bei Akkord
\newcount\minpitch             % minimale interne Tonhoehe bei Akkord
\newcount\nn                   % Anzahl der Hilfslinien
\newcount\clefcount            % Parameter Verschieben der Vorzeichnung
                               % abhaengig von Notenschluessel
\newcount\accpitch             % Vozeichnungs Tonhoehe
 %Nachbarschaften: Balken- und Bogengruppen
\newcount\tieconst             % Konstante fuer Hoehe des Bogenstuecks
                               % fuer Haltebogen
\newcount\phraseconst          % konstantes Bogenstueck bei Phrasierungs-
                               % bogen
\newcount\n@a                  % Index 1.Element einer Gruppe
\newcount\n@i                  % Laufindex in der Gruppe
\newcount\n@e                  % Index letztes Element einer Gruppe
\newcount\N                    % Kardinalitaet der Nachbarschaft
\newcount\m@i                  % Listenindex
\newcount\m@ii                 % Listenindex
\newcount\L@                   % Laenge des Balkens in 0.5pt
\newcount\l@                   % zur Zusammensetzung des Balkens
\newcount\m@a\newcount\m@e     % Anfangs- und Endindex der Elementliste
                               % die durch einen Balken verbunden werden
                               % sollen
\newcount\P@i                  %lok. pitch, der in endpoint benutzt wird
\newcount\P@a                  %Anfangspitch
\newcount\P@e                  %Endpitch
\newcount\beamrow              %Korrektur von vpos bei mehrfachverb.
\newcount\S                    % Steigung
\newcount\S@                   % Absolutbetrag der Steigung
\newcount\slurwidth            % Ganzzahlige Breite eines Bogens in
                               % Einheiten von \nhw
\newcount\V@int                % Ganzzahlige Hoehe  eines Bogens in
                               % Einheiten von 1/2\nhh
\newcount\CODE                 % Charcode Steigung von Balken
\newcount\flaga                % Werte 0,1,2  Bogenanfang
\newcount\flagb                % Werte 0,1,2  Bogenende
\newcount\flagc                % Balkensteigung = 0           ja/nein
%6.Dimensionsregister
%Konstanten
\newdimen\linethickness        % Dicke einer Notenlinie
\newdimen\nhh                  % Linienabstand, noteheadheight
\newdimen\nhw                  % Notenkopfbreite, noteheadwidth
\newdimen\seminhh              % halber Linienabstand   = 1/2\nhh
\newdimen\seminhw              % halbe  Notenkopfbreite = 1/2\nhw
\newdimen\twonhh               % = 2\nhh
\newdimen\I@@                  % = 100pt
\newdimen\stemwidth            % = 2\linethickness
\newdimen\beamthickness        % = 0.6 \nhh
\newdimen\staffheight          % = 4\nhh + \linehight
\newdimen\textline             % = \staffheigth, Abstand Schriftlinie --
                               % Grundlinie bei Textunterlage
\newdimen\linekern             % \nhh - \linethickness,kern zw.den Zeilen
\newdimen\Linekern             % \nhh -2\linethickness,kern zw.den Zeilen
                               % bei Hilfslinien
\newdimen\dotwd                % Breite eines Verlaengerungspunktes
\newdimen\smkern               % kleiner Kern zur Korrektur vor und
                               % nach Notenkoepfen (Hilfslinien)
%Parameter
\newdimen\yshift               % dimen!, um die die Vorzeichen verschoben
                               % werden in Y-Richtung!
\newdimen\nyshift              % dimen!, um die die NOTENbox   verschoben
                               % wird in Y-Richtung!
\newdimen\lyshift              % dimen!, um die die LEGERbox   verschoben
                               % wird in Y-Richtung!
\newdimen\akzent@pos           %vertikale Positionierung eines
                               %Artikulationszeichens
 %Nachbarschaften: Balken- und Bogengruppen
\newdimen\s@a                  %Anfangstemlength
\newdimen\s@e                  %Endstemlength
\newdimen\minsl                %untere Grenze f. Stemverkuerzung
\newdimen\R@i                  % rel. Hoehe des Notenkopfes pitch*seminhh
\newdimen\E@a                  % Endpunkt des Notenhalses Anfangsnote
%                                pitch*seminhh +(-)stemlength
\newdimen\R@a                  % rel. Hoehe des Notenkopfes pitch*seminhh
\newdimen\E@e                  % Endpunkt des Notenhalses Endnote
%                                pitch*seminhh +(-)stemlength
\newdimen\R@e                   % relative Hoehe des Notenkopfes
\newdimen\s@i                   %lok. stemlength, in endpoint
\newdimen\Abs                   %Absoluter Abstand zwischen 2 Endpunkten
\newdimen\corr                  %Korrekturwert fuer 2. Stem
\newdimen\sl@c                  %4.Korrekturwert fuer Stemlaengen
\newdimen\EP@                  %Endpunkt des ersten Stems einer Notengr.
\newdimen\EP@i                 %Endpunkt des Stems innerhalb einer Gruppe
\newdimen\E@l                  % Unterer Startpunkt fuer Bogenansatz
\newdimen\E@u                  % oberer Startpunkt fuer Bogenansatz
\newdimen\H@e                  % horizontaler Abstand zwischen zwei Noten
\newdimen\H@a                  % Korrekturwert zur Berechnung von H@e
\newdimen\H@a@cor              % Korrekturwert zur Berechnung der Laenge
                               % Balkens oder Bogens (bzgl. H@list)
\newdimen\H@e@cor              % Korrekturwert zur Berechnung der Laenge
                               % Balkens oder Bogens (bzgl. H@list)
\newdimen\limit                %\limit = 0.45\H@e=Grenzwert
\newdimen\V@                   %vertikaler Abstand zwischen zwei Noten
\newdimen\gradfactor           %= 0.005\S\p@
\newdimen\SHIFT
\newdimen\slurcor              % horizontal Kern fuer Bogenpositionierung
\newdimen\H@m@a                % Horizontaler Abschnitt von m@a
\newdimen\L@a                  % Balkenlaenge
\newdimen\V@a                  % vertikale Position des Balkens
\newdimen\stemlength           % Laenge des Notenhalses
\newdimen\linelength           % Laenge der Notenlinien
%Textunterlage
\newdimen\overtext             % fuer Textueberlage
\newdimen\undertext            % fuer Textunterlage
%6. Skipregister
% Ausschlussparamter
\newskip \NOTEskip             % Glue nach ganzer Note
\newskip \Noteskip             % Glue nach halber Note
\newskip \noteskip             % Glue nach 1/4    Note
\newskip \notEskip             % Glue nach 1/8    Note
\newskip \noTEskip             % Glue nach 1/16   Note
\newskip \nOTEskip             % Glue nach 1/32   Note
\newskip \nOteskip             % Glue nach 1/64   Note
\newskip \nOtEskip             % Glue nach 1/128  Note
\newskip \ruleskip             % Glue nach Rules
\newdimen\hunkskip             % Glue fuer Hunks
\newskip\oldskip               % aktueller \spaceskip vor Nachbarschaft
%       **************************************************              %
%       *    Registerinitialisierungen                   *              %
%       **************************************************              %
\beamfont \beamthickness = 1ex
\music    \nhh           = 1ex  \nhw     = 1em
          \seminhh  = 0.5\nhh   \seminhw = 0.5\nhw
          \twonhh   = 2 \nhh
\I@@     = 100 pt
\linethickness = 0.15pt
\stemwidth     = 2\linethickness
\staffheight   = 4 \nhh \advance\staffheight by \linethickness
\linekern      =   \nhh \advance\linekern    by-\linethickness
\Linekern      =   \nhh \advance\Linekern    by-2\linethickness
\overtext  =\staffheight \advance\overtext by\nhh
\def\u@text{\relax}\def\l@text{\relax}
\textline =\staffheight
\undertext =\textline
\tieconst = 4 \phraseconst = 2
\def\up@{up}\def\down@{down}
%       **************************************************              %
%       *    Punktierung                                 *              %
%       **************************************************              %
%1.Ausschluss-schemata
\let\sk=\spaceskip
%\ruleskip  = \seminhw plus \seminhw minus 0.5\seminhw
\ruleskip  = \nhw plus \seminhw minus \seminhw
\smkern = 0.2\nhw \relax
\def\hsmall{%hader
\Noteskip 3\nhw plus 2\seminhw minus 2\seminhw
\NOTEskip = \Noteskip
\noteskip 2\nhw plus 1.5\seminhw  minus 1.5\seminhw
\notEskip 1\nhw plus \seminhw  minus \seminhw
\noTEskip \z@ plus 0.5\seminhw  minus \z@
\nOTEskip=\noTEskip \nOteskip=\noTEskip \nOtEskip=\noTEskip
\hunkskip \z@\relax}
\def\small{%
\Noteskip 3.5\nhw plus 1.8\seminhw minus 1.8\seminhw
\NOTEskip = \Noteskip
\noteskip 2.5\nhw plus 1.4\seminhw  minus 1.4\seminhw
\notEskip 1.5\nhw plus \seminhw  minus \seminhw
\noTEskip \seminhw plus 0.6\seminhw  minus 0.6\seminhw
\nOTEskip=\noTEskip \nOteskip=\noTEskip \nOtEskip=\noTEskip
\hunkskip \z@ \relax}
\def\universal{%
\Noteskip 4\nhw plus 1.6\nhw minus 1.6\nhw
\NOTEskip = \Noteskip
\noteskip 3\nhw plus 1.3\nhw  minus 1.3\nhw
\notEskip 2\nhw plus \nhw  minus \nhw
\noTEskip \nhw plus 0.6\nhw  minus 0.6\nhw
\nOTEskip=\noTEskip \nOteskip=\noTEskip \nOtEskip=\noTEskip
\hunkskip \z@ \relax}
\def\wide{%
\Noteskip 4\nhw plus 1.42\nhw minus 1.42\nhw
\NOTEskip = \Noteskip
\noteskip 3.5\nhw plus 1.28\nhw  minus 1.28\nhw
\notEskip 2.5\nhw plus \nhw  minus \nhw
\noTEskip 1.5\nhw plus 0.9\nhw  minus 0.9\nhw
\nOTEskip=\noTEskip \nOteskip=\noTEskip \nOtEskip=\noTEskip
\hunkskip \z@ \relax}
\def\loose{%
\Noteskip 5\nhw plus 1.5\nhw minus 1.5\nhw
\NOTEskip = \Noteskip
\noteskip 4\nhw plus 1.25\nhw  minus 1.25\nhw
\notEskip 3\nhw plus \nhw  minus \nhw
\noTEskip 2\nhw plus 0.75\nhw  minus 0.75\nhw
\nOTEskip=\noTEskip \nOteskip=\noTEskip \nOtEskip=\noTEskip
\hunkskip \z@\relax}
%1.Glue-Makros
\def\hunkglue{\hunkskip=\sk\relax\advance \hunkskip by -\wd\hunkbox
  \ifdim\hunkskip>\z@ \hunkskip=\wd\hunkbox\relax
% \else \hunkskip=\sk \advance\hunkskip-\seminhw\relax \fi}%schm 10.11.87
  \else \hunkskip=\sk                           \relax \fi}%schm 10.11.87
%Glue vor einer Rule (Taktstrich etc.)
\def\gluebrule{\hunkglue\nobreak\ \hskip-\hunkskip\box\hunkbox%
 \u@text\l@text\nobreak}
%Glue vor einer Taktangabe
\def\gluebmeter{\hunkglue\kern\seminhw\nobreak\box\hunkbox%
 \u@text\l@text\nobreak}
%Glue nach einer Rule (Taktstrich etc.)
\def\gluearule{\-\global\sk\ruleskip}
\def\set@rulesk{\global\sk\ruleskip}
%Glue vor einer Note
\def\sethunkglue{\hunkglue\nobreak\ \hskip-\hunkskip}
%Umbruchm"oglichkeit im Taktinnern
\def\+{\ \-\global\sk=\z@skip}
%       **************************************************              %
%       *    Hilfsfunktionen                             *              %
%       **************************************************              %
%entspricht dem von Knuth angegebenen Makro der \loop-Schleife, jedoch
%wird die Schleife bei \else wiederholt.
\def\looop#1\leave{\def\boddy{#1}\iiterate}
\def\iiterate{\boddy \let\nexxt\relax \else\let\nexxt\iiterate\fi \nexxt}
\let\leave=\fi % this makes \looop...\if...\leave skippable
% entspricht |#1 - #2|
\def\distance#1#2{\relax\ifdim#1>#2\relax\Abs=#1\advance\Abs by-#2\relax
                    \else\Abs=#2\advance\Abs by-#1\relax\fi}
%Notensetzen, z.B. Ineinanderschieben von Hilfslinienbox und Notenbox
%Breite des Boxinhalts wird ignoriert
\def\cbox#1{\hbox to \z@{\hss#1\hss}} % zentriert den Inhalt der Box
\def\hboxnhw#1#2{\hbox to \nhw{\hss\cbox{#1}\cbox{#2}\hss}}
                                      %Box der Breite eines Notenkopfes
\def\ignore#1{\hbox to \z@{\hss#1}}   % entspricht \llap in PLAIN
                            %z.B. fuer Oktavierung des Versetzungszeichen
%Rules fuer Phrasierungen
\def\r@lef@ill#1{\leaders\hrule height \z@ depth #1 \relax\hfill}
\def\r@lef@ll#1{\leaders\hrule height #1 depth \z@ \relax\hfill}
%zum Setzen der Phrasierungsboegen
\def\vt@@#1{\vtop to\z@{\offinterlineskip\null\hbox{#1}\vss}}
\def\vb@@#1{\vbox to\z@{\offinterlineskip\vss\hbox{#1}\null}}
% Korrekturfunktionen fuer Berechnung der Halslaenge
\def\corra#1{\relax \ifdim\Abs>\seminhh
                      \ifdim#1>\minsl \advance #1 by -\seminhh\fi
                    \fi}
%1. Verkuerzung, des hoeherliegenden(stemup) bzw. tieferliegenden
%(stemdown) Notenhalses um \seminhh falls moeglich(Abstand>\seminhh)
\def\corrb#1{\advance #1 by \corr}
%2. Verlaengerung des anderen Notenhalses um Hoechstabstand zu
%erreichen
\def\corrc#1{\advance #1 by \seminhh}
%3. p1^=p2 Abstand =0 : Verkuerzung des Notenhalses der tiefer (hoeher)
%gelegenen Note um \seminhh
%
%Funktionen die die vertikalen Abstaende
%der Bogenendpunkte von der Grundlinie berechnen
%dabei ist E@u der Ansatz des oberhalb verlaufenden Bogens
%und       E@l der Ansatz des unterhalb verlaufenden Bogens
%Punkte fuer Akkorde (oberhalb/unterhalb)
\def\chordupperstartpoints{%
  \global\E@u\maxpitch\seminhh \global\advance\E@u\nhh
  \ifdim\E@u<\z@ \global\advance \E@u-\I@@
           \else \global\advance \E@u \I@@ \fi}
\def\chordlowerstartpoints{%
  \global\E@l\minpitch\seminhh \global\advance\E@l-\nhh
  \ifdim\E@l<\z@ \global\advance \E@l-\I@@
           \else \global\advance \E@l \I@@ \fi}
\def\whatisnewstartpoint{%
    \ifdim\E@a=\z@ \global\E@a = 1sp \fi
    \ifstemup\relax
          \expandafter\exchange\the\E@a\in\uslurlist\at \n@a
        \else \relax
          \expandafter\exchange\the\E@a\in\lslurlist\at \n@a
        \fi
     }
%neue Ansatzwerte E@l E@u berechnen und an \n@i-te Stelle  der
%    \lslurlist bzw. \uslurlist setzen (NACH Balkenberechnung)
\def\whatarenewstartpoints{%
    \ifdim\EP@i=\z@ \global\EP@i = 1sp \fi
    \ifstemup\relax
          \expandafter\exchange\the\EP@i\in\uslurlist\at \n@i
        \else \relax
          \expandafter\exchange\the\EP@i\in\lslurlist\at \n@i
        \fi
    }
% belegt #2 mit dem Endpunkt des Notenhalses des #1-ten Elementes der
% Notengruppe
\def\getendpoint#1#2{\relax\hc@i=#1%
    \lokalassign\hc@i\of\H@list\to\hd@i
    \lokalassign\hc@i\of\H@corlist\to\hd@ii
    \select\hc@i\of\dir@list\to\dir@i
    \ifx\dir@i\down@ \advance\hd@ii\nhw \fi
    \advance\hd@i by-\hd@ii
    \advance\hd@i by-\H@a  \multiply\hd@i by\S \hd@i=0.01 \hd@i
    \advance\hd@i by\EP@        %EP@ = Endpunkt @ n@a
    \global#2=\hd@i}
%
% Weist \S die im Balken- / Bogenfont vorhandene  Steigung zu
\def\addC{\global\advance\CODE by }
\def\assignS{%
    \ifnum\S<0 \S@=-\S \else \S@=\S \fi
    \ifnum\S@< 1 \S@=0          \else
    \ifnum\S@< 8 \S@=5   \else
    \ifnum\S@<12 \S@=10  \else
    \ifnum\S@<17 \S@=15  \else
    \ifnum\S@<22 \S@=20  \else
    \ifnum\S@<27 \S@=25  \else
    \ifnum\S@<32 \S@=30  \else
    \ifnum\S@<40 \S@=35  \else \S@=45\fi\fi\fi\fi\fi\fi\fi\fi
    \ifnum\S<0\global\S=-\S@ \else\global\S=\S@\fi}
% Berechnet den Code der Steigung  im Bogenfont
\def\assignCODE{%
    \ifnum\S< 0 \global\CODE = 64 \S@ = -\S \else \S@ = \S
                                             \global\CODE = 0 \fi
    \ifnum\S@< 6  \addC 0 \else
    \ifnum\S@<11  \addC 8 \else
    \ifnum\S@<16  \addC16 \else
    \ifnum\S@<21  \addC24 \else
    \ifnum\S@<26  \addC32 \else
    \ifnum\S@<31  \addC40 \else
    \ifnum\S@<36  \addC48 \else
    \ifnum\S@<46  \addC56 \fi\fi\fi\fi\fi\fi\fi\fi}
%Im Moment benutzte Steigungen
%5 10 15 20 25 30 35 45
\def\assignuslurchar{\hc@i=\slurwidth
  \ifnum\V@int= 0 %\V@=\z@
  \ifnum\hc@i>1 \advance\hc@i-2 \else \advance\hc@i-1 \fi
     \edef\slurchar{\the\hc@i}%
  \else
    \ifnum\slurwidth<4 \multiply\hc@i\slurwidth
      \advance\hc@i-\slurwidth\advance\hc@i\V@int\advance\hc@i-1
      \multiply\hc@i8\edef\slurchar{\the\hc@i}%
    \else\advance\hc@i-2 \hc@ii=\V@int\advance\hc@ii-1
     \ifodd\hc@i\divide\hc@i2
     \edef\slurchar{\noexpand'1\the\hc@ii\the\hc@i}%
     \else \divide\hc@i 2 \edef\slurchar{\noexpand'\the\hc@ii\the\hc@i}\fi
    \fi
  \fi\slurtoks=\expandafter{\slurchar}}
\def\assignlslurchar{\hc@i=\slurwidth
  \ifnum\V@int= 0 %\V=\z@
    \ifnum\hc@i>1\advance\hc@i14 \else\advance\hc@i15 \fi
    \edef\slurchar{\the\hc@i}%
  \else
    \ifnum\slurwidth<4 \multiply\hc@i by \slurwidth
      \advance\hc@i-\slurwidth\advance\hc@i\V@int\advance\hc@i-1
      \multiply\hc@i8\edef\slurchar{\noexpand\the\hc@i}%
    \else\advance\hc@i-2\hc@ii=\V@int\advance\hc@ii-1
     \ifodd\hc@i\divide\hc@i2
     \edef\slurchar{\noexpand'1\the\hc@ii\the\hc@i}%
     \else \divide\hc@i2 \edef\slurchar{\noexpand'\the\hc@ii\the\hc@i}\fi
    \fi
  \fi\slurtoks=\expandafter{\slurchar}}
%       **************************************************              %
%       *  Macros zur  Listenerzeugung und Verarbeitung  *              %
%       **************************************************              %
%\newtoks\ta\newtoks\tb
%Haengt an Liste #2 ein neues Element mit Inhalt #1 an
\long\def\rightappend#1\to#2{\ta={\\{#1}}\tb=\expandafter{#2}%
  \edef#2{\the\tb\the\ta}}
%Weist dem Register (Counter oder Dimension oder Skip ) den Wert des
%#1-ten Elementes der Liste #2 zu (lokal bzw.  global)
\def\assign#1\of#2\to#3{\m@i=#1\relax
  \long\def\\##1{\advance\m@i-1\relax             % globale Zuweisung
  \ifnum\m@i=0\relax\global#3=##1\fi}#2\relax}
%
\def\lokalassign#1\of#2\to#3{\m@i=#1\relax     % lokale Zuweisung
 \long\def\\##1{\advance\m@i-1\relax\ifnum\m@i=0\relax#3=##1\fi}#2\relax}
%
%Definiert die Kontrollsequenz #3 als den Inhalt des
%#1-ten Elementes der Liste #2 zu (lokal).
\def\select#1\of#2\to#3{\m@i=#1\relax     % lokale Zuweisung
 \long\def\\##1{\advance\m@i-1\relax\ifnum\m@i=0\relax\def#3{##1}\relax
 \fi}#2\relax}
%
%setzt #1=Anzahl der Elemente einer Liste
\def\cardinality#1\to#2{#2=0\long\def\\##1{\advance#2 by 1 }#1}
%
%Tauscht in Liste #2 den Inhalt des #3-ten Elementes gegen #1 aus.
\def\exchange#1\in#2\at#3{\m@i=#3\long\def\\##1{\advance\m@i-1
  \ifnum\m@i=0 \rightappend{#1}\to\helplist
        \else\rightappend##1\to\helplist\fi}#2%
  \let\hhelplist=\helplist\global\let#2=\hhelplist\let\helplist=\empty
  }
%abhaengig von der Notenkonstellation Abfrage auf  \S=0
\def\gradz@\in#1\with#2#3\from#4\to#5{\m@i=#4\m@ii=#5\relax
  \advance\m@i 1 \advance\m@ii -1
  \long\def\\##1{\advance\m@i-1\advance\m@ii-1
  \ifnum\m@i<1 \ifnum\m@ii>-1 \hc@i=##1\relax
  \ifnum\hc@i#2#3 \relax \else
   \global\flagc=0 \ifnum\hc@i#2 4 \relax \else \global\minsl=\twonhh\fi
  \fi\fi\fi}#1}
%
%addiert den Wert von \sl@c zum Wert in Liste #1 von Element #2 bis #3
\def\addslc\in#1\from#2\to#3{\m@i=#2\m@ii=#3\long\def\\##1{\advance\m@i-1
  \advance\m@ii-1
  \ifnum\m@i<1 \ifnum\m@ii>-1 \hd@i=##1 \advance\hd@i\sl@c
  \expandafter\rightappend\the\hd@i\to\helplist\else
  \rightappend##1\to\helplist\fi\else\rightappend##1\to\helplist\fi}#1%
  \let\hhelplist=\helplist\global\let#1=\hhelplist\let\helplist=\empty}
%
%wechselt die Richtungen der Notenh"alse in der \dir@list vom
%#2-ten  bis zum #3-ten Element gegen #1 aus.
\def\putdir#1\from#2\to#3{\m@i=#2\m@ii=#3\def\helplist{}%
\long\def\\##1{\advance\m@i-1
  \advance\m@ii-1
  \ifnum\m@i<1 \ifnum\m@ii>-1
  \expandafter\rightappend#1\to\helplist\else
  \rightappend##1\to\helplist\fi\else\rightappend##1\to\helplist\fi}%
  \dir@list%
  \let\hhelplist=\helplist\global\let\dir@list
    =\hhelplist\let\helplist=\empty}
%
%Ersetzt den Inhalt des #4-ten Elementes der Liste #3 durch
%#1 Inhalt #2
\def\additem#1#2\in#3\at#4{\m@i=#4\long\def\\##1{\advance\m@i-1 \relax
  \ifnum\m@i=0\ht@i{##1}\edef\h@@@{#1\the\ht@i#2}\expandafter
  \rightappend\h@@@\to\helplist\else\rightappend##1\to\helplist\fi}#3%
  \let\hhelplist=\helplist\global\let#3=\hhelplist\let\helplist=\empty
  }
%       **************************************************              %
%       *    Notenlinien und Hilfslinien                 *              %
%       **************************************************              %
\def\nobaselines{\baselineskip=\z@ \lineskip=\z@ \lineskiplimit=\z@}
%\baselinesa und \baselinesb = zwei Verschiedene M"oglichkeiten f"ur
% die Interline Glue Wahl.
\def\baselinesa{%
  \baselineskip=2\staffheight plus \staffheight minus  .5\staffheight
  \lineskip=0.5\staffheight plus \staffheight minus  .5\staffheight
  \lineskiplimit=0.5\staffheight}
\def\baselinesb{%
  \baselineskip=3\staffheight plus \staffheight minus  .5\staffheight
  \lineskip=0.5\staffheight plus \staffheight minus  .5\staffheight
  \lineskiplimit=0.5\staffheight}
%Notenlinie
\def\hr{\hrule height\linethickness depth \z@ width \linelength}
%Notenlinie und Zwischenraum
\def\hrv{\hr\kern\linekern}
%Hilfslinie
\def\HRULE{\hrule height\linethickness depth\linethickness width \twonhh}
%Hilfslinie und Zwischenraum fuer Hilfslinien unterhalb des Systems
\def\KHR{\kern\Linekern\HRULE}
%Hilfslinie und Zwischenraum fuer Hilfslinien oberhalb des Systems
\def\HRK{\HRULE\kern\Linekern}
%Liniensystem
\def\lines{\linelength=\hsize
  \hbox to \z@{\vbox{\hrv\hrv\hrv\hrv\hr}\hss}}
%Liniensystem fuer erste Zeile unter Ber"ucksichtigung des \parindent
\def\firstlines{\hbox to \z@{\linelength=\hsize\advance\linelength by
  -\parindent \vbox{\hrv\hrv\hrv\hrv\hr}\hss}}
%
%macros, die die Hilfslinienbox herstellen zur zugeho"rigen Note
%\nn = Anzahl der ben"otigten Hilfslinien
%formel: \pitch<0 \nn=-\pitch/2, \pitch>8 \nn=(\pitch-8)/2, \nn=0 sonst
\def\legerlines{\leger@cal\ifnum\nn=0 \global\setbox\legerbox\null%
  \else\relax\ifnum\pitch<0 \global\setbox\legerbox=\vtop{\leger@line}%
  \else\global\setbox\legerbox=\vbox{\leger@line}\fi\fi}
\def\leger@line{\begingroup \loop \ifnum \nn>0 \aftergroup \HR
  \advance\nn-1 \repeat \endgroup}
\def\leger@cal{\ifnum\pitch<-1 \nn =-\pitch \lyshift =\z@ \let\HR=\KHR
  \else\relax\ifnum\pitch<10 \nn = 0      \lyshift =\z@
  \else\nn=\pitch\advance\nn-8 \lyshift=4\nhh%\staffheight-\linethickness
  \let\HR=\HRK
  \fi\fi \divide \nn by 2 }
%Hilfslinien bei Akkorden
\def\chordlegerlines{%
  \ifleft
  \global\setbox\leftbox=
  \hboxnhw{$\raise\lyshift\box\legerbox$}{\box\leftbox}%
  \else
  \global\setbox\rightbox=
  \hboxnhw{$\raise\lyshift\box\legerbox$}{\box\rightbox}%
  \fi}
%       **************************************************              %
%       *    Taktstriche u. a".                          *              %
%       **************************************************              %
%Striche
%Atemzeichen
\def\caesurasign{\vrule height4.5\nhh depth-3.5\nhh width3\linethickness}
%schmaler Strich: Taktstrich
\def\thinvrule{\vrule height\staffheight depth \z@ width2 \linethickness}
%dicker Strich:
\def\thickvrule{\vrule height\staffheight depth \z@ width 0.5\nhh}
%Doppelpunkt fuer Wiederholungszeichen:
\def\doppelpunkt{%
  \hbox{\vrule height 2.6\nhh depth-2.4\nhh width 0.2\nhh\kern-0.2\nhh
  \vrule height 1.6\nhh depth-1.4\nhh width 0.2\nhh}}
%zu Taktstrichen zusammengesetzte Striche:
\def\doppelstrich{\thinvrule\kern.25\nhw\thinvrule}
\def\schlussstrich{\thinvrule\kern\seminhw\thickvrule}
%wiederholungszeichen mit Doppelpunkt links
\def\repstrich{\doppelpunkt\kern\seminhw
  \thinvrule\kern\seminhw\thickvrule}
%wiederholungszeichen mit Doppelpunkt rechts
\def\revrepstrich{\thickvrule\kern\seminhw\thinvrule\kern\seminhw
  \doppelpunkt}
%
%taktstriche mit Glue
\def\|{\gluebrule\thinvrule\gluearule}
\def\={\gluebrule\schlussstrich\gluearule\null}
\def\doublebarline{\gluebrule\doppelstrich\gluearule\null}
\def\rightrepeat{\gluebrule\repstrich\gluearule\null}
\def\leftrepeat{\gluebrule\thinvrule\-\revrepstrich\nobreak}
\def\leftrightrepeat{\gluebrule\repstrich\-%
  \kern-\seminhw\revrepstrich\global\sk\ruleskip}
%
% Makro fuer Orientierungszeichen
\def\boxed#1{\setbox0=\hbox{$\displaystyle{#1}$}\hbox{\lower.4pt\hbox{\lower
   3pt\hbox{\lower 1\dp0\hbox{\vbox{\hrule height .4pt \hbox{\vrule width
   .4pt \hskip 3pt\vbox{\vskip 3pt\box0\vskip3pt}\hskip 3pt \vrule width
      .4pt}\hrule height .4pt}}}}}}
%Kaesten
\def\1#1\2#2\*{\def\f@rsttime{#1*}\def\s@condtime{#2*}%
  \expandafter\evalfirst\f@rsttime!!!%
  \ifx\interim\empty \nobreak\box@@@\else
    \looop\expandafter\evalinterim\interim!!!%
       \ifx\interim\empty\relax\nobreak\box@@@\leave\fi
  \expandafter\evalsecond\s@condtime!!!%
  \ifx\interim\empty \relax\else
    \looop\expandafter\evalinterim\interim!!!%
       \ifx\interim\empty\relax\leave\fi
}
\def\evalfirst#1*#2!!!{\def\interim{#2}\penalty-1000\box@{#1}}
\def\evalinterim#1*#2!!!{\def\interim{#2}\penalty-1000\box@@{#1}}
\def\evalsecond#1*#2!!!{\def\interim{#2}\penalty-1000\box@@@@{#1}}
\def\box@#1{\let\setlines\relax\gluebrule
  \vbox{\halign{##\cr\repbox{1.}\r@lef@ll{\linethickness}\cr
                \noalign{\nointerlineskip}%
                \repstrut\thinvrule\gluearule#1\cr}}%
  \let\setlines=\s@tlines}
\def\box@@#1{\let\setlines\relax
\vbox{\halign{##\cr\r@lef@ll{\linethickness}\cr
                \noalign{\nointerlineskip}\repstrut#1\cr}}%
  \let\setlines=\s@tlines}
\def\box@@@{\vbox{\halign{##\cr\r@lef@ll{\linethickness}\repbox{}\cr
                \noalign{\nointerlineskip}%
          \repstrut\setgluebrule\doppelpunkt\kern\seminhw\thinvrule\cr}}}
\def\box@@@@#1{\let\setlines\relax\vbox{\tabskip\seminhw
               \halign{##\tabskip\z@\cr
                \repbox{2.}\r@lef@ll{\linethickness}\cr
                \noalign{\nointerlineskip}%
                \repstrut\thickvrule\setgluearule#1\cr}}%
  \let\setlines=\s@tlines}
\def\repbox#1{\vtop to\z@{\null\nointerlineskip
  \hbox to \z@{\vrule height10pt depth -\nhh width\stemwidth{#1}\hss
  }\vss}}
\def\repstrut{\vrule width \z@ height 7\nhh depth\z@}
\def\overstrut{\vrule width \z@ height 6\nhh depth\z@}
%\let\overstrut=\repstrut
%
%       **************************************************              %
%       *    SETZEN der VERSETZUNGSZEICHEN               *              %
%       **************************************************              %
%Setzen der Versetzungszeichen vor Noten:
\def\setvorz#1{\relax\setbox \hunkbox=\hbox{\unhbox\hunkbox%
  \global\advance\oldpitch-7 \yshift=\pitch\seminhh
  \ifnum\oldpitch=\pitch$\raise\yshift\hbox to \z@{\hss\music#1}$\else
  $\raise\yshift\hbox{\music#1}$\fi}\global\oldpitch=\pitch}
%Setzen der Versetzungszeichen in der Vorzeichnung:
\def\setsign#1#2{\hc@i=#1  \advance\hc@i by \clefcount
  \ifnum\hc@i<-1 \advance\hc@i7 \else\ifnum\hc@i>9 \advance\hc@i-7 \fi\fi
  $\raise\hc@i\seminhh\hbox{\music#2}$}
%Atemzeichen
\def\caesura{\setbox\hunkbox=\hbox{\unhbox\hunkbox%
  \kern\p@\caesurasign\kern\nhh}}
%       **************************************************              %
%       *    Versetzungszeichen - Eingabemacros          *              %
%       **************************************************              %
%\x=\sharp Kreuz
%\xx= Doppel-Kreuz
%\n=\natural Aufloesungszeichen
%\b=\flat
%\bb=Doppel-Be
\def\x#1{\global\pitch=#1\relax\setvorz{\msharp}}
\def\xx#1{\global\pitch=#1\relax\setvorz{\mdoublesharp}}
\def\n#1{\global\pitch=#1\relax\setvorz{\mnatural}}
\def\b#1{\global\pitch=#1\relax\setvorz{\mflat}}
\def\bb#1{\global\pitch=#1\relax\setvorz{\mdoubleflat}}
%Versetzungszeichen in der Vorzeichnung
\def\b@#1{\setsign{#1}{\mflat}}
\def\x@#1{\setsign{#1}{\msharp}}
\def\n@#1{\setsign{#1}{\mnatural}}
%       **************************************************              %
%       *    NOTEN - Eingabemacros                       *              %
%       **************************************************              %
%ganze
\def\g#1{\global\pitch=#1\setnotes{NOTE}}
%halbe
\def\h#1{\global\pitch=#1\setnotes{Note}}
%viertel
\def\v#1{\global\pitch=#1\setnotes{note}}
%achtel
\def\a#1{\global\pitch=#1\setnotes{notE}}
%sechzehntel
\def\s#1{\global\pitch=#1\setnotes{noTE}}
%zweiunddreissigstel
\def\z#1{\global\pitch=#1\setnotes{nOTE}}
%vierundsechzigstel
\def\d#1{\global\pitch=#1\setnotes{nOte}}
%hundertachtundzwanzigstel
\def\o#1{\global\pitch=#1\setnotes{nOtE}}
%       **************************************************              %
%       *    PAUSEN  - Eingabemacros                     *              %
%       **************************************************              %
%Pausen erhalten \pitch = 5 zum Setzen der Wertpunkte im 3. Zwischenraum
\def\sethunks{\sethunkglue\box\hunkbox\u@text\l@text}
%ganze
\def\pg{\ifdim\spaceskip=\ruleskip \global\sk=\NOTEskip\fi
  \sethunks\PAUSE\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk=\NOTEskip}
%zwei Pausentakte
\def\dpd{\ifdim\spaceskip=\ruleskip \global\sk=\NOTEskip\fi
  \sethunks{\music
  \doublerest}\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk=\NOTEskip}
%drei Pausentakte
\def\dpg{\ifdim\spaceskip=\ruleskip \global\sk=\NOTEskip\fi
  \sethunks{\music\doublerest}\hskip\nhh
  \PAUSE\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk=\NOTEskip}
%vier Pausentakte
\def\dpdd{\ifdim\spaceskip=\ruleskip \global\sk=\NOTEskip\fi
  \sethunks{\music\ddoublerest}%
  \global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk=\NOTEskip}
%halbe
\def\ph{\sethunks\Pause\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk\Noteskip}
%viertel
\def\pv{\sethunks\pause\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk\noteskip}
%achtel
\def\pa{\sethunks\pausE\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk\notEskip}
%sechzehntel
\def\ps{\sethunks\pauSE\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk\noTEskip}
%zweiunddreissigstel
\def\pz{\sethunks\paUSE\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk\nOTEskip}
%vierundsechzigstel
\def\pd{\sethunks\pAuse\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk\nOteskip}
%hundertachtundzwanzigstel
\def\po{\sethunks\pAusE\global\pitch=5\global\nyshift=\pitch\seminhh
  \nobreak\global\sk\nOtEskip}
%       **************************************************              %
%       *    Wertpunkte                                  *              %
%       **************************************************              %
%\dotwd wird in einer Notengruppe benoetigt zur Berechnung der Laenge
%des Balkens oder Bogens
\setbox0=\hbox to\seminhw{\rm\kern\p@.\hss}\dotwd=\wd0
%#1 gibt Anzahl der Punkte an.
%- Eingabemacro
\def\.#1{\relax\hc@i=#1\relax
  \ifchord\chordjoindots\else\relax\joindots%
                         \ifgroup\global\advance\H@a@cor by #1\dotwd \fi
  \fi}
\def\dotodd{\hbox to \seminhw{\rm\kern\p@.\hss}}%
%Verschieben der Wertpunkte von Noten auf einer Notenlinie in
%......den Zwischenraum oberhalb
\def\dot@up{\hbox{$\raise0.3\nhh
 \hbox to \seminhw{\rm\kern\p@.\hss}$}}
%......den Zwischenraum unterhalb der Notenlinie
\def\dot@down{\hbox{$\raise-0.5\nhh
 \hbox to \seminhw{\rm\kern\p@.\hss}$}}
%Normalfall: Verschiebung in den oberen Zwischenraum
\def\doteven{\dot@up}
%setzt #1 Punkte bei einzelnen Noten
\def\joindots{\ifodd\pitch\let\punkt\dotodd\else\let\punkt\doteven\fi
  $\raise\nyshift\hbox{%\kern\smkern
  \begingroup \loop \ifnum \hc@i>0 \aftergroup \punkt
  \advance\hc@i-1 \repeat \endgroup}$}
%Wertpukte   bei Akkorden
\def\chordjoindots{\global
  \setbox\dotbox\hboxnhw{\box\dotbox}{\joindots\unskip}}
%       **************************************************              %
%       *    Akkorde - Eingabemacros                     *              %
%       **************************************************              %
\def\lchord#1\endchord{%Initialisierung
  \global\maxpitch=-10000\global\minpitch=10000
  \sethunkglue\begingroup\chordtrue\lefttrue\stemuptrue
  \global\setbox\rightbox=\null\global\setbox\leftbox=\null%
  \global\setbox\dotbox\null%
  #1\endchord}
%
\def\rchord#1\endchord{%Initialisierung
  \global\maxpitch=-10000\global\minpitch=10000
  \sethunkglue\begingroup\chordtrue\leftfalse\stemupfalse
  \global\setbox\rightbox=\null%
  \global\setbox\leftbox=\null\global\setbox\dotbox\null%
  #1\endchord}
%       **************************************************              %
%       *    Konstruktion der Noten und Pausen           *              %
%       **************************************************              %
%Bestimmung der zu setzenden Noten und Bestimmung der Halsrichtung
\def\tunedef{\ifchord \relax
                    \gdef\tune{\csname\the\notename\endcsname}%
  \else\ifbeam \relax \else\stemdirectiondef\fi
  \gdef\tune{\csname\the\notename\the\direction\endcsname}%
  \ifgroup \global\d@rection\expandafter{\the\direction}\fi\fi}
\def\stemdirectiondef{%
  \ifnum\pitch<4 \stemuptrue  \direction={up}%
           \else \stemupfalse \direction={down}\fi}
%
\def\calstemlup#1{\global\dur@tion=#1\relax\stemupeval of \pitch}
\def\calstemldown#1{\global\dur@tion=#1\relax\stemdowneval of \pitch}
%
%ganze  noten \NOTEup=\NOTEdown
%
\def\NOTEup{\ifbeam\relax\else\global\stemlength=\z@\fi
  \global\dur@tion = 0 \hbox{\music\whole}}
\let\NOTEdown=\NOTEup
\def\NOTE{\hbox{\music\whole}\global\dur@tion = 0}
%
%Halbenoten, Hals aufwaerts , Hals abw"arts gestielt
%
\def\Note{\hbox{\music\half}\global\dur@tion = 1}
\def\Noteup{\ifbeam\relax\else\calstemlup1\fi
                   \hbox{\music\half \stemup}}
\def\Notedown{\ifbeam\relax\else\calstemldown1\fi
                     \hbox{\music\stemdown \half}}
%
%Viertelnoten, Hals aufwaerts , Hals abwaerts gestielt
%
\def\noteup{\ifbeam\relax\else\calstemlup2\fi
                          \hbox{\music\quart\stemup}}
\def\notedown{\ifbeam\relax\else\calstemldown2\fi
                          \hbox{\music\stemdown\quart}}
\def\note{\hbox{\music\quart}\global\dur@tion= 2}
%
%Achtelnoten, Hals aufwaerts , Hals abwaerts gestielt
%
\def\notE{\hbox{\music\quart}\global\dur@tion= 3}
\def\notEup{\ifbeam\relax\else\calstemlup3\fi
                          \hbox{\music\quart\flagup{\eighthup}}}
\def\notEdown{\ifbeam\relax\else\calstemldown3\fi
                          \hbox{\music\flagdown{\eighthdown}\quart}}
%
%Sechzehntelnoten, Hals aufwaerts , Hals abwaerts gestielt
%
\def\noTE{\hbox{\music\quart}\global\dur@tion= 4}
\def\noTEup{\ifbeam\relax\else\calstemlup4\fi
                   \hbox{\music\quart\flagup{\sixteenthup}}}
\def\noTEdown{\ifbeam\relax\else\calstemldown4\fi
                     \hbox{\music\flagdown{\sixteenthdown}\quart}}
%
%Zweiunddreissigstelnoten, Hals aufwaerts , Hals abwaerts gestielt
%
\def\nOTE{\hbox{\music\quart}\global\dur@tion= 5}
\def\nOTEup{\ifbeam\relax\else\calstemlup5\fi
                   \hbox{\music\quart\flagup{\thirtytwoup}}}
\def\nOTEdown{\ifbeam\relax\else\calstemldown5\fi
                     \hbox{\music\flagdown{\thirtytwodown}\quart}}
%
%Vierundsechzigstelnoten, Hals aufwaerts , Hals abwaerts gestielt
%
\def\nOte{\hbox{\music\quart}\global\dur@tion= 6}
\def\nOteup{\ifbeam\relax\else\calstemlup6\fi
                   \hbox{\music\quart\flagup{\sixtyfourup}}}
\def\nOtedown{\ifbeam\relax\else\calstemldown6\fi
                     \hbox{\music\flagdown{\sixtyfourdown}\quart}}
%
%Hundertachtundzwanzigstelnoten, Hals aufwaerts , Hals abwaerts gestielt
%
\def\nOtE{\hbox{\music\quart}\global\dur@tion= 7}
\def\nOtEup{\ifbeam\relax\else\calstemlup7\fi
                   \hbox{\music\quart\flagup{\hundredtwentyeightup}}}
\def\nOtEdown{\ifbeam\relax\else\calstemldown7\fi
                   \hbox{\music\flagdown{\hundredtwentyeightdown}\quart}}
%       P A U S E N
\def\PAUSE{{\music\wholerest}}
\def\Pause{{\music\halfrest}}
\def\pause{{\music\quartrest}}
\def\pausE{{\music\eighthrest}}
\def\pauSE{{\music\sixteenthrest}}
\def\pauSE{{\music\sixteenthrest}} % bis auf weiteres, da diese im
\def\paUSE{{\music\sixteenthrest}} %Zeichensatz noch nicht
\def\pAuse{{\music\sixteenthrest}} %vorhanden sind.
\def\pAusE{{\music\sixteenthrest}} %
%       **************************************************              %
%       *    Berechnung der Notenhalslaengen             *              %
%       **************************************************              %
\def\min@stemlength{\ifnum\dur@tion>2
    \hc@i= 3 \advance\hc@i by \dur@tion \hd@i= \hc@i\seminhh
   \ifdim\hd@i>\stemlength \global\stemlength=\hd@i\fi \fi}
%Hals nach oben
\def\stemupeval of #1{\pit@=#1\relax
  \ifnum\pit@<-3 \advance\pit@ by -4 \global\stemlength=-\pit@\seminhh
      \else\eval@up\fi\ifgroup\relax\else\min@stemlength\fi}
\def\eval@up{\ifnum \pit@<6 \global\stemlength=7\seminhh
      \else
      \ifnum\pit@<8 \advance\pit@ by-12 \global\stemlength=-\pit@\seminhh
        \else \global\stemlength=\twonhh
        \fi\fi}
%
\def\stemdowneval of #1{\pit@=#1\relax
  \ifnum\pit@>11 \advance\pit@ by -4 \global\stemlength=\pit@\seminhh
  \else \eval@down\fi\ifgroup\relax\else\min@stemlength\fi}
\def\eval@down{\ifnum \pit@ > 2 \global\stemlength=7\seminhh
  \else\ifnum\pit@ > 0 \advance\pit@ 4 \global\stemlength=\pit@\seminhh
  \else \global\stemlength=\twonhh
  \fi\fi}
%       **************************************************              %
%       *    Konstruktion der Notenhaelse                *              %
%       **************************************************              %
%Hals nach oben
\def\stemup{\vrule height \stemlength depth\z@ width\stemwidth}
%Hals nach unten
\def\stemdown{\vrule height\z@ depth\stemlength width\stemwidth
  \hskip-2\stemwidth}
%Hals nach unten mit Fahne
\def\flagdown#1{\stemdown\ifbeam\relax\else
 \vtop to\stemlength{\offinterlineskip\null\vss\hbox{\music#1}\null}\fi}
%Hals nach oben mit Fahne
\def\flagup#1{\stemup\ifbeam\relax\else
      \vbox to\stemlength{\offinterlineskip\hbox{\music#1}\vss\null}\fi}
%
%Bestimmung des Notenhalses im Akkord
%
\def\stemdef{%
  \ifstemup\edef\stem{\hbox{\ifcase\dur@tion \noexpand\relax
    \or\stemup \or\stemup \or\flagup{\eighthup}%
    \or\flagup{\sixteenthup}\or\flagup{\thirtytwoup}%
    \or\flagup{\sixtyfourup}\or\flagup{\hundredtwentyeightup}%
    \else\noexpand\relax\fi}}%
  \else\edef\stem{\hbox{\ifcase\dur@tion  \noexpand\relax
    \or\stemdown \or\stemdown  \or\flagdown{\eighthdown}%
    \or\flagdown{\thirtytwodown}\or\flagdown{\sixteenthdown}%
    \or\flagdown{\sixtyfourdown}\or\flagdown{\hundredtwentyeightdown}%
    \else\noexpand\relax \fi}}%
  \fi}
% Setzen des Notenhalses im Akkord
\def\setstem{\relax
  \ifstemup $\raise\minpitch\seminhh\stem $%
  \else     $\raise\maxpitch\seminhh\stem $\fi}
%       **************************************************              %
%       *    Das Setzen  der Noten                       *              %
%       **************************************************              %
\def\setnotes#1{\relax\notename={#1}\global\nyshift=\pitch\seminhh
  \legerlines\tunedef
  \ifchord\setchord\else  \sethunkglue \setnote \fi
  }
%einzelne Note
\def\setnote{\global\setbox\notebox=
  \hboxnhw{$\raise\lyshift\box\legerbox$}{$\raise\nyshift\hbox{\tune}$}%
  \setakzent
  \box\hunkbox\kern\smkern\u@text\l@text\box\notebox
  \global\spaceskip=\csname\the\notename skip\endcsname\nobreak
%  \ifnum\dur@tion=0 \global\H@a@cor =\seminhw\fi
   \ifgroup \global \H@a@cor = \z@ \fi
}
%Akkorde
%Zusammenfassung der einzelnen Noten in \leftbox bzw. \rightbox
\def\setchord{%
  \ifnum\maxpitch<\pitch \global\maxpitch = \pitch\fi
  \ifnum\minpitch>\pitch \global\minpitch = \pitch\fi
  \chordlegerlines
  \ifleft
  \global\setbox\leftbox=
  \hboxnhw{\box\leftbox}{$\raise\nyshift\hbox{\tune}$}%
  \else
  \global\setbox\rightbox=
  \hboxnhw{\box\rightbox}{$\raise\nyshift\hbox{\tune}$}\fi
  }
%
\def\endchord{%
  \nobreak\global\sk=\csname\the\notename skip\endcsname
  \ifbeam \relax \else\chordnobeam\fi
  \hc@i=\maxpitch \advance\hc@i-\minpitch
  \global\advance\stemlength by \hc@i\seminhh
  \stemdef
  \ifgroup \global\H@a@cor=\z@
          \ifstemup
           \ifdim\wd\rightbox>\z@ \global\advance\H@a@cor by \nhw \fi
           \fi
           \global\advance\H@a@cor by \wd\dotbox
           \global\d@rection\expandafter{\the\direction}%
  \fi
  \global\setbox\notebox=
  \hbox{\box\leftbox\setstem\box\rightbox\box\dotbox}%
  \setchordakzent
  \box\hunkbox\kern\smkern\u@text\l@text\box\notebox\chordfalse\endgroup}
\def\chordnobeam{\relax\ifstemup \stemupeval of \maxpitch
                      \else    \stemdowneval of \minpitch\fi
               \ifgroup\ifstemup\chordlowerstartpoints
                       \else\chordupperstartpoints\fi
               \fi}
%       ***********************************************************     %
%       * Tonarten und Aufloesung, Notenschluessel und Taktangabe *     %
%       ***********************************************************     %
%\discretionary{vor}{nach}{kein}
\def\change{\edef\-{\noexpand\discretionary{}%vor
                   {\noexpand\hbox{\noexpand\lines}%
                    \noexpand\hbox{\the\cleftoks\the\signtoks}%
                    \noexpand\kern\noexpand\seminhw}%nach
                   {}}}%kein
\def\signchange{\change\gluebrule\discretionary{%
  \hbox{\doppelstrich\set@rulesk\the\canceltoks\the\signtoks\set@rulesk
  }}{\hbox{\lines\the\cleftoks\the\signtoks}\kern\seminhw}{%
  \hbox{\doppelstrich\set@rulesk\the\canceltoks\the\signtoks}}%
  \set@rulesk}
\def\clefchange{\change\setbox\hunkbox=\hbox{\unhbox\hunkbox%
  \kern\p@{{\let\music=\smallmusic\the\cleftoks}}}}
%Taktangabe
\def\meter#1/#2{\nobreak\gluebmeter\discretionary{%
  \hbox{\place4{#1}\kern-\wd\placebox\place0{#2}}\kern\seminhw
  }{\hbox{\lines\the\cleftoks\the\signtoks\set@rulesk
  \hbox{\place4{#1}\kern-\wd\placebox\place0{#2}}}\kern0.25\seminhw}%
  {\hbox{\place4{#1}\kern-\wd\placebox\place0{#2}%
  \kern0.5\seminhw}}\set@rulesk}
% \kern\seminhw}}\set@rulesk}
\def\place#1#2{\setbox\placebox\hbox{\rm#2}$\raise#1.5\seminhh\hbox{\copy
  \placebox}$}
%Vorzeichnung
\def\signature#1#2{\global\signtoks={#1\kern\nhw}%
  \iffirst\change\box\hunkbox\the\signtoks\set@rulesk
  \else\signchange\fi\global\canceltoks={#2}}
%Notenschluessel
\def\clef#1#2{\global\clefcount=#1
  \global\cleftoks={\setkey{#2}\kern\seminhw}%
  \clefchange}
%Abkuerzungen fuer Vorzeichnungen - gro\3e Buchstaben =Dur-Tonarten
%                                   kleine Buchstaben =Moll-Tonarten
\def\F{\signature{\b@4}{\n@4}}
\def\B{\signature{\b@4\b@7}{\n@4\n@7}}
\def\Es{\signature{\b@4\b@7\b@3}{\n@4\n@7\n@3}}
\def\As{\signature{\b@4\b@7\b@3\b@6}{\n@4\n@7\n@3\n@6}}
\def\Des{\signature{\b@4\b@7\b@3\b@6\b@2}{\n@4\n@7\n@3\n@6\n@2}}
\def\Ges{\signature{\b@4\b@7\b@3\b@6\b@2\b@5}{\n@4\n@7\n@3\n@5\n@2\n@5}}
\def\Ces{\signature{\b@4\b@7\b@3\b@6\b@2\b@5\b@1}%
  {\n@4\n@7\n@3\n@5\n@2\n@5\n@1}}
\def\C{\signature{}{}}
\def\G{\signature{\x@8}{\n@8}}
\def\D{\signature{\x@8\x@5}{\n@8\x@5}}
\def\A{\signature{\x@8\x@5\x@9}{\n@8\n@5\n@9}}
\def\E{\signature{\x@8\x@5\x@9\x@6}{\n@8\n@5\n@9\n@6}}
\def\H{\signature{\x@8\x@5\x@9\x@6\x@3}{\n@8\n@5\n@9\n@6\n@3}}
\def\Fis{\signature{\x@8\x@5\x@9\x@6\x@3\x@4}{\n@8\n@5\n@9\n@6\n@3\n@4}}
\let\mdis=\F                 \let\ma=\C
\let\mgis=\H                 \let\md=\F
\let\mcis=\E                 \let\mg=\B
\let\mfis=\A                 \let\mc=\Es
\let\mh=\D                   \let\mf=\As
\let\me=\G                   \let\mb=\Des
                             \let\mes=\Ges
%Notenschluessel
\def\setkey#1{\hbox{\music#1}}
\def\vio{\clef{0}{\mviolin}}
\def\viooct{\clef{0}{\mviolinoct}}% noch nicht im Font
\def\vioOct{\clef{0}{\mviolinOct}} % noch nicht im Font
\def\bass{\clef{-2}{\mbass}}
\def\bassoct{\clef{-2}{\mbassoct}}   %noch nicht im Font
\def\bassOct{\clef{-2}{\mbassOct}}   %noch nicht im Font
\def\bariton{\clef{3}{\mbariton}}
\def\tenor{\clef{1}{\mtenor}}
\def\alto{\clef{-1}{\malt}}
\def\mezzosopran{\clef{-3}{\mmezzosopran}}
\def\sopran{\clef{-5}{\msopran}}
%       **************************************************              %
%       *    Die Verarbeitung der Nachbarschaften        *              %
%       **************************************************              %
\mathsurround=\z@
%       **************************************************              %
%       * Initialisierung der Listen einer Notengruppe   *              %
%       **************************************************              %
%Gruppe belegt die notwendigen Listen fuer die Notengruppe
\def\group#1#2{\grouptrue
  \global\oldskip=\sk
  \let\u@@text = \u@text
  \let\l@@text = \l@text
  \global\setbox\neighborhood=\null
  \gdef\elementlist{#1}\gdef\pitchlist{#2}%
  \gdef\H@list{}\gdef\stemlist{}%
  \gdef\uslurlist{}\gdef\lslurlist{}%
  \gdef\H@corlist{}%
  \gdef\dir@list{}%
  \global\sl@c=\z@
  \global\S=0
  \N=0
  \long\def\\##1{%
  \global\E@l=\z@\global\E@u=\z@%zuruecksetzen auf 0pt
  \global\setbox\neighborhood=\hbox{\unhbox\neighborhood##1}%
  \rightappend0pt\to\stemlist       %initialisiert \stemlist
  \expandafter\rightappend\the\wd\neighborhood\to\H@list%belegt \H@list
  \expandafter\rightappend\the\E@u\to\uslurlist
                                    %belegt obere startpunkte fuer slurs
  \expandafter\rightappend\the\E@l\to\lslurlist
                                    %belegt untere startpunkte fuer slurs
  \expandafter\rightappend\the\H@a@cor\to\H@corlist
                                    %initialisiert \H@corlist
  \global\H@a@cor=\z@%zuruecksetzen auf 0pt
  \expandafter\rightappend\the\d@rection\to\dir@list
                                    %initialisiert \dir@list
  \advance\N1 }\elementlist\groupfalse
  }
%       **************************************************              %
%       * Abarbeitung & Setzen einer Notengruppe         *              %
%       **************************************************              %
\def\go{%
  \let\u@text=\u@@text
  \let\l@text=\l@@text
  \m@ii=0 \long\def\\##1{\advance\m@ii 1
  {\assign\m@ii\of\stemlist\to\stemlength}%
  \ifdim\stemlength=\z@\beamfalse\else\beamtrue\fi##1}%
 \global\sk=\oldskip
 \sethunkglue\hbox{\global\sk=\z@skip\elementlist}\nobreak
 \beamfalse}
%       **************************************************              %
%       * Verbalkung - Eingabemacros                     *              %
%       **************************************************              %
% Eingabemacros - Balken oberhalb - Balken unterhalb der Notengruppe
\def\ubeam#1#2{\stemuptrue  \n@a=#1 \n@e=#2 \direction{up}%
  \putdir{up}\from\n@a\to\n@e\b@@m}
%
\def\lbeam#1#2{\stemupfalse \n@a=#1 \n@e=#2 \direction{down}%
  \putdir{down}\from\n@a\to\n@e\b@@m}
%
\def\b@@m{%
  %Initialisierung
  \additem{\noexpand\direction{\the\direction}}{}\in\elementlist\at\n@a
  \ifnum\n@e>\N \n@e=\N\fi
  \global\minsl=2\nhh
  \assign\n@a\of\pitchlist\to\P@a
  \assign\n@e\of\pitchlist\to\P@e
  \assign\n@e\of\H@list\to\H@e
  \assign\n@a\of\H@list\to\H@a
  \select\n@a\of\dir@list\to\dir@i
  \lokalassign\n@a\of\H@corlist\to\hd@i  % vorne verkuerzt
  \ifx\dir@i\down@\advance\hd@i \nhw \fi
  \global\advance\H@a by-\hd@i
  \lokalassign\n@e\of\H@corlist\to\hd@i  % und hinten verkuerzt
  \select\n@e\of\dir@list\to\dir@i
  \ifx\dir@i\down@\advance\hd@i \nhw \fi
  \global\advance\H@e by-\hd@i
  \global\advance\H@e by-\H@a
  %Berechnung der Steigung
  \csname gradient\the\direction\endcsname%
  %Anpassung der Notenhaelse
  \csname calstems\the\direction\endcsname%
  %Positionierung des Balkens
  \beaming
  %Addieren der berechneten Halsl"angenkorrektur in der \stemlist
  \addslc\in\stemlist\from\n@a\to\n@e
  \global\advance\sl@c \seminhh
  %Korrektur der Bogenangfangspunkte oberhalb bzw. unterhalb der Noten
  \ifstemup\relax
        \addslc\in\uslurlist\from\n@a\to\n@e
      \else \relax\global\sl@c=-\sl@c
        \addslc\in\lslurlist\from\n@a\to\n@e
        \global\sl@c=-\sl@c
      \fi
  \global\sl@c=\z@
  }
%       **************************************************              %
%       * Berechnungen der Halslaengen und Steigung      *              %
%       **************************************************              %
\def\gradientup{\gradient{<}{+}}
\def\gradientdown{\gradient{>}{-}}
\def\gradient#1#2{%
  \R@a=\P@a\seminhh
  \R@e=\P@e\seminhh
%jetzt erst die Stemhoehe berechnen.
  \ifstemup \stemupeval of \P@a \s@a=\stemlength
            \stemupeval of \P@e \s@e=\stemlength
  \else     \stemdowneval of \P@a \s@a=\stemlength
            \stemdowneval of \P@e \s@e=\stemlength
  \fi
  \global\E@a=\R@a \global\advance \E@a by#2\s@a
  \global\E@e=\R@e \global\advance \E@e by#2\s@e
  \ifnum\P@a=\P@e \global\S=0
  \else\global\flagc=1
    \ifnum\P@a#1\P@e \gradz@\in\pitchlist\with#1\the\P@e\from\n@a\to\n@e
    \else          \gradz@\in\pitchlist\with#1\the\P@a\from\n@a\to\n@e\fi
    \ifnum\flagc=0 \global\S=0\else \global\S=1\fi
  \fi
  \relax
  \ifnum\S = 0 \relax
    \ifdim\E@a#1\E@e \global\E@a=\E@e \s@a=#2\E@a \advance\s@a-#2\R@a \fi
  \else
    \distance\E@a\E@e
    \ifdim\Abs=\z@\relax
       \ifnum\P@e#1\P@a \corrc\s@a
       \global\E@a=\R@a\global\advance\E@a by#2\s@a\relax
       \else         \corrc\s@e
       \global\E@e=\R@e\global\advance\E@e by#2\s@e\relax\fi
    \fi
    \distance\E@a\E@e
    \limit=0.45 \H@e
    \ifdim\limit>4\nhh \limit=4\nhh \fi
    \hd@i=\Abs\advance\hd@i by -\limit  \corr=\hd@i
    \ifdim\corr>\z@\relax
      \ifnum\P@a#1\P@e \corrb\s@a
      \global\E@a=\R@a\global\advance\E@a by#2\s@a\relax
      \else\corrb\s@e\global\E@e=\R@e\global\advance\E@e by#2\s@e\fi
      \Abs=\corr
    \fi
    \ifnum\P@a>\P@e\global\S=-\Abs\else\global\S=\Abs\fi
    \global\multiply\S by 100 \global\divide\S by \H@e
  \fi                  %von P@a=Pb Abfrage
%\s@a und \s@e zurueckpacken an \n@a-te bzw. \N-te Stelle  der \stemlist
    \expandafter\exchange\the\s@a\in\stemlist\at\n@a
    \expandafter\exchange\the\s@e\in\stemlist\at\n@e
  \whatisnewstartpoint
  \assignS}
%
\def\calstemsup{\calstems{+}}
\def\calstemsdown{\calstems{-}}
\def\calstems#1{%
  \n@i=\n@a
  \global\sl@c=\z@
  \EP@=\E@a
  \loop\advance\n@i by 1
    \assign\n@i\of\pitchlist\to\P@i
    \R@i=\P@i\seminhh
    \getendpoint\n@i\EP@i
    \s@i=\EP@i
    \advance\s@i by-\R@i        %Laenge des stems
    \s@i=#1\s@i
    \expandafter\exchange\the\s@i\in\stemlist\at\n@i
    \whatarenewstartpoints
    \ifdim\s@i<\minsl\relax
      \ifdim\s@i<\z@ \s@i=-\s@i\advance\s@i by \minsl
      \else\s@i=\R@i\advance\s@i by #1\minsl\advance\s@i by-\EP@i\s@i=#1\s@i\fi
      \ifdim\s@i>\sl@c\relax\global\sl@c=\s@i\fi
    \fi
  \ifnum\n@i<\n@e \repeat
  }
%
%Auswertung der \beamlist
\def\evalbeamlist#1-#2,#3#{\def\aa{#1}\def\bb{#2}%
  \ifx\aa\empty\m@a=0\else\m@a=#1\fi
  \ifx\bb\empty\m@e=\m@a\else\m@e=#2\fi\def\nxt{#3}%
  \ifnum\m@a<0\m@a=0\fi     %belegung von m@a und m@e, so dass in
  \ifnum\m@a>\N\m@a=\N\fi   %createbeam keine schwierigkeiten auftauchen
  \ifnum\m@e<1\m@e=1\fi     %koennen, z.B. bei \assign usw.
  \ifnum\m@e>\N\m@e=\N\fi   %0<=\m@a<=\N;  1<=\m@e<=\N
  \ifnum\m@e<\m@a\hc@i=\m@a\m@a=\m@e\m@e=\hc@i\fi
}
%
\def\beamposition{%
    \assign\m@a\of\H@list\to\H@m@a
    \assign\m@a\of\H@corlist\to\H@a@cor
    \select\m@a\of\dir@list\to\dir@i
    \relax\ifx\dir@i\down@ \global\advance\H@a@cor \nhw \fi
    \global\advance\H@m@a by -\H@a@cor
    \V@a=\H@m@a
    \advance\V@a-\H@a
    \multiply\V@a by\S  \V@a=0.01\V@a
    \ifstemup  \advance \V@a by \sl@c \relax
    \else      \advance \V@a by-\sl@c
    \fi
    \advance\V@a by \EP@
    \ifstemup\ifnum\S<0 \relax
                         \else \advance \V@a-\beamthickness \fi
    \else
         \ifnum\S<0 \advance\V@a \beamthickness\fi
    \fi
    \ifstemup
        \advance\V@a by-\beamrow\nhh%zur Platzierung der Balken
     \else
        \advance\V@a by \beamrow\nhh%zur Platzierung der Balken
    \fi
    }
\def\createbeam{%
  \looop\expandafter\evalbeamlist\nxt{}%
  \ifnum\m@a>0\beamposition
    \ifnum\m@e=\m@a\relax
%%      \immediate\write0{rrule \the\S}%
        \additem{}{\noexpand\beamr{\the\S}%
        {\the\V@a}{\the\H@a@cor}}\in\elementlist\at\m@a
    \else \lokalassign\m@e\of\H@list\to\hd@i
          \lokalassign\m@e\of\H@corlist\to\hd@ii
          \select\m@e\of\dir@list\to\dir@i
          \relax\ifx\dir@i\down@ \advance\hd@ii\nhw \fi
          \advance\hd@i by-\hd@ii
          \advance\hd@i by-\H@m@a
%%        \immediate\write0{rule \the\hd@i}%
          \additem{}{\noexpand\beam{\the\S}%
          {\the\hd@i}{\the\V@a}{\the\H@a@cor}}\in\elementlist\at\m@a
    \fi
  \else
    \m@a=\m@e\beamposition
%%  \immediate\write0{lrule \the\S}%
    \additem{}{\noexpand\beaml{\the\S}%
    {\the\V@a}{\the\H@a@cor}}\in\elementlist\at\m@a
  \fi
  \ifx\nxt\empty\relax\leave%
  }
%
\def\beaming{\cardinality\beamlist\to\hc@i%
  \ifnum\hc@i>2 \advance\hc@i-2 \global\advance\sl@c by\hc@i\seminhh\fi
  \global\beamrow0
  \def\\##1{{\def\nxt{##1}\relax\createbeam\global\advance\beamrow 1%
  }}\beamlist}
%       **************************************************              %
%       *  Plazierung und Zusammensetzung der Balken     *              %
%       **************************************************              %
\def\beam#1#2#3#4{\global\S=#1\global\L@a=#2%
  $\raise#3\hbox to \z@{\kern-#4\drawbeam\hss}$}
\def\beamr#1#2#3{\global\S=#1%
  $\raise#2\hbox to\z@{\kern-#3\drawbe@m\hss}$}
\def\beaml#1#2#3{\global\S=#1$\raise#2\hbox to\z@{\hss
  \drawb@@m\ifstemup\else\kern\nhw\fi}$}
%
\def\putintovbox#1{%
     \ifstemup
       \ifnum\S>0 \vb@@{#1}\else \vt@@{#1}\fi
     \else
       \ifnum\S<0 \vt@@{#1}\else \vb@@{#1}\fi
     \fi}
\def\putintovb@x#1{%
     \ifstemup
       \ifnum\S<0 \vt@@{#1}\else \vb@@{#1}\fi
     \else
       \ifnum\S<0 \vb@@{#1}\else\vt@@{#1}\fi
     \fi}
%
\def\makebeam{\loop
      \ifodd\L@
         $\raise\SHIFT\hbox{\beamfont\char\the\CODE}$%
         \advance\SHIFT by \l@\gradfactor
      \fi
      \divide\L@ 2 \addC1 \multiply\l@2
      \ifnum\L@>0\repeat}
%
\def\drawbeam{%
  {\gradfactor=\S\p@ \gradfactor = 0.005 \gradfactor
  \ifnum\S=0
    \hbox{\vrule height \beamthickness depth\z@ width\L@a}%
  \else\l@=1\assignCODE
  \L@=\L@a
  \advance \L@ by 32677%um Rundungsfehler zu vermeiden
  \divide\L@ by 32678%Genauigkeit 0.5pt
  \SHIFT=\z@
  \putintovbox{\beamfont \ifnum \L@ >255 \setlongbeams\fi \makebeam}%
  \fi}}
\def\setlongbeams{\relax\hc@i=\CODE \advance\hc@i 7%
                   \loop$\raise\SHIFT\hbox{\char\the\hc@i}$%
                   \advance\SHIFT 128 \gradfactor \advance\L@-255
                   \ifnum \L@>255 \repeat}
%
\def\drawbe@m{%
  \ifnum\S=0\hbox{\vrule height \beamthickness depth \z@ width\nhh}%
  \else\assignCODE\addC3\putintovbox{\beamfont\char\the\CODE}\fi}
\def\drawb@@m{%
  \ifnum\S=0\hbox{\vrule height \beamthickness depth \z@ width\nhh}%
  \else\assignCODE\addC3\putintovb@x{\beamfont\char\the\CODE}\fi}
%       **************************************************              %
%       *    Die Bogen                                   *              %
%       **************************************************              %
%-Eingabemacros - Bogen oberhalb - Bogen unterhalb der Notengruppe
\def\uslur#1#2{\n@a=#1\n@e=#2%
  %Initialisierung
  \inislur
  \assign\n@a\of\uslurlist\to\E@a
  \assign\n@e\of\uslurlist\to\E@e
  \assignflags
  %Berechnung der entgueltigen Bogenbreite
  %Belegung des Anfangs- und Endpunktes des Bogens
  %Berechnung des horizontalen Versatzes des Bogens
  \ifdim\s@a=\z@ \ifdim\s@e=\z@ \u@nobeaming \else \u@rightbeaming \fi
      \else \ifdim\s@e=\z@ \u@leftbeaming \else\u@leftrightbeaming\fi
  \fi
  %Berechnung der Laenge des Bogens
  \intslurwidth
  %Berechnung der Sekantensteigung
  \gradientslur{<}{-}%
  %Positionierung des Bogens
  \ifnum\slurwidth > 17 \caluphrase
  \else
     \assignuslurchar
     \ifnum\V@int=0\setslurs{2}{0}\else
     \ifdim\V@<\z@\setslurs{0}{-1}\else\setslurs{0}{+1}\fi\fi
  \fi
}
\def\lslur#1#2{\n@a=#1\n@e=#2%
  %Initialisierung
  \inislur
  \assign\n@a\of\lslurlist\to\E@a
  \assign\n@e\of\lslurlist\to\E@e
  \assignflags
  %Berechnung der entgueltigen Bogenbreite
  %Belegung des Anfangs- und Endpunktes des Bogens
  %Berechnung des horizontalen Versatzes des Bogens
  \ifdim\s@a=\z@ \ifdim\s@e=\z@ \l@nobeaming \else \l@rightbeaming \fi
      \else \ifdim\s@e=\z@ \l@leftbeaming \else\l@leftrightbeaming\fi
  \fi
  %Berechnung der Laenge des Bogens
  \intslurwidth
  %Berechnung der Sekantensteigung
  \gradientslur{>}{+}%
  %Positionierung des Bogens
  \ifnum\slurwidth > 17 \callphrase
  \else
    \assignlslurchar
    \ifnum\V@int=0\setslurs{3}{0}\else
     \ifdim\V@<\z@\setslurs{1}{-1}\else\setslurs{1}{+1}\fi\fi
  \fi
}
%
\def\intslurwidth{%
  %\slurwidth*\nhw  <= \H@e < (\slurwidth+1)*\nhw
 \slurwidth=\H@e
 \advance\slurwidth \seminhw
 \divide\slurwidth by \nhw
 \ifnum\slurwidth< 1 \slurwidth= 1 \fi}
%Hilfsfunktionen
\def\newslurwidth#1#2{%
  \ifcase#1 \global\advance\H@e #2\nhw
  \or       \global\advance\H@e #2\seminhw \fi}
\def\calslurwidth{\global\advance\H@e-\H@e@cor
                   \global\advance\H@a-\H@a@cor
                   \global\advance\H@e-\H@a\relax}
\def\calslurcor#1{\slurcor=\H@a@cor \advance\slurcor #1\seminhw
 \slurcor = -\slurcor}
\def\newE@a#1{\ifnum\flaga=0 \global\E@a=\P@a\seminhh
  \global\advance\E@a#1\nhh \fi}
\def\newE@e#1{\ifnum\flagb=0 \global\E@e=\P@e\seminhh
  \global\advance\E@e#1\nhh \fi}
\def\inislur{\relax
  \ifnum\n@e>\N \n@e=\N\fi
  \ifnum\n@a<1  \n@a= 1\fi
  \ifnum\n@a>\n@e\n@e=\hc@i \n@e=\n@a \n@a=\hc@i\fi
  %
  \assign\n@e\of\H@list\to\H@e
  \lokalassign\n@e\of\H@corlist\to\H@e@cor
  \assign\n@a\of\H@list\to\H@a
  \assign\n@a\of\H@corlist\to\H@a@cor
  \select\n@a\of\dir@list\to\dir@a
  \select\n@e\of\dir@list\to\dir@e
  \ifx\dir@a\down@ \global\advance\H@a@cor \nhw \fi
  \ifx\dir@e\down@ \advance\H@e@cor \nhw \fi
  %
  \assign\n@e\of\pitchlist\to\P@e
  \assign\n@a\of\pitchlist\to\P@a
  \lokalassign\n@e\of\stemlist\to\s@e
  \lokalassign\n@a\of\stemlist\to\s@a
}
\def\assignflags{%
   \flaga=2 \ifdim \E@a=\z@ \flaga=0 \fi
  \ifdim\E@a> \I@@ \flaga=1 \global\advance \E@a-\I@@\fi
  \ifdim\E@a<-\I@@ \flaga=1 \global\advance \E@a-\I@@\fi
  \flagb=2\ifdim \E@e =\z@ \flagb=0\fi
  \ifdim\E@e> \I@@ \flagb=1 \global\advance \E@e-\I@@\fi
  \ifdim\E@e<-\I@@ \flagb=1 \global\advance \E@e \I@@\fi
  \relax}
%
%ohne Verbalkung
\def\u@nobeaming{\calslurwidth
  \ifx\dir@e\up@ \relax\newslurwidth{0}{-}\fi %stemup
  \calslurcor{-}\newE@a{+}\newE@e{+}}
%
\def\l@nobeaming{\calslurwidth
  \ifx\dir@a\down@ \newslurwidth{0}{-}\fi%stemdown
  \ifx\dir@a\up@\calslurcor{+}\else \calslurcor{-}\fi
  \newE@a{-}\newE@e{-}}
% Verbalkung nur in \n@e
\def\u@rightbeaming{\ifnum\flagb<2 \u@rightstemdown \else
  \u@rightstemup \fi}
\def\u@rightstemdown{\calslurwidth
  \calslurcor{-}\newE@a{+}\newE@e{+}}
\def\u@rightstemup{\calslurwidth
  \advance\n@e-1
  \ifnum\n@e=\n@a \newslurwidth{0}{-}\calslurcor{-}\newE@a{+}\newE@e{+}%
  \else\newslurwidth{1}{-}\calslurcor{-}\newE@a{+}%\E@e belegt
  \fi\advance\n@e1}
%
\def\l@rightbeaming{\ifnum\flagb<2 \l@rightstemup \else
  \l@rightstemdown \fi}
\def\l@rightstemup{\calslurwidth
  \ifx\dir@a\down@ \newslurwidth{0}{-}\fi
  \ifx\dir@a\up@\calslurcor{+}\else\calslurcor{-}\fi\newE@a{-}\newE@e{-}}
\def\l@rightstemdown{\calslurwidth
  \advance\n@e-1
  \ifnum\n@e=\n@a \ifx\dir@a\up@\newslurwidth{0}{-}\fi
    \ifx\dir@a\up@\calslurcor{+}\else\calslurcor{-}\fi\newE@a{-}\newE@e{-}%
  \else\ifx\dir@a\up@\newslurwidth{1}{+}\else\newslurwidth{1}{-}\fi
    \ifx\dir@a\up@\calslurcor{+}\else\calslurcor{-}\fi\newE@a{-}%\E@e belegt
  \fi\advance\n@e 1 }
%
% Verbalkung nur in \n@a
\def\u@leftbeaming{\ifnum\flaga<2 \u@leftstemdown \else
  \u@leftstemup \fi}
\def\u@leftstemdown{\calslurwidth
  \ifx\dir@e\up@\newslurwidth{0}{-}\fi
  \calslurcor{-}\newE@a{+}\newE@e{+}}
\def\u@leftstemup{\calslurwidth
  \advance\n@e-1
  \ifnum\n@e=\n@a \ifx\dir@e\up@\newslurwidth{0}{-}\fi
  \calslurcor{-}\newE@a{+}\newE@e{+}%
  \else\ifx\dir@e\up@\newslurwidth{1}{-}\else\newslurwidth{1}{+}\fi
  \slurcor=-\H@a@cor \newE@e{+}%\E@a belegt
  \fi\advance\n@e1}
%
\def\l@leftbeaming{\ifnum\flaga<2 \l@leftstemup \else
  \l@leftstemdown \fi}
\def\l@leftstemup{\calslurwidth
  \calslurcor{+}\newE@a{-}\newE@e{-}}
\def\l@leftstemdown{\calslurwidth
  \advance\n@e-1
  \ifnum\n@e=\n@a \newslurwidth{0}{-}\calslurcor{-}\newE@a{-}\newE@e{-}%
  \else\newslurwidth{1}{-}\slurcor=-\H@a@cor\newE@e{-}%\E@a belegt
  \fi\advance\n@e 1 }
%
% Verbalkung in beiden Faellen
\def\u@leftrightbeaming{\ifnum\flagb<2 \u@stemdown \else \u@stemup \fi}
\def\u@stemdown{%
  \ifnum\flaga<2 \u@stemdownstemdown \else \u@stemupstemdown \fi}
\def\u@stemdownstemdown{\calslurwidth
  \calslurcor{-}\newE@a{+}\newE@e{+}}
\def\u@stemupstemdown{\calslurwidth
  \advance\n@e-1
  \ifnum\n@e=\n@a \calslurcor{-}\newE@a{+}\newE@e{+}%
  \else\newslurwidth{1}{-}\slurcor=-\H@a@cor\newE@e{+}%\E@a belegt
  \fi\advance\n@e 1 }
\def\u@stemup{%
  \ifnum\flaga<2 \u@stemdownstemup \else \u@stemupstemup \fi}
\def\u@stemdownstemup{\calslurwidth
  \advance\n@e-1
  \ifnum\n@e=\n@a \newslurwidth{0}{-}\calslurcor{-}\newE@a{+}\newE@e{+}%
  \else\newslurwidth{1}{-}\calslurcor{-}\newE@a{+}%\E@e belegt
  \fi\advance\n@e 1 }
\def\u@stemupstemup{\calslurwidth
  \slurcor=-\H@a@cor}%E@a,E@e belegt
%
\def\l@leftrightbeaming{\ifnum\flaga<2 \l@stemup \else \l@stemdown \fi}
\def\l@stemup{%
  \ifnum\flagb<2 \l@stemupstemup \else \l@stemupstemdown \fi}
\def\l@stemupstemup{\calslurwidth
  \calslurcor{+}\newE@a{-}\newE@e{-}}
\def\l@stemupstemdown{\calslurwidth
  \advance\n@e-1
  \ifnum\n@e=\n@a \calslurcor{+}\newE@a{-}\newE@e{-}%
  \else\newslurwidth{1}{+}\calslurcor{+}\newE@a{-}%\E@e belegt
  \fi\advance\n@e 1 }
\def\l@stemdown{%
  \ifnum\flagb<2 \l@stemdownstemup \else \l@stemdownstemdown \fi}
\def\l@stemdownstemup{\calslurwidth
  \advance\n@e-1
  \ifnum\n@e=\n@a \newslurwidth{0}{-}\calslurcor{+}\newE@a{-}\newE@e{-}%
  \else\newslurwidth{1}{-}\slurcor=-\H@a@cor\newE@e{-}%\E@a belegt
  \fi\advance\n@e 1 }
\def\l@stemdownstemdown{\calslurwidth\slurcor=-\H@a@cor}%E@a,E@e belegt
%
%Sekantensteigung
\def\gradientslur#1#2{%
  \ifdim\E@a=\E@e \V@int=0 \V@=\z@%auswaehlen von angemessenen Boegen
  \else
    \V@ = \E@e \advance \V@ by -\E@a
    \ifdim\V@>\z@  \V@int=\V@ \else \V@int=-\V@ \fi
    \advance\V@int \V@int \advance\V@int \seminhh \divide \V@int by 2
    \divide \V@int by \seminhh
    \ifnum\V@int>8 \V@int=8 \else \ifnum\slurwidth<4
       \hc@i=\slurwidth \multiply \hc@i2
       \ifnum\hc@i<\V@int \V@int=\hc@i
       \fi\fi
    \fi
    \hd@i=\V@int\seminhh
    \ifdim\E@a#1\E@e \global\E@a=\E@e\global\advance\E@a#2\hd@i
         \else    \global\E@e=\E@a\global\advance\E@e#2\hd@i\fi
  \fi
  }
%
%Postitionierung und Bogensatz
\def\caluphrase{\ifnum\V@int=0
  \caltie{0}{3}{+}\else \calphrase{<}{+}{0}\fi}
\def\callphrase{\ifnum\V@int=0
  \caltie{1}{3}{-}\else \calphrase{>}{-}{1}\fi}
\def\caltie#1#2#3{\hd@i=\E@a \hd@ii=\tieconst\seminhh
    \advance\hd@ii\nhh
    \advance\hd@i #3\hd@ii
    \additem{}{\noexpand\phrase{#1}{\the\H@e}%
           {#2}{#2}{\the\hd@i}{\the\slurcor}}\in\elementlist\at\n@a}
\def\calphrase#1#2#3{%
    \ifdim\V@#1 \z@
    \hd@i=\phraseconst\seminhh \advance\hd@i\nhh
    \global\advance\E@a#2\hd@i
       \additem{}{\noexpand\phrase{#3}{\the\H@e}%
          {0}{\the\V@int}{\the\E@a}{\the\slurcor}}\in\elementlist\at\n@a
%          0 entspr. slur aus der ersten spalte im font Sconst
    \else
    \hd@i=\phraseconst\seminhh \advance\hd@i\seminhh
    \global\advance\E@a by #2\hd@i\relax
    \hd@i=\V@int\seminhh
    \global\advance\E@a by #2\hd@i \relax
       \additem{}{\noexpand\phrase{#3}{\the\H@e}%
          {\the\V@int}{0}{\the\E@a}{\the\slurcor}}\in\elementlist\at\n@a
%                      0 entspr. slur aus der ersten spalte im font
    \fi}
\def\phrase#1#2#3#4#5#6{\hc@i=#3\hc@ii=#4%
     $\raise#5\hbox to \z@{{\kern#6%
  \ifcase#1
     \vt@@{\hbox to #2 {\slurfont
     \vt@@{\char\hex2\the\hc@i}\r@lef@ill{\p@}\vt@@{\char\hex3\the\hc@ii}}}%
  \or
     \vb@@{\hbox to #2 {\slurfont
     \vb@@{\char\hex4\the\hc@i}\r@lef@ll{\p@}\vb@@{\char\hex5\the\hc@ii}}}%
  \fi
   \hss}}$}
%
\def\setslurs#1#2{\additem{}{\noexpand\setslur{#2}{#1}%
   {\the\E@a}{\the\slurcor}{\the\slurtoks}}\in\elementlist\at\n@a}
\def\setslur#1#2#3#4#5{\S@=#1\hc@i=#2%
   $\raise#3\hbox to \z@{{\kern#4\relax
   \ifnum\S@<0 \vt@@{\selectfont\char#5}\else
               \vb@@{\selectfont\char#5}\fi
   \hss}}$}
\def\selectfont{%
   \ifcase\hc@i\ifnum\S@<0\slurfontdu\else\slurfontuu\fi%0
           \or \ifnum\S@<0\slurfontdd\else\slurfontud\fi%1
           \or \slurfont \or \slurfont \fi}
%       **************************************************              %
%       *    Akzente fuer    Noten und Akkorde           *              %
%       **************************************************              %
%Abkuerzungen
\def\cantusfirmus{{\it c.f.}}
\def\crescendo{{\it cresc.}}
\def\dacapo{{\it d.c.}}
\def\dalsegno{{\it d.s.}}
\def\decrescendo{{\it decresc.}}
\def\diminuendo{{\it dim.}}
\def\fine{{\it fine}}
\def\forte{{\it f}}
\def\fortissimo{{\it ff}}
\def\fortissimoposs{{\it fff}}
\def\fortepiano{{\it fp}}
\def\forzato{{\it fz}}
\def\mezzoforte{{\it mf}}
\def\mezzopiano{{\it mp}}
\def\piano{{\it p}}
\def\pianissimo{{\it pp}}
\def\pianissimoposs{{\it ppp}}
\def\rallentando{{\it rall.}}
\def\rinforzando{{\it rfz.}}
\def\ritardando{{\it rit.}}
\def\ritenuto{{\it riten.}}
\def\sforzato{{\it sfz}}
\def\sforz{{\it sf}}
\def\staccato{{\it stacc.}}
\def\tacet{{\it tacet}}
\def\unisono{{\it unis.}}
%Plazierung der Spielanweisungen am Notenkopf
\def\noaccent{\setbox\akzentbox\null}
\def\stac{\setbox\akzentbox\hboxnhw{{\rm.}}{\box\akzentbox}}
\def\dec{{{\slurfont\char'160}}}
\def\staccatissimo{\setbox\akzentbox%
  \hboxnhw{$\ssize\prime$}{\box\akzentbox}}
\def\tr{\setbox\akzentbox\hboxnhw{{\rm{\it tr}}}{\box\akzentbox}}
\def\trbrack{\setbox\akzentbox\hboxnhw{{\rm({\it tr})}}{\box\akzentbox}}
\def\tenuto{\setbox\akzentbox\hboxnhw{{\vrule width \nhh height 1pt}}
{\box\akzentbox}}
\def\plus{\setbox\akzentbox=
         \hboxnhw{$\scriptscriptstyle+$}{\box\akzentbox}}
\def\setchordakzent{%
  \ifdim\wd\akzentbox=\z@\relax\else
  \iftwo \akzent@position \else
  \ifstemup \l@akzent@position \else \u@akzent@position\fi \fi
  \ifstemup\global\setbox\notebox=\hbox{$
  \raise \akzent@pos\hbox to \z@{\copy\akzentbox\hss}$\box\notebox}\else
  \global\setbox\notebox=\hbox{\box\notebox$
  \raise \akzent@pos\hbox to\z@{\hss\copy\akzentbox}$}\fi\fi}
\def\setakzent{%
  \ifdim\wd\akzentbox=\z@\relax\else
  \iftwo \akzent@position \else
  \ifstemup \l@akzent@position \else \u@akzent@position\fi \fi
  \global\setbox\notebox=\hboxnhw{\box\notebox}{$
  \raise \akzent@pos\hbox{\copy\akzentbox}$}\fi}
\def\u@akzent@position{\hc@i=\ht\notebox \divide\hc@i by \seminhh
  \ifnum\hc@i>7 \advance\hc@i 1 \else
    \ifodd\hc@i \advance \hc@i 2 \else \advance \hc@i 1\fi\fi
  \akzent@pos = \hc@i\seminhh\relax
  \ifgroup
  \global\E@u=\akzent@pos \global\advance\E@u\ht\akzentbox
  \global\advance\E@u\seminhh
  \ifdim\E@u<\z@ \global\advance \E@u-\I@@
  \else \global\advance \E@u \I@@ \fi\fi
  }
\def\l@akzent@position{\hc@i=\dp\notebox \divide\hc@i by \seminhh
  \ifdim\dp\notebox>\z@ \advance\hc@i 1 \akzent@pos= -\hc@i\seminhh
  \else
    \ifnum\pitch>2 \akzent@pos=\seminhh \else \akzent@pos=-\seminhh\fi\fi
  \advance\akzent@pos-\ht\akzentbox
  \ifgroup
  \global\E@l=\akzent@pos \global\advance\E@l-\seminhh
  \ifdim\E@l<\z@ \global\advance \E@l-\I@@
  \else \global\advance \E@l \I@@ \fi\fi}
%varable (De-)Crescendo - Zeichen
\def\cresc#1{\sethunkglue\box\hunkbox\global\sk=0pt
  \setbox\hb@i\hbox{#1}\hc@i=\wd\hb@i\divide\hc@i\nhw
  \ifnum\hc@i < 1 \hc@i=1 \fi \ifnum\hc@i>16 \hc@i = 16\fi\advance\hc@i95
  \setover{\slurfont\char\the\hc@i}{\overstrut\unhbox\hb@i}}
\def\decresc#1{\sethunkglue\box\hunkbox\global\sk=0pt
  \setbox\hb@i\hbox{#1}\hc@i=\wd\hb@i\divide\hc@i\nhw
  \ifnum\hc@i < 1 \hc@i=1 \fi \ifnum\hc@i>16 \hc@i=16 \fi\advance\hc@i111
  \setover{\slurfont\char\the\hc@i}{\overstrut\unhbox\hb@i}}
\def\setover#1#2{\vbox{\offinterlineskip\hbox{#1}\hbox{#2}}}
%       **************************************************              %
%       *    Textunterlage                               *              %
%       **************************************************              %
%                 Text oberhalb und unterhalb der Notenlinien
%- Eingabemacros
\def\^#1#{\set@above@parms{#1}\set@above@box}
\let\us=\_
\def\_#1#{\set@below@parms{#1}\set@below@box}
\def\a@tok{\^}\def\b@tok{\_}
%#1 n : Der Text soll nicht in die Berechnung einbezogen werden,
%#1 c : Der Text wird unterhalb der Notenbox zentriert und  nicht in
% die weitere Berechnung einbezogen
%#1 l: (linksbuendig) aber neuer spaceskip festgesetzt, Box ist so breit
%wie Text.
%#1 r: (rechtsbuendig) Box ist so breit wie Notenbox + ihr spaceskip
%der Rest wird links ueberstehen. sk veraendert.
\def\set@above@parms#1{\def\aresp{#1}\ifx\aresp\empty \def\aresp{x}\fi
         \overtext=\staffheight\advance\overtext by\nhh}
\def\set@below@parms#1{\def\bresp{#1}\ifx\bresp\empty \def\bresp{x}\fi
          \undertext=\textline}
\def\set@above@box#1{\hs@iv=\sk\setbox\hb@i=\hbox{\global\sk=\z@skip
 \strut\eightrm#1}\get@below@box}
\def\get@below@box#1#{\def\@B@{#1}\begingroup\aftergroup\set@below
     \ifx\@B@\b@tok\relax %\aftergroup#2
     \else\aftergroup e\aftergroup{\aftergroup}\fi
     \endgroup}
\def\set@below#1#{\set@below@parms{#1}\set@boxes}
\def\set@boxes#1#2{\setbox\hb@ii=\hbox{\global\sk=\z@skip\strut\eightrm#1}%
  \global\sk=\hs@iv \setbox\hb@iii\hbox{#2}%
  \hs@v=\sk \relax\hs@vi=\sk
  \above{\aresp}\below{\bresp}\global\sk=\hs@iv\relax
  \ifvoid\hb@iii \global\sk=\z@skip \hbox{\u@text\l@text}\else #2\fi
  \ifdim\hs@vi>\hs@v\global\sk=\hs@vi\else\global\sk=\hs@v\fi
  \def\l@text{\relax}\def\u@text{\relax}}
%
\def\set@below@box#1{\hs@iv=\sk\setbox\hb@ii=\hbox{\global\sk=\z@skip
 \strut\eightrm#1}\get@above@box}
\def\get@above@box#1#{\def\@A@{#1}\begingroup\aftergroup\set@above
  \ifx\@A@\a@tok\relax%\aftergroup#2
  \else\aftergroup e\aftergroup{\aftergroup}\fi\endgroup}
\def\set@above#1#{\set@above@parms{#1}\set@@boxes}
\def\set@@boxes#1#2{\setbox\hb@i=\hbox{\global\sk=\z@skip\strut\eightrm#1}%
  \global\sk=\hs@iv \setbox\hb@iii\hbox{#2}%
  \hs@v=\sk \relax\hs@vi=\sk
  \above{\aresp}\below{\bresp}\global\sk=\hs@iv\relax
  \ifvoid\hb@iii\global\sk=\z@skip\hbox{\u@text\l@text}\else#2\fi
  \ifdim\hs@vi>\hs@v\global\sk=\hs@vi\else\global\sk=\hs@v\fi
  \def\l@text{\relax}\def\u@text{\relax}}
\def\above#1{\ifdim\ht\hb@iii>\overtext \overtext = \ht\hb@iii
  \advance \overtext \seminhh \fi
  \if#1e\def\u@text{\relax}\else
  \if#1n\anorespect\else
    \if#1c\acrespect\else
      \if#1r\arrespect\else
        \if#1l\alrespect\else\aautoset\fi\fi\fi\fi\fi\nobreak}
\def\below#1{%
  \if#1e\def\l@text{\relax}\else
  \if#1n\bnorespect\else
    \if#1c\bcrespect\else
      \if#1r\brrespect\else
        \if#1l\blrespect\else
          \if#1v\bvrespect\else\bautoset\fi\fi\fi\fi\fi\fi\nobreak}
\def\anorespect{%
   \def\u@text{$\raise\overtext\hbox to\z@{\box\hb@i\hss}$}}
\def\acrespect{\hd@i=\wd\hb@iii\advance\hd@i-\hs@iv\relax
  \setbox\hb@i\hbox to\hd@i{\hss\box\hb@i\hss}%
  \def\u@text{$\raise\overtext\hbox to \z@{\box\hb@i\hss}$}}
\def\arrespect{\hd@i=\wd\hb@iii
  \advance\hd@i by \hs@v \advance\hd@i by-\hs@iv
  \setbox\hb@i\hbox to \hd@i{\hss\box\hb@i}%
  \def\u@text{$\raise\overtext\hbox to \z@{\box\hb@i\hss}$}%
  \advance\hs@v by \nhh plus\nhh\relax}
\def\alrespect{\hd@i=\wd\hb@iii\advance\hd@i-\hs@iv
  \distance{\hd@i}{\wd\hb@i}\ifdim\hd@i>\wd\hb@i
  \hs@v=\Abs plus\nhh \fi
  \def\u@text{$\raise\overtext\hbox to \z@{\box\hb@i\hss}$}}
\def\bnorespect{%
  \def\l@text{$\lower\undertext\hbox to\z@{\box\hb@ii\hss}$}}
\def\bvrespect{\undertext=\ht\hb@ii\relax
  \ifdim\dp\hb@iii>\z@ \advance\undertext by\dp\hb@iii\fi\bnorespect}
\def\bcrespect{%
  \hd@i=\wd\hb@iii\advance\hd@i-\hs@iv\relax
  \setbox\hb@ii\hbox to\hd@i{\hss\box\hb@ii\hss}%
  \def\l@text{$\lower\undertext\hbox to \z@{\box\hb@ii\hss}$}}
\def\brrespect{\hd@i=\wd\hb@iii
  \advance\hd@i by \hs@vi \advance\hd@i by-\hs@iv
  \setbox\hb@ii\hbox to \hd@i{\hss\box\hb@ii}%
  \def\l@text{$\lower\undertext\hbox to \z@{\box\hb@ii\hss}$}%
  \advance\hs@vi by \nhh plus\nhh\relax}
\def\blrespect{\hd@i=\wd\hb@iii\advance\hd@i-\hs@iv
  \distance{\hd@i}{\wd\hb@ii}\ifdim\hd@i>\wd\hb@i
  \hs@vi=\Abs plus\nhh\relax \fi
  \def\l@text{$\lower\undertext\hbox to \z@{\box\hb@ii\hss}$}}
\def\aautoset{\hd@i=\wd\hb@i \advance \hd@i-\wd\hb@iii
  \advance\hd@i-\hs@iv
   \ifdim\hd@i>\z@ \relax
    \ifdim\hd@i>0.75\hs@v \advance\hd@i-\hs@v
      \ifdim\hd@i<\hs@v \arrespect\else\alrespect\fi
    \else\acrespect\fi
  \else\anorespect\fi
  }
\def\bautoset{\hd@i=\wd\hb@ii \advance\hd@i-\wd\hb@iii
  \advance\hd@i-\hs@vi
  \ifdim\hd@i>\z@ \relax
    \ifdim\hd@i>\sk \advance\hd@i-\sk
      \ifdim\hd@i<\sk \brrespect\else\blrespect\fi
    \else\bcrespect\fi
  \else\bnorespect\fi
  }
%       **************************************************              %
%       *    Zweistimmige Notation in einem System       *              %
%       **************************************************              %
\def\two#1#2{{\def\stemdirectiondef{\relax}\twotrue
  \setbox\h@nkbox=\hbox{\box\hunkbox}%
  \hs@i=\sk  \global\sk=\z@skip
  \setbox\firstvoice\hbox{\stemuptrue
  \let\akzent@position=\u@akzent@position\direction{up}#1}%
  \hs@ii=\sk \global\sk=\z@skip
  \setbox\secondvoice\hbox{%
    \def\doteven{\dot@down}\let\akzent@position=\l@akzent@position
  \stemupfalse\direction{down}#2}%
  \hs@iii=\sk
  \hbox{\global\sk=\hs@i\sethunkglue
    \box\h@nkbox\ifdim\wd\firstvoice<\wd\secondvoice
    \hd@i=\wd\firstvoice\global\sk=\z@skip\box\firstvoice\hskip-\hd@i
    \global\sk=\z@skip\box\secondvoice\global\sk=\hs@iii\else
    \hd@i=\wd\secondvoice\global\sk=\z@skip\box\secondvoice\hskip-\hd@i
    \global\sk=\z@skip\box\firstvoice\global\sk=\hs@ii\fi}\twofalse}}
%       **************************************************              %
%       *    Beginn    und Ende                          *              %
%       **************************************************              %
%Material fuer die Ueberschrift eines Musikstueckes
\def\comp@{\hbox{}} %Komponist
\def\poet@{\hbox{}} % Texter
\def\title@{\hbox{}}% Titel
\def\voice@{\hbox{}}%Text zu Beginn der ersten Notenzeile
\def\composer#1{\def\comp@{\hbox{\eightrm #1}}}
\def\poet#1{\def\poet@{\hbox{\eightrm#1}}}
\def\title#1{\def\title@{\hbox{\bf#1}}}
\def\voice#1{\def\voice@{\hbox to \parindent{\offinterlineskip
  \hss\vbox to \staffheight{\vfil\hbox{\rm#1}\vfil}\hss}}}
%Zusammensetzen der Ueberschrift
\def\headings{\par\hbox to \hsize{\hss\title@\hss}%
  \hbox to \hsize {\poet@\hss\comp@}%
  \def\comp@{\hbox{}}\def\poet@{\hbox{}}\def\title@{\hbox{}}}
%Rahmen \beginsong ...... \endsong
\outer\def\beginsong#1#2{\headings\par\nointerlineskip
  \begingroup\inisong
  \global\signtoks={}\global\cleftoks={}%
  \noaccent
  \baselines\parskip\staffheight plus 0.5\staffheight \relax
  \firsttrue\indent\llap{\voice@}%
  \firstlines#1#2\firstfalse\music}
\def\endsong{\break\null\par\endgroup\def\voice@{\hbox{}}\global\sk=0pt}
\outer\def\ende{\endsong\end}
%       **************************************************              %
%       *    Defaults                                    *              %
%       **************************************************              %
%Defaults zu Beginn des Musikstueckes
\def\inidefaults{\let\dotdown=\dot@down
  \def\helplist{}%
  \global\minsl=3 \nhh
  \let\na=\n@a \let\nee=\n@e
  \def\beamlist{\\{\the\n@a-\the\n@e,}}%
% Minimal moegliche Halslaenge bei Verbalkung - Anfangsbelegung
  \n@a=1}
%Diese k"onnen nicht in \beginsong .... \endsong eingebettet werden
%da sonst keine Aenderung moeglich
  \universal
  \normalbaselines
\catcode`@ = 12
%\let\baselines = \baselinesa   %fuer Einbettung einzeiliger Beispiele
                               %in Text
\let\baselines = \baselinesb  %fuer mehrzeilige Beispiele
\rm
