% % % 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