From f4500709457661ea04dfb225ac2a311bb5f9941c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 31 Oct 2010 23:59:08 +0000 Subject: musixtex (30oct10) git-svn-id: svn://tug.org/texlive/trunk@20275 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/generic/musixtex/curly.tex | 44 + .../texmf-dist/tex/generic/musixtex/musixadd.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixbar.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixbbm.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixblx.tex | 2 +- Master/texmf-dist/tex/generic/musixtex/musixbm.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixcho.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixcpt.tex | 33 +- .../texmf-dist/tex/generic/musixtex/musixdat.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixdbr.tex | 250 ++++ .../texmf-dist/tex/generic/musixtex/musixdia.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixeng.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixesf.tex | 79 ++ .../texmf-dist/tex/generic/musixtex/musixevo.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixext.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixfll.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixgre.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixgui.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixhor.tex | 3 +- .../texmf-dist/tex/generic/musixtex/musixhou.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixlex.tex | 1201 ++++++++++++++++++++ .../texmf-dist/tex/generic/musixtex/musixlit.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixltx.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixlyr.tex | 1162 +++++++++++++++++++ .../texmf-dist/tex/generic/musixtex/musixmad.tex | 7 +- .../texmf-dist/tex/generic/musixtex/musixper.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixpoi.tex | 19 +- Master/texmf-dist/tex/generic/musixtex/musixps.tex | 961 ++++++++++++++++ .../texmf-dist/tex/generic/musixtex/musixstr.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixsty.tex | 2 +- .../texmf-dist/tex/generic/musixtex/musixtex.ins | 7 - .../texmf-dist/tex/generic/musixtex/musixtex.tex | 474 ++++++-- .../texmf-dist/tex/generic/musixtex/musixtmr.tex | 74 ++ .../texmf-dist/tex/generic/musixtex/musixtri.tex | 4 +- Master/texmf-dist/tex/generic/musixtex/tuplet.tex | 147 +++ .../tex/generic/musixtex/underbracket.sty | 190 ++++ 36 files changed, 4518 insertions(+), 177 deletions(-) create mode 100644 Master/texmf-dist/tex/generic/musixtex/curly.tex create mode 100644 Master/texmf-dist/tex/generic/musixtex/musixdbr.tex create mode 100644 Master/texmf-dist/tex/generic/musixtex/musixesf.tex create mode 100644 Master/texmf-dist/tex/generic/musixtex/musixlex.tex create mode 100644 Master/texmf-dist/tex/generic/musixtex/musixlyr.tex create mode 100644 Master/texmf-dist/tex/generic/musixtex/musixps.tex delete mode 100644 Master/texmf-dist/tex/generic/musixtex/musixtex.ins create mode 100644 Master/texmf-dist/tex/generic/musixtex/musixtmr.tex create mode 100644 Master/texmf-dist/tex/generic/musixtex/tuplet.tex create mode 100644 Master/texmf-dist/tex/generic/musixtex/underbracket.sty (limited to 'Master/texmf-dist/tex/generic/musixtex') diff --git a/Master/texmf-dist/tex/generic/musixtex/curly.tex b/Master/texmf-dist/tex/generic/musixtex/curly.tex new file mode 100644 index 00000000000..dfe75653818 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musixtex/curly.tex @@ -0,0 +1,44 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This is curly.tex, MusiXTex code for multiple left curly brackets % +% % +% submitted by Mthimkhulu Molekwa % +% to the mutex list on 19 May 1999 % +% % +% % +% usage: % +% \curlybrackets{ % +% % +% ... % +% % +% } % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifx\undefined\curlybrackets \else \endinput\fi +\makeatletter + +\let\origin@lwrit@staffs\writ@staffs +\def\writ@staffs{% + \origin@lwrit@staffs + \ifx\br@cks\empty\else\expandafter\@bracks\br@cks\ende\fi} + +\let\br@cks\empty +\def\curlybrackets#1{\def\br@cks{#1}} + +\def\@bracks#1#2#3\ende{% + \ifnum #1<#2 %=========================== inserted by D.S.(?) + \noinstrum@nt=#1\s@l@ctinstr\b@zi\altitude + \noinstrum@nt=#2\s@l@ctinstr\b@zii\altitude + \advance\b@zii-\b@zi + \C@Inter + \advance\b@zii\nblines\internote + \advance\b@zii\nblines\internote + \advance\b@zii-2\internote + \n@v\b@zii \sp@pt\tw@ \advance\n@v\@cxxviii + \divide\b@zii\tw@ + \advance\b@zi\b@zii + \raise\b@zi\rlap{\mxsps\char\n@v\kern\instrum@in@group}% + \fi %==================================== inserted by D.S.(?) + \ifx\empty#3\else\@bracks#3\ende\fi} + +\makeatother +%%%%%%%%%%%%%%%%%%%%%%%%%% End of curly.tex %%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/generic/musixtex/musixadd.tex b/Master/texmf-dist/tex/generic/musixtex/musixadd.tex index a899905acac..f5cc37edf18 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixadd.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixadd.tex @@ -18,7 +18,7 @@ % \ifx\staffspacingix\undefined\else\endinput\fi -\immediate\write10{MusiXADDitional instruments T.99\space<24 March 2000>}% +\immediate\write16{MusiXADDitional instruments T.99\space<24 March 2000>}% \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 diff --git a/Master/texmf-dist/tex/generic/musixtex/musixbar.tex b/Master/texmf-dist/tex/generic/musixtex/musixbar.tex index bedcb1ebbb4..5e748aae6d3 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixbar.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixbar.tex @@ -7,7 +7,7 @@ \ifx\indivbarrules\undefined\else\endinput\fi -\immediate\write10{MusiXBAR printing or hiding seperate bar lines 1.01\space<23 Februar 2000>}% +\immediate\write16{MusiXBAR printing or hiding seperate bar lines 1.01\space<23 Februar 2000>}% \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 diff --git a/Master/texmf-dist/tex/generic/musixtex/musixbbm.tex b/Master/texmf-dist/tex/generic/musixtex/musixbbm.tex index c5e08da155f..538bf4a089d 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixbbm.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixbbm.tex @@ -21,7 +21,7 @@ \input musixbm \fi -\immediate\write10{MusiXBBeaM T.405\space<30 October 1995>}% 256th beams +\immediate\write16{MusiXBBeaM T.405\space<30 October 1995>}% 256th beams \ifx\undefined\ibbbbbbu \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixblx.tex b/Master/texmf-dist/tex/generic/musixtex/musixblx.tex index bcb76f5e02d..d40de4cb68e 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixblx.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixblx.tex @@ -18,7 +18,7 @@ % % (Nicolas Brouard) -\immediate\write10{MusiXBigLateX 0.36\space<1 March 1995>}% +\immediate\write16{MusiXBigLateX 0.36\space<1 March 1995>}% \ifx\undefined\largevaugment \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixbm.tex b/Master/texmf-dist/tex/generic/musixtex/musixbm.tex index c5e7a344b78..ba986ac83d9 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixbm.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixbm.tex @@ -16,7 +16,7 @@ % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXBeaM T.94\space<11 May 1999>}% +\immediate\write16{MusiXBeaM T.94\space<11 May 1999>}% \ifx\undefined\ibbbbbu \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixcho.tex b/Master/texmf-dist/tex/generic/musixtex/musixcho.tex index a0da766ed4d..55b5e482ebe 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixcho.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixcho.tex @@ -16,7 +16,7 @@ % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXCHOir T.89\space<24 March 1998>}% +\immediate\write16{MusiXCHOir T.89\space<24 March 1998>}% \ifx\undefined\braceheight \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixcpt.tex b/Master/texmf-dist/tex/generic/musixtex/musixcpt.tex index bed7c70f173..3883c0b6060 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixcpt.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixcpt.tex @@ -21,7 +21,7 @@ \ifx\undefined\DIMin \else \endinput \fi -\immediate\write10{MusiXComPaTible T.67\space<7 January 1997>}% +\immediate\write16{MusiXComPaTible T.109\space<7 July 2002>}% \ifx\undefined\mxversion \errmessage{MusiXcpt input before MusiXTeX !}\fi @@ -182,7 +182,9 @@ \chardef\@liii=53 \newif\ifcautionacc -\def\@acc#1{\inhgetn@i#1\relax\@BigAcc} +\def\@acc#1{\check@staff + \inhgetn@i#1\relax\@BigAcc + \fi} \def\@BigAcc{\pl@base\raise\y@i\llap{\musixchar\n@v\kern\accshift}} \def\bigfl{\n@v\@l \@acc} @@ -191,16 +193,23 @@ \def\bigdsh{\n@v\@liii \@acc} \def\bigna{\n@v\@liv \@acc} -\def\@smallacc#1{\inhgetn@i#1\relax\n@iv\fiv@ \@SmallACC} -\def\@SmallACC{\pl@base\raise\y@i\llap{\@SmallAcc\kern\accshift}} -\def\@SmallAcc{\ifcautionacc\C@ChaR \fi \musixchar\n@v - \ifcautionacc\kern.3\qn@width \fi\global\cautionaccfalse} +\def\@smallacc#1{\check@staff + \inhgetn@i#1\relax\n@iv\fiv@ \@SmallACC + \fi} +\def\@SmallACC{\check@staff + \pl@base\raise\y@i\llap{\@SmallAcc\kern\accshift}\fi} +\def\@SmallAcc{\check@staff + \ifcautionacc\C@ChaR \fi \musixchar\n@v + \ifcautionacc\kern.3\qn@width \fi + \fi\global\cautionaccfalse} \def\smallna{\n@v94\@smallacc} \def\smallfl{\n@v90\@smallacc} \def\smallsh{\n@v92\@smallacc} \def\smalldsh{\n@v93\@smallacc} -\def\smalldfl#1{\n@v91\inhgetn@i#1\relax\n@iv\si@ \@SmallACC} +\def\smalldfl#1{\check@staff + \n@v91\inhgetn@i#1\relax\n@iv\si@ \@SmallACC + \fi} \def\csh{\cautionacctrue\smallsh} \def\cdsh{\cautionacctrue\smalldsh} @@ -256,7 +265,9 @@ % \n@ii positive signature limit, \n@ii-8 negative signature limit \advance\n@ii-\a@s \advance\n@ii\si@ \divide\n@ii\s@v@n \n@iv\fiv@} -\def\C@aacc{\advance\n@v\n@vi \@Ti} +\def\C@aacc{\check@staff + \advance\n@v\n@vi \@Ti + \fi } \def\@Flat#1{\sign@diff#1\relax \ifcase\n@ii \n@v\@liv \or\n@v\@l \or\n@v\@li \fi \C@aacc} @@ -621,9 +632,11 @@ \def\zmidtwotext{\zmidstaff} \def\lmidtwotext{\let\@Ti\hss \let\@Tii\empty \C@midcpt} -\def\C@midcpt#1{\y@v\interportee \advance\y@v\f@ur\Interligne \divide\y@v\tw@ +\def\C@midcpt#1{\check@staff + \y@v\interportee \advance\y@v\f@ur\Interligne \divide\y@v\tw@ \raise\y@v\uplap{\hbox\@to\noteskip{\@Ti\strut#1\@Tii}\vss}% - \advance\locx@skip\noteskip} + \advance\locx@skip\noteskip + \fi} % for what ? diff --git a/Master/texmf-dist/tex/generic/musixtex/musixdat.tex b/Master/texmf-dist/tex/generic/musixtex/musixdat.tex index fda6ebd8f7c..16541a6e5c9 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixdat.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixdat.tex @@ -16,7 +16,7 @@ % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXDATes 0.36\space<1 March 1995>}% +\immediate\write16{MusiXDATes 0.36\space<1 March 1995>}% \ifx\undefined\dategerman \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixdbr.tex b/Master/texmf-dist/tex/generic/musixtex/musixdbr.tex new file mode 100644 index 00000000000..2ad82ca6620 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musixtex/musixdbr.tex @@ -0,0 +1,250 @@ +\ifx\indivbarrules\undefined\else\endinput\fi + +\immediate\write10{MusiXDashed and Dotted BaRlines 1.0\space<23 February 2002>}% +% by Rainer Dunker +% Ideas and code based on musixbar.tex +% by Mthimkhulu Molekwa + +\makeatletter + +\newdimen\barline@depth + +\def\barlinedash#1{\vskip.5\Internote + \hrule\@width#1\@height\Internote + \vskip.5\Internote} +\def\barlinedots#1{\vskip.5\Internote + \hbox to #1{\hss\tenrm.\hss} + \vskip.5\Internote} + +\def\rul@indiv#1{% + \n@loop + \Comp@High + \multiply\barline@depth -1\relax + \advance\barline@depth\altitude + \expandafter\ifx\csname s@b\romannumeral\noinstrum@nt\endcsname\relax + % normal barline below instrument + \raise\altitude\rlap{\vrule\@depth\barline@depth\@width#1\@height0pt }% + \else + \expandafter\ifx\csname s@b\romannumeral\noinstrum@nt\endcsname 2% + % dashed barline below instrument + \raise\altitude\hbox{% + \lower\barline@depth\rlap{% + \vbox to \barline@depth{% + \xleaders\vbox{\barlinedash{#1}}\vfill}}}% + \else + \expandafter\ifx\csname s@b\romannumeral\noinstrum@nt\endcsname 3% + % dotted barline below instrument + \raise\altitude\hbox{% + \lower\barline@depth\rlap{% + \vbox to \barline@depth{% + \xleaders\vbox{\barlinedots{#1}}\vfill}}}% + \fi + \fi + \fi + \ifnum\st@ffs>1 % multi-staff instrument + \multi@instrum@bars{#1}% + \else % single-staff instrument + \expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname\relax + % normal barline through instrument + \raise\altitude\rlap{\vrule\@depth0pt \@width#1\@height\y@v}% + \else + \expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname 2% + % dashed barline through instrument + \raise\altitude\rlap{% + \vbox to \y@v{% + \cleaders\vbox to 2\internote{\vss + \hrule\@width#1\@height\internote + \vss}% + \vfill}}% + \else + \expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname 3% + % dotted barline through instrument + \raise\altitude\rlap{% + \vbox to \y@v{% + \cleaders\vbox to 2\internote{\vss + \hbox to #1{\hss\tenrm.\hss}% + \vss}% + \vfill}}% + \fi + \fi + \fi + \fi + \barline@depth\altitude + \advance\barline@depth\y@v + \repeat + \addspace#1} + +\def\multi@instrum@bars#1{% + \begingroup + % retrieve staff height + \count@=\nblines \advance\count@ -1 \multiply\count@ 2 + \dimen@=\count@\internote + \p@loop + % barline within staff + \expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname\relax + % normal barline through staff + \raise\altportee\rlap{\vrule\@depth0pt \@width#1\@height\dimen@}% + \else + \expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname 2% + % dashed barline through staff + \raise\altportee\rlap{% + \vbox to \dimen@{% + \cleaders\vbox to 2\internote{\vss + \hrule\@width#1\@height\internote + \vss}% + \vfill}}% + \else + \expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname 3% + % dotted barline through staff + \raise\altportee\rlap{% + \vbox to \dimen@{% + \cleaders\vbox to 2\internote{\vss + \hbox to #1{\hss\tenrm.\hss}% + \vss}% + \vfill}}% + \fi + \fi + \fi + \count@portee + % barline above staff + \ifnum\noport@@<\st@ffs % not for topmost staff + \barline@depth\interportee + \advance\barline@depth -\dimen@ + \raise\altportee\hbox{\raise\dimen@\rlap{% + \expandafter\ifx\csname s@mb\romannumeral\noinstrum@nt\endcsname + \relax + % normal barline + \vrule\@height\barline@depth\@width#1\relax + \else + \expandafter\ifx\csname s@mb\romannumeral\noinstrum@nt\endcsname 2% + % dashed barline + \vbox to \barline@depth{% + \xleaders\vbox{\barlinedash{#1}}\vfill}% + \else + \expandafter\ifx\csname s@mb\romannumeral\noinstrum@nt\endcsname + 3% dotted barline + \vbox to \barline@depth{% + \xleaders\vbox{\barlinedots{#1}}\vfill}% + \fi + \fi + \fi}}% + \fi + \repeat + \endgroup} + + +% Activate individual barline processing +\def\indivbarrules{% + \let\writ@rule\rul@indiv + \sepbarrule 1} + +%== separates bar line of specified instrument from one of previous instrument +\def\sepbarrule#1{\expandafter\let\csname s@b\romannumeral#1\endcsname 1} + +%== connects bar line of specified instrument to one of previous instrument +% with dashed line +\def\condashbarrule#1{% + \ifnum#1>1 \expandafter\let\csname s@b\romannumeral#1\endcsname 2\fi} + +%== connects bar line of specified instrument to one of previous instrument +% with dotted line +\def\condotbarrule#1{% + \ifnum#1>1 \expandafter\let\csname s@b\romannumeral#1\endcsname 3\fi} + +%== connects bar line of specified instrument to one of previous instrument +\def\conbarrule#1{% + \ifnum#1>1 \expandafter\let\csname s@b\romannumeral#1\endcsname\relax\fi} + +%== hides bar line for specified instrument +\def\hidebarrule#1{\expandafter\let\csname h@bl\romannumeral#1\endcsname 1} + +%== dashes bar line for specified instrument +\def\showdashbarrule#1{\expandafter\let\csname h@bl\romannumeral#1\endcsname 2} + +%== dots bar line for specified instrument +\def\showdotbarrule#1{\expandafter\let\csname h@bl\romannumeral#1\endcsname 3} + +%== shows bar line for specified instrument +\def\showbarrule#1{\expandafter\let\csname h@bl\romannumeral#1\endcsname\relax} + +%== separates bar line within multistaff instrument +\def\sepmultibarrule#1{\expandafter\let\csname s@mb\romannumeral#1\endcsname 1} + +%== dashes bar line between staves of multistaff instrument +\def\condashmultibarrule#1{% + \expandafter\let\csname s@mb\romannumeral#1\endcsname 2} + +%== dots bar line between staves of multistaff instrument +\def\condotmultibarrule#1{% + \expandafter\let\csname s@mb\romannumeral#1\endcsname 3} + +%== shows bar line between staves of multistaff instrument +\def\conmultibarrule#1{% + \expandafter\let\csname s@mb\romannumeral#1\endcsname\relax} + +% set barlines for all instruments together +\def\allbarrules#1{\n@loop#1\noinstrum@nt\repeat} + + +\makeatother +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Here comes an example of how to use these macros + +\input musixtex +\input musixdbr + +\instrumentnumber4 +\setstaffs23 +\setstaffs32 +\setlines14 +\setsize2\tinyvalue + +\indivbarrules + +\startpiece + % normal barlines + \bar + % barlines on staves + \allbarrules\sepbarrule + \allbarrules\sepmultibarrule + \allbarrules\showbarrule + \bar + % barlines between staves + \allbarrules\conbarrule + \allbarrules\conmultibarrule + \allbarrules\hidebarrule + \bar + % dashed barlines on staves + \allbarrules\sepbarrule + \allbarrules\sepmultibarrule + \allbarrules\showdashbarrule + \bar + % dashed barlines between staves + \allbarrules\condashbarrule + \allbarrules\condashmultibarrule + \allbarrules\hidebarrule + \bar + % dotted barlines on staves + \allbarrules\sepbarrule + \allbarrules\sepmultibarrule + \allbarrules\showdotbarrule + \bar + % dotted barlines between staves + \allbarrules\condotbarrule + \allbarrules\condotmultibarrule + \allbarrules\hidebarrule + \bar + % a wild mixture of all + \showdotbarrule1\hidebarrule2\showdashbarrule3\showbarrule4% + \condashbarrule2\conbarrule3\condotbarrule4% + \condashmultibarrule2\sepmultibarrule3% + \bar + % conventional ending + \allbarrules\showbarrule + \allbarrules\conbarrule + \allbarrules\conmultibarrule +\Endpiece +\bye diff --git a/Master/texmf-dist/tex/generic/musixtex/musixdia.tex b/Master/texmf-dist/tex/generic/musixtex/musixdia.tex index 87120f00b47..05839eea01f 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixdia.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixdia.tex @@ -17,7 +17,7 @@ % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXDIAmond T.40\space<12 September 1995>}% +\immediate\write16{MusiXDIAmond T.40\space<12 September 1995>}% \ifx\undefined\dqu \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixeng.tex b/Master/texmf-dist/tex/generic/musixtex/musixeng.tex index 747fdf691e0..0f35e0984b5 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixeng.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixeng.tex @@ -19,7 +19,7 @@ % suggested by Ross Mitchell -\immediate\write10{MusiX ENGlish rests T.404\space<31 October 1995>}% +\immediate\write16{MusiX ENGlish rests T.404\space<31 October 1995>}% \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 diff --git a/Master/texmf-dist/tex/generic/musixtex/musixesf.tex b/Master/texmf-dist/tex/generic/musixtex/musixesf.tex new file mode 100644 index 00000000000..0fa6fd0829e --- /dev/null +++ b/Master/texmf-dist/tex/generic/musixtex/musixesf.tex @@ -0,0 +1,79 @@ +%% +%% musixesf.tex : efont-serif series fonts definition for MusiXTeX +%% +%% usage: +%% \input musixtex +%% \input musixesf +%% ... +%% +%% This file is public domain. +%% +%% Author: +%% Hiroaki MORIMOTO +%% Tokyo, Japan +%% URL(en): http://homepage1.nifty.com/kuuku/pub/musixtex/index-e.html +%% (jp): http://homepage1.nifty.com/kuuku/pub/musixtex/index.html +%% +%% reference: musixtex.tex (T.99) 268-508 +%% MusiXTeX: (c) Daniel Taupin, et al. +%% +%% efont-serif: +%% (c) /efont/ +%% The Electronic Font Open Laboratory +%% http://openlab.ring.gr.jp/efont/dist/serif/efont-serif-tex-20010312-p3.tar.gz +%% http://openlab.ring.gr.jp/efont/serif/index.html.en +%% http://openlab.ring.gr.jp/efont/index.html.en +%% +%% History: see trailer. +% +\immediate\write16{MusiXTeX efont-serif\space<2009/10/15>} +% +% 8pt roman, bold, and italic +\font\eightrm=esfr7t at 8pt +\font\eightbf=esfb7t at 8pt +\font\eightit=esfri7t at 8pt +% +% 9pt +\font\ninerm=esfr7t at 9pt +\font\ninebf=esfb7t at 9pt +\font\nineit=esfri7t at 9pt +% +% 10pt +\font\tenrm=esfr7t +\font\tenbf=esfb7t +\font\tenit=esfri7t +% +% 12pt +\font\twelverm=esfr7t scaled \magstep 1 +\font\twelvebf=esfb7t scaled \magstep 1 +\font\twelveit=esfri7t scaled \magstep 1 +% +% Large fonts for titles +% (If you prefer efont-serif-bold, use esfb7t instead of esfr7t) +\font\bigfont=esfr7t scaled \magstep2 % 14pt +\font\Bigfont=esfr7t scaled \magstep3 % 17pt +\font\BIgfont=esfr7t scaled \magstep4 % 20pt +\font\BIGfont=esfr7t scaled \magstep5 % 25pt +% +% PMX changes font assignment in pmx.tex +% \BIGfont=\fontid bx10 scaled\magstep4 +% \Bigfont=\fontid bx10 scaled\magstep2 +\ifx\pmxversion\undefined\relax\else + \font\Bigfont=esfr7t scaled \magstep2 % 14pt + \font\BIGfont=esfr7t scaled \magstep4 % 20pt +\fi +% +\normtype +\endinput +%% +%% History +%% +%% 2006/05/13 +%% first publish +%% 2007/06/11 +%% no functional change. (email protection, real address change, URL change) +%% 2008/08/01 +%% Font assignment change on PMX. +%% 2009/10/15 +%% small update for MusiXTeX T.114 final release. +%% diff --git a/Master/texmf-dist/tex/generic/musixtex/musixevo.tex b/Master/texmf-dist/tex/generic/musixtex/musixevo.tex index 64fc9881ae5..dd6c1e5ffc7 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixevo.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixevo.tex @@ -1,4 +1,4 @@ -\immediate\write10{MusiXEVenOdd T.53\space<1 April 1996>}% +\immediate\write16{MusiXEVenOdd T.53\space<1 April 1996>}% % enables diff --git a/Master/texmf-dist/tex/generic/musixtex/musixext.tex b/Master/texmf-dist/tex/generic/musixtex/musixext.tex index a68d2a2053d..4f95d9eacc6 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixext.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixext.tex @@ -16,7 +16,7 @@ % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXEXTra 0.36\space<1 March 1995>}% +\immediate\write16{MusiXEXTra 0.36\space<1 March 1995>}% \ifx\undefined\centerskip \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixfll.tex b/Master/texmf-dist/tex/generic/musixtex/musixfll.tex index 532a296eccb..7cb9e44faec 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixfll.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixfll.tex @@ -19,7 +19,7 @@ \ifx\undefined\longledgerlines \else \endinput \fi -\immediate\write10{MusiXFormerLedgerLines T.74\space<06 April 1997>}% +\immediate\write16{MusiXFormerLedgerLines T.74\space<06 April 1997>}% \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 diff --git a/Master/texmf-dist/tex/generic/musixtex/musixgre.tex b/Master/texmf-dist/tex/generic/musixtex/musixgre.tex index eb5e02f1c51..a7272fb30ce 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixgre.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixgre.tex @@ -16,7 +16,7 @@ % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXGREgorian T.67\space<3 January 1997>}% +\immediate\write16{MusiXGREgorian T.67\space<3 January 1997>}% \ifx\undefined\gregorianCclef \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixgui.tex b/Master/texmf-dist/tex/generic/musixtex/musixgui.tex index 569e21d2a29..103360b2694 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixgui.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixgui.tex @@ -16,7 +16,7 @@ % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXGUItar 0.36\space<1 March 1995>}% +\immediate\write16{MusiXGUItar 0.36\space<1 March 1995>}% \ifx\undefined\guitar \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixhor.tex b/Master/texmf-dist/tex/generic/musixtex/musixhor.tex index 7b603966f30..fbc73393e1b 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixhor.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixhor.tex @@ -21,7 +21,7 @@ \input musixsty.tex \fi -\immediate\write10{MusiXtextSTYle-horizontal T.98\space<21 October 1999>}% +\immediate\write16{MusiXtextSTYle-horizontal T.98\space<21 October 1999>}% \vsize=185mm \hsize=275mm @@ -29,6 +29,7 @@ \advance\hoffset -\hsize \divide\hoffset 2\relax \advance\hoffset -2.54cm +\voffset -3mm \tenpoint \def\horizontalscore{\relax} %%%%%%%%%%%%%%%%%%%%%%%%% local adjust to be tuned %%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/generic/musixtex/musixhou.tex b/Master/texmf-dist/tex/generic/musixtex/musixhou.tex index bdf07ab6549..d0eb65d23b1 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixhou.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixhou.tex @@ -17,7 +17,7 @@ % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXHOUsestyles T.64\space<8 October 1996>}% +\immediate\write16{MusiXHOUsestyles T.64\space<8 October 1996>}% \ifx\undefined\Metron \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixlex.tex b/Master/texmf-dist/tex/generic/musixtex/musixlex.tex new file mode 100644 index 00000000000..7d243763c80 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musixtex/musixlex.tex @@ -0,0 +1,1201 @@ +\begin{theindex} + + \item {\tt\char37}, 12 + \item *, 34 + \item \&, 6, 16, 82 + \item \^{}M, 99 + \item {\tt\char'174}, 6, 81, 82 + + \indexspace + + \item {\tt a4wide}, 81 + \item {\Bslash AB}, 96 + \item {\Bslash absoluteaccid}, 38 + \item {\Bslash accshift}, 35 + \item acute accent, 35 + \item {\Bslash addspace}, 34 + \item {\Bslash afterruleskip}, 22, 34 + \item {\Bslash akkoladen}, 20 + \item {\Bslash alaligne}, 10, 12, 49, 52, 63, 84 + \item {\Bslash alapage}, 10, 12, 49, 52, 63, 84 + \item {\Bslash allabreve}, 18 + \item {\Bslash altitude}, 68 + \item {\Bslash alto}, 18 + \item alto clef, 18, 51 + \item {\Bslash altplancher}, 68 + \item {\Bslash altportee}, 68 + \item anonymous ftp, 99 + \item apostropha, 87 + \item {\Bslash apostropha}, 87 + \item apostropha aucta, 87 + \item {\Bslash apostropha aucta}, 87 + \item {\Bslash arithmeticskipscale}, 22 + \item {\Bslash arpeggio}, 58 + \item {\Bslash atnextline}, 63, 69 + \item {\Bslash AUF}, 96 + \item {\Bslash author}, 97 + \item author names, 96 + \item {\Bslash autoledgerlines}, 86 + \item {\Bslash autolines}, 12, 84 + + \indexspace + + \item {\sc Bach, J.S.}, 104 + \item {\Bslash backturn}, 60 + \item {\Bslash bar}, 45, 49, 52, 53 + \item {\Bslash bar} \ital{(original meaning)}, 45 + \item bar numbering, 45 + \item {\Bslash barno}, 46 + \item {\Bslash barnumbers}, 46 + \item baroque, 62 + \item {\Bslash barre}, 83 + \item {\Bslash barsinline}, 84 + \item {\Bslash bass}, 18 + \item bass clef, 18, 51 + \item {\Bslash basslowoct}, 78 + \item {\Bslash bassoct}, 78 + \item beams, 8, 17 + \item {\Bslash beforeruleskip}, 22, 34 + \item {\Bslash begin{\tt \char '173}bigmusic{\tt \char '175}}, 81 + \item {\Bslash begin{\tt \char '173}music{\tt \char '175}}, 70 + \item {\Bslash bf}, 56, 96 + \item {\Bslash bigaccid}, 35 + \item {\Bslash bigfl}, 35 + \item Big\LaTeX, 81, 82 + \item {\Bslash biglbrace}, 84 + \item {\Bslash bigrbrace}, 84 + \item {\Bslash bigsh}, 35 + \item Big\TeX, 82 + \item {\Bslash BIGtype}, 56 + \item {\Bslash BIgtype}, 56 + \item {\Bslash Bigtype}, 56 + \item {\Bslash bigtype}, 56 + \item {\Bslash bistropha}, 88 + \item {\Bslash bivirga}, 88 + \item {\Bslash blppz}, 58 + \item {\Bslash blpz}, 58 + \item {\Bslash blsf}, 58 + \item {\Bslash blsfz}, 58 + \item {\Bslash blst}, 58 + \item {\Bslash bltext}, 58 + \item {\Bslash boxit}, 46, 54 + \item {\Bslash boxitsep}, 54 + \item {\Bslash bporrectus}, 90 + \item {\Bslash braceheight}, 84 + \item {\Bslash bracket}, 62 + \item {\sc Brahms, J.}, 30, 51 + \item {\Bslash breakslur}, 43 + \item {\Bslash breath}, 60 + \item breathing, 60 + \item {\Bslash breve}, 23 + \item {\sc Brouard, N.}, 81 + \item {\Bslash bsk}, 33 + \item {\Bslash buppz}, 58 + \item {\Bslash bupz}, 58 + \item {\Bslash busf}, 58 + \item {\Bslash busfz}, 58 + \item {\Bslash bust}, 58 + \item {\Bslash butext}, 58 + \item {\Bslash bye}, 21, 50 + + \indexspace + + \item {\Bslash ca}, 23 + \item cadenzas, 64 + \item {\Bslash caesura}, 61 + \item {\Bslash catcode}, 16, 81, 82 + \item {\Bslash catcodes}, 81 + \item {\Bslash catcodesmusic}, 82 + \item cautionary accidental, 35 + \item {\Bslash cbreath}, 60 + \item {\Bslash cca}, 23 + \item {\Bslash ccca}, 24 + \item {\Bslash ccccca}, 84 + \item {\Bslash cccccl}, 84 + \item {\Bslash cccccu}, 84 + \item {\Bslash ccccl}, 24 + \item {\Bslash cccclp}, 96 + \item {\Bslash cccclpp}, 96 + \item {\Bslash ccccu}, 24 + \item {\Bslash ccccup}, 96 + \item {\Bslash ccccupp}, 96 + \item {\Bslash cccl}, 24 + \item {\Bslash ccclp}, 96 + \item {\Bslash ccclpp}, 96 + \item {\Bslash cccu}, 23 + \item {\Bslash cccup}, 96 + \item {\Bslash cccupp}, 96 + \item {\Bslash cchar}, 55, 71 + \item {\Bslash ccharnote}, 54, 55 + \item {\Bslash ccl}, 23 + \item {\Bslash cclp}, 96 + \item {\Bslash cclpp}, 96 + \item {\Bslash ccu}, 23 + \item {\Bslash ccup}, 96 + \item {\Bslash ccupp}, 96 + \item {\Bslash cdfl}, 35 + \item {\Bslash cdsh}, 35 + \item {\Bslash centerbar}, 32 + \item {\Bslash centerhpause}, 32 + \item {\Bslash centerPAUSe}, 32 + \item {\Bslash centerPAuse}, 32 + \item {\Bslash centerpause}, 32 + \item {\Bslash cfl}, 35 + \item {\Bslash changeclefs}, 51 + \item {\Bslash Changecontext}, 51, 52 + \item {\Bslash changecontext}, 34, 49, 51, 52 + \item {\Bslash changesignature}, 51 + \item {\Bslash chl}, 94 + \item chords, 17 + \item {\Bslash ChroirStrut}, 85 + \item {\Bslash chu}, 94 + \item {\Bslash circleit}, 54 + \item {\Bslash cl}, 23, 65 + \item clef d'ut, 17, 51 + \item clef de fa, 17, 51 + \item clef de sol, 17, 51 + \item clefs (empty), 77 + \item {\Bslash climacus}, 90 + \item {\Bslash climacusauctdown}, 92 + \item {\Bslash climacusdeminut}, 93 + \item {\Bslash climacusresupinus}, 90 + \item {\Bslash clivis}, 88 + \item {\Bslash clivisauctdown}, 91 + \item {\Bslash clivisauctup}, 91 + \item {\Bslash clivisdeminut}, 92 + \item {\Bslash clp}, 26 + \item {\Bslash clpp}, 26 + \item {\Bslash clppp}, 97 + \item {\Bslash cmidstaff}, 55 + \item {\Bslash cna}, 35 + \item {\Bslash cnhl}, 94 + \item {\Bslash cnhu}, 94 + \item {\Bslash cnql}, 94 + \item {\Bslash cnqu}, 94 + \item {\Bslash Coda}, 54 + \item {\Bslash coda}, 54 + \item {\Bslash Contpiece}, 49 + \item {\Bslash contpiece}, 49, 52, 69 + \item {\Bslash cql}, 94 + \item {\Bslash cqu}, 94 + \item {\Bslash crescendo}, 61 + \item crescendos, 103 + \item {\Bslash csh}, 35 + \item {\Bslash csong}, 72 + \item {\Bslash cu}, 23, 65 + \item {\Bslash cup}, 26 + \item {\Bslash cupp}, 26 + \item {\Bslash cuppp}, 97 + \item {\Bslash curve}, 42 + + \indexspace + + \item {\Bslash dateaustrian}, 85 + \item {\Bslash dateenglish}, 85 + \item {\Bslash datefrench}, 85 + \item {\Bslash dategerman}, 85 + \item {\Bslash dateUSenglish}, 85 + \item {\Bslash dccccl}, 85 + \item {\Bslash dccccu}, 85 + \item {\Bslash dcccl}, 85, 95 + \item {\Bslash dcccu}, 85, 95 + \item {\Bslash dccl}, 85, 95 + \item {\Bslash dccu}, 85, 95 + \item {\Bslash dcl}, 85 + \item {\Bslash dclp}, 85 + \item {\Bslash dclpp}, 85 + \item {\Bslash dcqb}, 95 + \item {\Bslash dcql}, 95 + \item {\Bslash dcqu}, 95 + \item {\Bslash dcu}, 85 + \item {\Bslash dcup}, 85 + \item {\Bslash dcupp}, 85 + \item {\Bslash dczq}, 95 + \item {\sc Debussy, C.}, 103 + \item {\Bslash debutmorceau}, 83 + \item {\Bslash decrescendo}, 61 + \item default values, 70 + \item {\Bslash demisoupir}, 84 + \item {\Bslash DEP}, 59, 60 + \item {\Bslash Dep}, 60 + \item {\Bslash dfl}, 34, 37 + \item {\Bslash dgroff}, 88 + \item {\Bslash dhccl}, 95 + \item {\Bslash dhccu}, 95 + \item {\Bslash dhcl}, 95 + \item {\Bslash dhcu}, 95 + \item {\Bslash dhqb}, 95 + \item {\Bslash dhql}, 95 + \item {\Bslash dhqu}, 95 + \item {\Bslash dhsong}, 73 + \item {\Bslash dhzq}, 95 + \item {\Bslash diapunc}, 87 + \item {\Bslash diapunctumauctdown}, 87 + \item dictionnaire, 5 + \item {\Bslash dimen}, 15 + \item distribution, 14 + \item {\Bslash dnq}, 85 + \item {\Bslash doccl}, 95 + \item {\Bslash doccu}, 95 + \item {\Bslash docl}, 95 + \item {\Bslash docu}, 95 + \item {\Bslash documentstyle}, 81 + \item {\Bslash doqb}, 95 + \item {\Bslash doql}, 95 + \item {\Bslash doqu}, 95 + \item {\Bslash dotted}, 41 + \item {\Bslash doublebar}, 49 + \item {\Bslash doublethumb}, 62 + \item {\Bslash downbow}, 57, 96 + \item {\Bslash downtrio}, 62 + \item {\Bslash dozq}, 95 + \item dpi, 100 + \item {\Bslash dqb}, 85 + \item {\Bslash Dqbbl}, 31 + \item {\Bslash Dqbbu}, 31 + \item {\Bslash Dqbl}, 31 + \item {\Bslash Dqbu}, 31 + \item {\Bslash dql}, 85 + \item {\Bslash dqlp}, 85 + \item {\Bslash dqlpp}, 85 + \item {\Bslash dqu}, 85 + \item {\Bslash dqup}, 85 + \item {\Bslash dqupp}, 85 + \item {\Bslash Drtx}, 84 + \item drum clef, 78 + \item {\Bslash drumclef}, 78, 95 + \item {\Bslash ds}, 31, 86 + \item {\Bslash dsh}, 34, 37 + \item {\Bslash dsoupir}, 84 + \item {\Bslash Dtx}, 84 + \item {\Bslash duevolte}, 55 + \item {\Bslash Dwr}, 86 + \item {\Bslash dznq}, 85 + \item {\Bslash dzq}, 85 + \item {\Bslash dzqp}, 85 + \item {\Bslash dzqpp}, 85 + + \indexspace + + \item {\Bslash eeeer}, 86 + \item {\Bslash eeer}, 86 + \item {\Bslash eer}, 86 + \item {\Bslash eightpoint}, 96 + \item {\Bslash eject}, 49, 50 + \item {\Bslash elemskip}, 9, 21, 22, 34, 50 + \item em\TeX, 82 + \item {\Bslash en}, 6 + \item {\Bslash end}, 21 + \item {\Bslash endcatcodesmusic}, 82 + \item {\Bslash endextract}, 70, 82 + \item {\Bslash endmuflex}, 21 + \item {\Bslash Endpiece}, 10, 49, 83 + \item {\Bslash endpiece}, 10, 49, 52, 69, 82, 83 + \item {\Bslash endvolta}, 54 + \item {\Bslash endvoltabox}, 54 + \item {\Bslash end{\tt \char '173}music{\tt \char '175}}, 70 + \item {\Bslash enotes}, 6 + \item {\Bslash er}, 86 + \item {\Bslash everystaff}, 63 + \item {\Bslash extractline}, 70 + + \indexspace + + \item {\Bslash f}, 61 + \item FAQ, 98 + \item fermata, 60 + \item {\Bslash Fermatadown}, 60 + \item {\Bslash fermatadown}, 60 + \item {\Bslash Fermataup}, 60 + \item {\Bslash fermataup}, 60 + \item {\Bslash ff}, 61 + \item {\Bslash fff}, 61 + \item {\Bslash ffff}, 61 + \item {\Bslash finmorceau}, 83 + \item {\Bslash fl}, 34, 37 + \item {\Bslash flageolett}, 57 + \item flats, 18 + \item {\Bslash flushbottom}, 49 + \item {\Bslash fontbarno}, 46 + \item fonts, 100 + \item {\Bslash Footnote}, 97 + \item {\Bslash footnote}, 97 + \item footnotes, 97 + \item format, 100 + \item {\Bslash fp}, 61 + \item {\Bslash FR}, 96 + \item french violin clef, 18 + \item french.sty, 82 + \item {\tt french.sty}, 81 + \item {\Bslash freqbarno}, 45 + \item {\Bslash frtpoint}, 96 + \item full rest, 32 + \item {\Bslash fullauthor}, 97 + \item {\Bslash fulltitle}, 97 + + \indexspace + + \item {\sc Gaulle, B.}, 82 + \item {\Bslash GB}, 96 + \item {\Bslash Gb}, 96 + \item {\Bslash gbarre}, 93 + \item {\Bslash gdot}, 93 + \item general staff size, 65 + \item {\Bslash generalmeter}, 18, 19 + \item {\Bslash generalsignature}, 13, 18, 38, 49, 50 + \item {\Bslash geometricskipscale}, 22 + \item glossaire, 5 + \item glossary, 5 + \item {\sc Gounod, C.}, 66, 103 + \item {\sc Gouzes, A.}, 104 + \item grave accent, 35 + \item {\Bslash grcl}, 65 + \item {\Bslash grcu}, 65 + \item gregorian clefs, 76 + \item gregorian music, 69, 76, 86 + \item {\Bslash gregorianCclef}, 87 + \item {\Bslash gregorianFclef}, 87 + \item {\sc Grieg, E.}, 30 + \item {\Bslash groff}, 88 + \item {\Bslash groupbottom}, 19 + \item {\Bslash grouptop}, 19 + \item guillemets, 82 + \item {\Bslash guitar}, 93 + \item guitar tablature, 70 + \item guitar tablatures, 93 + \item GUTenberg, 82 + + \indexspace + + \item {\Bslash ha}, 23 + \item {\sc Haendel, G.F.}, 104 + \item half rest, 32 + \item hard spacing, 12, 34, 73 + \item hard width, 9 + \item {\Bslash hardlyrics}, 73, 104 + \item {\Bslash hardnotes}, 73 + \item {\Bslash hardspace}, 34, 71 + \item harmonic notes, 79 + \item {\sc Haydn, J.}, 64 + \item {\Bslash hb}, 29 + \item {\Bslash hbox}, 32 + \item {\Bslash hf}, 84 + \item {\Bslash Hidebarrule}, 47 + \item {\Bslash hidebarrule}, 47 + \item hihat, 95 + \item {\Bslash hl}, 21, 23, 25 + \item {\Bslash hloff}, 33 + \item {\Bslash Hlonga}, 95 + \item {\Bslash hlp}, 26 + \item {\Bslash hlpp}, 26 + \item {\Bslash hlppp}, 97 + \item {\Bslash hoffset}, 50, 96, 103 + \item {\Bslash Hpause}, 95 + \item {\Bslash hpause}, 31, 86 + \item {\Bslash hpausep}, 31, 86 + \item {\Bslash hqsk}, 33 + \item {\Bslash hr}, 86 + \item {\Bslash hroff}, 33 + \item {\Bslash hrp}, 86 + \item {\Bslash hs}, 31, 86 + \item {\Bslash hsize}, 50, 96 + \item {\Bslash hsk}, 30, 33 + \item {\Bslash hskip}, 33 + \item {\Bslash hsong}, 73 + \item {\Bslash hu}, 23 + \item {\Bslash hup}, 26 + \item {\Bslash hupp}, 26 + \item {\Bslash huppp}, 97 + + \indexspace + + \item {\Bslash Ibbbbbbl}, 84 + \item {\Bslash ibbbbbbl}, 84 + \item {\Bslash Ibbbbbbu}, 84 + \item {\Bslash ibbbbbbu}, 84 + \item {\Bslash Ibbbbbl}, 84 + \item {\Bslash ibbbbbl}, 84 + \item {\Bslash Ibbbbbu}, 84 + \item {\Bslash ibbbbbu}, 84 + \item {\Bslash Ibbbbl}, 31 + \item {\Bslash ibbbbl}, 26 + \item {\Bslash Ibbbbu}, 31 + \item {\Bslash ibbbbu}, 26 + \item {\Bslash Ibbbl}, 31 + \item {\Bslash ibbbl}, 26 + \item {\Bslash Ibbbu}, 31 + \item {\Bslash ibbbu}, 26, 27 + \item {\Bslash Ibbl}, 31 + \item {\Bslash ibbl}, 26 + \item {\Bslash Ibbu}, 31 + \item {\Bslash ibbu}, 26 + \item {\Bslash Ibl}, 31 + \item {\Bslash ibl}, 26, 27 + \item {\Bslash ibslurd}, 39 + \item {\Bslash ibsluru}, 39 + \item {\Bslash Ibu}, 31 + \item {\Bslash ibu}, 26 + \item {\sc Icking, W.}, 96 + \item {\Bslash icresc}, 61 + \item {\Bslash ignorenats}, 51 + \item INITEX, 100 + \item {\Bslash input}, 84, 103 + \item instrument, 17 + \item instrument number, 13 + \item {\Bslash instrumentnumber}, 17 + \item {\Bslash interbarrules}, 95 + \item {\Bslash interbeam}, 61, 68, 69 + \item {\Bslash interfacteur}, 69 + \item {\Bslash interinstrument}, 68, 69, 71, 72 + \item {\Bslash interinstrumentiii}, 68 + \item {\Bslash Interligne}, 67, 69 + \item {\Bslash Internote}, 67 + \item {\Bslash internote}, 67, 94 + \item {\Bslash interportee}, 68 + \item {\Bslash interportee+\tt \char '134interinstrument}, 68 + \item {\Bslash interstaff}, 68--70 + \item {\Bslash invertslur}, 43 + \item {\Bslash Ioctfindown}, 36 + \item {\Bslash ioctfindown}, 37 + \item {\Bslash Ioctfinup}, 36 + \item {\Bslash ioctfinup}, 37 + \item {\Bslash islurd}, 38, 39 + \item {\Bslash Islurdbreak}, 44 + \item {\Bslash isluru}, 38, 39 + \item {\Bslash Islurubreak}, 44 + \item {\Bslash isslurd}, 39 + \item {\Bslash issluru}, 39 + \item {\Bslash it}, 56, 96 + \item {\Bslash itenl}, 40 + \item {\Bslash itenu}, 40 + \item {\Bslash itied}, 39 + \item {\Bslash itieu}, 39 + \item {\Bslash ITrille}, 59 + \item {\Bslash Itrille}, 58 + \item {\Bslash itrille}, 59 + + \indexspace + + \item {\Bslash kccl}, 95 + \item {\Bslash kccu}, 95 + \item {\Bslash kcl}, 95 + \item {\Bslash kcu}, 95 + \item {\Bslash kern}, 33 + \item {\sc Kneifl, S.}, 100 + \item {\Bslash kqb}, 95 + \item {\Bslash kql}, 95 + \item {\Bslash kqu}, 95 + \item {\Bslash kzq}, 95 + + \indexspace + + \item {\Bslash Largemusicsize}, 17, 65, 70 + \item {\Bslash largemusicsize}, 17, 65, 70 + \item {\Bslash Largevalue}, 66 + \item {\Bslash largevalue}, 66 + \item {\Bslash larpeggio}, 58 + \item \LaTeX, 81 + \item \protect\LaTeX, 97 + \item {\Bslash lchar}, 55, 71 + \item {\Bslash lcharnote}, 55 + \item {\Bslash lcl}, 25 + \item {\Bslash lclimacus}, 90 + \item {\Bslash lclivis}, 89 + \item {\Bslash lcu}, 25 + \item {\Bslash ldfl}, 34 + \item {\Bslash ldsh}, 34 + \item ledger lines, 86 + \item {\Bslash leftrepeat}, 52, 53 + \item {\Bslash leftrightrepeat}, 52 + \item legal, 96 + \item {\Bslash let\tt \char '134extractline\tt \char '134hbox}, 70 + \item {\Bslash let\tt \char '134extractline\tt \char '134leftline}, + 70 + \item lexique, 5 + \item {\Bslash lfl}, 34 + \item {\Bslash lh}, 24 + \item {\Bslash lhl}, 25 + \item {\Bslash lhu}, 25 + \item {\Bslash lifthpause}, 32, 86 + \item {\Bslash lifthpausep}, 32 + \item {\Bslash lifthr}, 86 + \item lifting rests, 31 + \item {\Bslash Liftoctline}, 37 + \item {\Bslash liftpause}, 32, 86 + \item {\Bslash liftpausep}, 32 + \item {\Bslash Liftslur}, 43 + \item {\Bslash liftwr}, 86 + \item {\Bslash linegoal}, 11 + \item {\Bslash linesinpage}, 84 + \item liquescens neumes, 91 + \item {\Bslash llap}, 32 + \item {\Bslash lmidstaff}, 55 + \item {\Bslash lna}, 34 + \item {\Bslash loff}, 30, 33 + \item {\Bslash loffset}, 33 + \item {\Bslash longa}, 23 + \item {\Bslash longaa}, 23 + \item {\Bslash longledgerlines}, 86 + \item {\Bslash lpar}, 62 + \item {\Bslash lpodatus}, 89 + \item {\Bslash lpppt}, 97 + \item {\Bslash lppt}, 26 + \item {\Bslash lppz}, 57 + \item {\Bslash lpt}, 26 + \item {\Bslash lpz}, 57 + \item {\Bslash lpzst}, 57 + \item {\Bslash lq}, 24 + \item {\Bslash lql}, 25 + \item {\Bslash lqu}, 25 + \item {\Bslash lreprmorceau}, 83 + \item {\Bslash lsf}, 57 + \item {\Bslash lsfz}, 57 + \item {\Bslash lsh}, 34 + \item {\Bslash lsong}, 72 + \item {\Bslash lsqu}, 87 + \item {\Bslash lst}, 57 + \item {\Bslash lw}, 24 + \item lyrics, 68, 70, 82 + + \indexspace + + \item mailing list, 98 + \item {\Bslash maketitle}, 97 + \item {\sc Marcello, B.}, 104 + \item {\Bslash maxbarsinline}, 84 + \item {\Bslash maxlinesinpage}, 84 + \item {\Bslash maxoctlines}, 36 + \item {\Bslash maxtrills}, 58 + \item {\Bslash medtype}, 56 + \item meter, 7, 18 + \item {\Bslash meterC}, 18 + \item {\Bslash meterplus}, 18 + \item {\Bslash meterskip}, 19 + \item Metric (TFM) not found, 100 + \item {\Bslash metron}, 57 + \item {\Bslash mf}, 61 + \item {\Bslash MI}, 96 + \item {\Bslash Mi}, 96 + \item {\Bslash midslur}, 41 + \item {\Bslash Mordent}, 60 + \item {\Bslash mordent}, 60 + \item {\sc Mozart, W.A.}, 8 + \item {\Bslash mp}, 61 + \item MS-DOS, 14, 99, 102 + \item {\Bslash mulooseness}, 10, 11, 13, 50, 73, 76 + \item {\Bslash multnoteskip}, 22 + \item musical footnotes, 70 + \item {\Bslash musicparskip}, 50 + \item {\tt musixadd.tex}, 38 + \item {\tt musixadd.tex}, 16 + \item {\tt musixblx.tex}, 81 + \item {\tt musixcpt.tex}, 12, 59, 62, 83 + \item {\tt musixdat.tex}, 85 + \item {\tt musixdoc\underscoreSymbol lj.zip}, 99 + \item {\tt musixdoc\underscoreSymbol ps.zip}, 99 + \item {\tt musixexa.zip}, 99, 103 + \item {\tt musixfll.tex}, 86 + \item {\tt musixflx}, 11, 12, 22 + \item {\tt musixgui.tex}, 93 + \item {\tt musixltx.tex}, 81 + \item {\tt musixmad.tex}, 95 + \item {\tt musixper.tex}, 80 + \item {\tt musixpk.zip}, 99 + \item {\tt musixpk3.zip}, 99 + \item {\tt musixpk6.zip}, 99 + \item {\tt musixstr.tex}, 96 + \item {\tt musixsty.tex}, 96 + \item {\tt musixtex.sty}, 81 + \item {\tt musixtex.tex}, 16 + \item {\tt musixtri.tex}, 97 + \item \protect\mutex, 15 + \item {\Bslash mxversion}, 83 + + \indexspace + + \item {\Bslash na}, 34, 37 + \item name of the instrument, 19 + \item name of the voice, 19 + \item {\Bslash nbbbbbbl}, 84 + \item {\Bslash nbbbbbbu}, 84 + \item {\Bslash nbbbbbl}, 84 + \item {\Bslash nbbbbbu}, 84 + \item {\Bslash nbbbbl}, 27 + \item {\Bslash nbbbbu}, 27 + \item {\Bslash nbbbu}, 27 + \item {\Bslash nbbl}, 27 + \item {\Bslash nbbu}, 27 + \item neumes, 76, 86, 88, 94 + \item newsgroups, 98 + \item {\Bslash nextinstrument}, 82 + \item {\Bslash nextstaff}, 82 + \item {\Bslash nh}, 25 + \item {\Bslash nobarmessage}, 47 + \item {\Bslash nobarnumbers}, 45 + \item {\Bslash nolinemessages}, 47 + \item {\Bslash normalbottom}, 49 + \item {\Bslash normalmusicsize}, 17, 22, 65, 70 + \item {\Bslash normalnotesize}, 64 + \item {\Bslash normaltranspose}, 35 + \item {\Bslash normalvalue}, 66, 67 + \item {\Bslash normtype}, 56 + \item {\Bslash nostartrule}, 18 + \item {\Bslash nostemcut}, 62 + \item {\Bslash NOTEs}, 21 + \item {\Bslash NOTes}, 21 + \item {\Bslash NOtes}, 21, 22 + \item {\Bslash Notes}, 21 + \item {\Bslash notes}, 21, 22 + \item {\Bslash noteskip}, 21, 23, 26, 31, 33, 34, 50, 83, 95 + \item {\Bslash NOTesp}, 21 + \item {\Bslash NOtesp}, 21 + \item {\Bslash Notesp}, 21 + \item {\Bslash notesp}, 21 + \item {\Bslash nq}, 25 + \item {\Bslash nspace}, 33 + + \indexspace + + \item octave clefs, 78 + \item octaviation, 35 + \item {\Bslash octfindown}, 36 + \item {\Bslash octfinup}, 36 + \item {\Bslash octnumber}, 36 + \item {\Bslash OD}, 96 + \item {\Bslash Od}, 96 + \item {\Bslash off}, 34 + \item {\Bslash OH}, 96 + \item {\Bslash Oh}, 96 + \item {\Bslash oldGclef}, 94 + \item oriscus, 87 + \item {\Bslash oriscus}, 87 + \item ornament codings, 62 + \item ornaments, 60, 64 + \item {\Bslash othermention}, 97 + \item {\Bslash ovbkt}, 62, 63 + \item {\Bslash oxccl}, 95 + \item {\Bslash oxccu}, 95 + \item {\Bslash oxcl}, 95 + \item {\Bslash oxcu}, 95 + \item {\Bslash oxqb}, 95 + \item {\Bslash oxql}, 95 + \item {\Bslash oxqu}, 95 + \item {\Bslash oxzq}, 95 + + \indexspace + + \item {\Bslash p}, 61 + \item page and line layout (global), 50 + \item {\Bslash parindent}, 19, 21, 49, 50 + \item {\Bslash parskip}, 49 + \item {\Bslash PAUSe}, 31, 86 + \item {\Bslash PAuse}, 31, 86 + \item {\Bslash pause}, 31, 86 + \item {\Bslash pausep}, 31, 86 + \item PC end of line coding, 99 + \item {\Bslash PED}, 59, 60 + \item {\Bslash Ped}, 60 + \item percussion music, 65, 69, 77, 80 + \item {\Bslash pesquassus}, 89 + \item {\Bslash pesquassusauctdown}, 91 + \item {\Bslash piececont}, 97 + \item {\Bslash Pizz}, 96 + \item {\Bslash podatus}, 89 + \item {\Bslash podatusauctdown}, 91 + \item {\Bslash podatusauctup}, 91 + \item {\Bslash podatusdeminut}, 92 + \item {\Bslash podatusinitiodebilis}, 89 + \item {\Bslash Porrectus}, 89 + \item {\Bslash Porrectusauctdown}, 92 + \item {\Bslash Porrectusdeminut}, 93 + \item {\Bslash Porrectusflexus}, 90 + \item portato, 57 + \item {\Bslash pp}, 61 + \item {\Bslash ppff}, 56 + \item {\Bslash ppffsixteen}, 56 + \item {\Bslash ppfftwenty}, 56 + \item {\Bslash ppfftwentyfour}, 56 + \item {\Bslash ppp}, 61 + \item {\Bslash pppp}, 61 + \item {\Bslash pppt}, 26 + \item {\Bslash ppt}, 26 + \item {\Bslash preprmorceau}, 83 + \item {\Bslash pt $p$}, 26 + \item punctum, 87 + \item {\Bslash punctum}, 87 + \item punctum auctum, 87 + \item punctum deminutum, 87 + \item {\Bslash punctumauctdown}, 87 + \item {\Bslash punctumauctup}, 87 + \item {\Bslash punctumdeminutum}, 87 + + \indexspace + + \item {\Bslash qa}, 23 + \item {\Bslash qb}, 21, 27 + \item {\Bslash qbp}, 26 + \item {\Bslash qbpp}, 26 + \item {\Bslash qbppp}, 97 + \item {\Bslash qh}, 83 + \item {\Bslash ql}, 23 + \item {\Bslash qlp}, 26 + \item {\Bslash qlpp}, 26 + \item {\Bslash qlppp}, 97 + \item {\Bslash qp}, 31, 86 + \item {\Bslash Qqbbl}, 31 + \item {\Bslash Qqbbu}, 31 + \item {\Bslash Qqbl}, 31 + \item {\Bslash Qqbu}, 31 + \item {\Bslash qqs}, 31, 86 + \item {\Bslash qr}, 86 + \item {\Bslash Qrtx}, 84 + \item {\Bslash qs}, 31, 86 + \item {\Bslash qsk}, 33, 34 + \item {\Bslash qsoupir}, 84 + \item {\Bslash qspace}, 33 + \item {\Bslash Qtx}, 84 + \item {\Bslash qu}, 21, 23 + \item quilisma, 87 + \item {\Bslash quilisma}, 87 + \item {\Bslash quilismapes}, 89 + \item {\Bslash quilismapesauctdown}, 92 + \item {\Bslash qup}, 26 + \item {\Bslash qupp}, 26 + \item {\Bslash quppp}, 97 + \item {\Bslash Qwr}, 86 + + \indexspace + + \item {\Bslash raggedbottom}, 49 + \item {\Bslash raggedstoppiece}, 86 + \item {\Bslash raise}, 31 + \item {\Bslash raisebarno}, 46 + \item {\Bslash raiseguitar}, 94 + \item {\Bslash raiseped}, 60 + \item {\Bslash raisevolta}, 54 + \item {\Bslash rcl}, 25 + \item {\Bslash rcu}, 25 + \item relative accidentals, 13 + \item {\Bslash relativeaccid}, 38 + \item {\Bslash relax}, 12 + \item repeated patterns, 29 + \item {\Bslash reprmorceau}, 83 + \item {\Bslash resetclefsymbols}, 76, 78 + \item {\Bslash resetlayout}, 70 + \item rest lifting, 31 + \item {\Bslash reverseallabreve}, 18 + \item {\Bslash reverseC}, 18 + \item {\Bslash rh}, 24 + \item {\Bslash rhl}, 25 + \item {\Bslash rhu}, 25 + \item {\Bslash rightrepeat}, 52, 53 + \item {\Bslash rlap}, 32 + \item {\Bslash rm}, 56, 96 + \item {\Bslash roccl}, 95 + \item {\Bslash roccu}, 95 + \item {\Bslash rocl}, 95 + \item {\Bslash rocu}, 95 + \item {\Bslash roff}, 30, 33 + \item {\Bslash roffset}, 33 + \item {\Bslash roqb}, 95 + \item {\Bslash roql}, 95 + \item {\Bslash roqu}, 95 + \item {\Bslash rozq}, 95 + \item {\Bslash rpar}, 62 + \item {\Bslash rq}, 24 + \item {\Bslash rql}, 25 + \item {\Bslash rqu}, 25 + \item {\Bslash rsqu}, 87 + \item {\Bslash rtx}, 84 + \item {\Bslash rw}, 24 + + \indexspace + + \item {\Bslash salicus}, 91 + \item {\Bslash salicusauctdown}, 92 + \item {\Bslash salicusflexus}, 91 + \item {\sc Satie, E.}, 104 + \item scalable dimension, 34 + \item scalable values, 34 + \item {\Bslash scale}, 22 + \item {\Bslash scalenoteskip}, 22 + \item {\Bslash scandicus}, 90 + \item {\Bslash scandicusauctdown}, 92 + \item {\Bslash scandicusdeminut}, 93 + \item {\sc Schofer, A.}, 15 + \item {\sc Schumann, R.}, 103 + \item {\Bslash sDEP}, 59, 60 + \item {\Bslash sDep}, 60 + \item {\Bslash Segno}, 54 + \item {\Bslash segno}, 54 + \item {\Bslash sepbarrules}, 47 + \item {\Bslash setaltoclefsymbol}, 76, 78, 87 + \item {\Bslash setbassclefsymbol}, 76, 78 + \item {\Bslash setclef}, 17, 18, 51, 63, 76 + \item {\Bslash setclefsymbol}, 77, 78 + \item {\Bslash setdoubleBAR}, 49 + \item {\Bslash setdoublebar}, 49 + \item {\Bslash setemptybar}, 49 + \item {\Bslash setendvolta}, 53 + \item {\Bslash setendvoltabox}, 53, 54 + \item {\Bslash setinterinstrument}, 68, 69, 71 + \item {\Bslash setleftrepeat}, 52 + \item {\Bslash setleftrightrepeat}, 52 + \item {\Bslash setlines}, 70 + \item {\Bslash setmeter}, 19, 52 + \item {\Bslash setname}, 19 + \item {\Bslash setrightrepeat}, 52 + \item {\Bslash setsign}, 13, 50 + \item {\Bslash setsign$n$}, 38 + \item {\Bslash setsize}, 66 + \item {\Bslash setsize$n$}, 67 + \item {\Bslash setsongraise}, 72 + \item {\Bslash setstaffs}, 17, 71 + \item {\Bslash settrebleclefsymbol}, 78 + \item {\Bslash Setvolta}, 53 + \item {\Bslash setvolta}, 53 + \item {\Bslash setvoltabox}, 54 + \item {\Bslash sF}, 61 + \item sforzando, 57 + \item {\Bslash sh}, 34, 37 + \item {\Bslash Shake}, 60 + \item {\Bslash shake}, 60 + \item {\Bslash Shakel}, 60 + \item {\Bslash Shakene}, 60 + \item {\Bslash Shakenw}, 60 + \item {\Bslash Shakesw}, 60 + \item sharps, 18 + \item {\Bslash shiftbarno}, 46 + \item {\Bslash shortauthor}, 97 + \item {\Bslash shortbarrules}, 95 + \item {\Bslash shorttitle}, 97 + \item {\Bslash showallbarrules}, 48 + \item {\Bslash Showbarrule}, 47 + \item {\Bslash showbarrule}, 47 + \item signatures, 17 + \item sizes, 17 + \item {\Bslash sk}, 24, 33, 34 + \item {\Bslash sl}, 96 + \item {\Bslash slide}, 86 + \item {\Bslash slur}, 44 + \item {\Bslash smallaccid}, 35 + \item {\Bslash smallfl}, 35 + \item {\Bslash smallmusicsize}, 17, 22, 65, 70 + \item {\Bslash smallnotesize}, 64 + \item {\Bslash smallsh}, 35 + \item {\Bslash smalltype}, 56 + \item {\Bslash smallvalue}, 66 + \item soft width, 9 + \item {\Bslash softlyrics}, 73 + \item {\Bslash songbottom}, 19 + \item {\Bslash songtop}, 19 + \item {\Bslash soupir}, 31 + \item {\Bslash SP}, 96 + \item spacing, 7 + \item spacing note, 21 + \item {\Bslash sPED}, 59, 60 + \item {\Bslash sPed}, 60 + \item {\Bslash squ}, 87 + \item {\Bslash sslur}, 45 + \item staccato, 57 + \item staff line number, 69 + \item staff size, 65, 66 + \item staff spacing, 66 + \item {\Bslash staffbotmarg}, 49, 68--72 + \item {\Bslash staffspacing}, 66 + \item {\Bslash stafftopmarg}, 49, 68, 70, 94 + \item standard musical notation, 5 + \item {\Bslash startbarno}, 46 + \item {\Bslash startextract}, 70, 82 + \item {\Bslash startmuflex}, 20 + \item {\Bslash startpiece}, 21, 49, 52, 69, 70, 82--84, 97 + \item {\Bslash startrule}, 18 + \item {\Bslash stdbarrules}, 47 + \item {\Bslash stdstemfalse}, 62 + \item {\Bslash stdstemtrue}, 62 + \item {\sc Steinbach, A.}, 15 + \item {\Bslash stemcut}, 62 + \item {\Bslash stemfactor}, 69 + \item {\Bslash stemlength}, 61, 62, 69 + \item stems, 17 + \item {\Bslash stie}, 45 + \item {\Bslash Stoppiece}, 10, 49, 83 + \item {\Bslash stoppiece}, 10, 11, 49, 52, 69, 82, 83, 97 + \item string instruments, 96 + \item style, 81 + \item subbass, 17 + \item {\Bslash subtitle}, 97 + \item {\Bslash suspmorceau}, 83 + \item {\Bslash svtpoint}, 96 + \item {\Bslash systemheight}, 68 + \item {\Bslash systemnumbers}, 46 + \item {\sc Szukics, B.}, 87 + + \indexspace + + \item tabulation, 82 + \item {\Bslash tbbbbbbl}, 84 + \item {\Bslash tbbbbbbu}, 84 + \item {\Bslash tbbbbbl}, 84 + \item {\Bslash tbbbbbu}, 84 + \item {\Bslash tbbbbl}, 28 + \item {\Bslash tbbbbu}, 28 + \item {\Bslash tbbbl}, 28 + \item {\Bslash tbbbu}, 28 + \item {\Bslash tbbl}, 28 + \item {\Bslash tbbu}, 28 + \item {\Bslash tbl}, 27 + \item {\Bslash tbslurd}, 39 + \item {\Bslash tbsluru}, 39 + \item {\Bslash tbu}, 27 + \item {\Bslash tcresc}, 61 + \item {\Bslash tdecresc}, 61 + \item {\Bslash temps}, 84 + \item tenor violin clef, 63 + \item {\Bslash tenpoint}, 96 + \item {\Bslash tgccl}, 95 + \item {\Bslash tgccu}, 95 + \item {\Bslash tgcl}, 95 + \item {\Bslash tgcu}, 95 + \item {\Bslash tgqb}, 95 + \item {\Bslash tgql}, 95 + \item {\Bslash tgqu}, 95 + \item {\Bslash tgzq}, 95 + \item {\Bslash thelyrics}, 73 + \item {\Bslash thsong}, 73 + \item {\Bslash tie}, 45 + \item ties, 39 + \item {\Bslash tinynotesize}, 64 + \item {\Bslash tinyvalue}, 66 + \item {\Bslash title}, 97 + \item titles, 96 + \item {\Bslash Toctfin}, 36 + \item {\Bslash today}, 85 + \item {\Bslash torculus}, 89 + \item {\Bslash torculusauctdown}, 92 + \item {\Bslash torculusdebilis}, 93 + \item {\Bslash torculusdeminut}, 92 + \item {\Bslash torculusinitiodebilis}, 89 + \item {\Bslash tqb}, 27 + \item {\Bslash Tqbbl}, 31 + \item {\Bslash Tqbbu}, 31 + \item {\Bslash Tqbl}, 31 + \item {\Bslash Tqbu}, 31 + \item {\Bslash tqh}, 27 + \item traduction, 5 + \item {\Bslash transpose}, 13, 35, 37 + \item {\Bslash treble}, 18 + \item {\Bslash treblelowoct}, 78 + \item {\Bslash trebleoct}, 78 + \item {\Bslash trigonus}, 91 + \item {\Bslash Trille}, 58 + \item {\Bslash trille}, 58 + \item {\Bslash TrilleC}, 59 + \item {\Bslash trilleC}, 59 + \item {\Bslash TrilleX}, 59 + \item {\Bslash trilleX}, 59 + \item trills, 58 + \item {\Bslash triolet}, 58 + \item {\Bslash tristropha}, 88 + \item {\Bslash trivirga}, 88 + \item {\Bslash Trtx}, 84 + \item {\Bslash tslur}, 38, 39 + \item {\Bslash Tslurbreak}, 44 + \item {\Bslash tsslur}, 39 + \item {\Bslash tten}, 40 + \item {\Bslash ttie}, 39 + \item {\Bslash Ttrille}, 59 + \item {\Bslash tTrille}, 59 + \item {\Bslash ttrille}, 59 + \item {\Bslash Ttx}, 84 + \item {\Bslash turn}, 60 + \item {\Bslash twfvpoint}, 96 + \item {\Bslash twlpoint}, 96 + \item {\Bslash twtypoint}, 96 + \item {\Bslash tx}, 84 + \item {\Bslash txt}, 58, 62 + + \indexspace + + \item {\Bslash UD}, 96 + \item {\Bslash Ud}, 96 + \item {\Bslash UH}, 96 + \item {\Bslash Uh}, 96 + \item {\Bslash unbkt}, 62, 63 + \item {\Bslash upbow}, 57, 96 + \item {\Bslash upperfl}, 35 + \item {\Bslash upperna}, 35 + \item {\Bslash uppersh}, 35 + \item {\Bslash uppz}, 57 + \item {\Bslash Uptext}, 54, 55, 57 + \item {\Bslash uptext}, 55 + \item {\Bslash uptrio}, 62 + \item {\Bslash upz}, 57 + \item {\Bslash upzst}, 57 + \item {\Bslash usf}, 57 + \item {\Bslash usfz}, 57 + \item {\Bslash ust}, 57 + + \indexspace + + \item {\Bslash vadjust}, 63 + \item {\Bslash varaccid}, 35 + \item {\Bslash varline}, 62 + \item {\Bslash vfootnote}, 97 + \item violin, 96 + \item violin clef, 18, 51 + \item violin harmonic notes, 65 + \item virga, 87 + \item {\Bslash virga}, 87 + \item {\Bslash voffset}, 50, 96, 103 + \item voices, 68 + \item {\Bslash voltadot}, 54 + \item {\Bslash vsize}, 50, 96 + + \indexspace + + \item {\Bslash wh}, 23 + \item {\Bslash wholeshift}, 57 + \item {\Bslash whp}, 26 + \item {\Bslash whpp}, 26 + \item {\Bslash whppp}, 97 + \item {\sc Widor, C.M.}, 104 + \item {\Bslash wq}, 23 + \item {\Bslash wqq}, 23 + \item {\Bslash wr}, 86 + \item {\Bslash writebarno}, 46 + \item {\Bslash writethebarno}, 46 + \item {\Bslash writezbarno}, 46 + \item {\Bslash wrp}, 86 + + \indexspace + + \item {\Bslash xbar}, 49 + \item {\Bslash xccl}, 95 + \item {\Bslash xccu}, 95 + \item {\Bslash xcl}, 95 + \item {\Bslash xcu}, 95 + \item {\Bslash xqb}, 95 + \item {\Bslash xql}, 95 + \item {\Bslash xqu}, 95 + \item {\Bslash xtuplet}, 58 + \item {\Bslash xzq}, 95 + + \indexspace + + \item {\Bslash yccccl}, 85 + \item {\Bslash yccccu}, 85 + \item {\Bslash ycccl}, 85 + \item {\Bslash ycccu}, 85 + \item {\Bslash yccl}, 85 + \item {\Bslash yccu}, 85 + \item {\Bslash ycl}, 85 + \item {\Bslash yclp}, 85 + \item {\Bslash yclpp}, 85 + \item {\Bslash ycu}, 85 + \item {\Bslash ycup}, 85 + \item {\Bslash ycupp}, 85 + \item {\Bslash ynq}, 85 + \item {\Bslash yqb}, 85 + \item {\Bslash yql}, 85 + \item {\Bslash yqlp}, 85 + \item {\Bslash yqlpp}, 85 + \item {\Bslash yqu}, 85 + \item {\Bslash yqup}, 85 + \item {\Bslash yqupp}, 85 + \item {\Bslash yzq}, 85 + \item {\Bslash yzqp}, 85 + \item {\Bslash yzqpp}, 85 + + \indexspace + + \item {\Bslash zalaligne}, 10, 49 + \item {\Bslash zalapage}, 10, 49 + \item {\Bslash zapostropha}, 87 + \item {\Bslash zbar}, 49 + \item {\Bslash zbreath}, 60 + \item {\Bslash zbreve}, 25 + \item {\Bslash zcccccl}, 84 + \item {\Bslash zcccccu}, 84 + \item {\Bslash zccccl}, 25 + \item {\Bslash zcccclp}, 96 + \item {\Bslash zcccclpp}, 96 + \item {\Bslash zccccu}, 25 + \item {\Bslash zccccup}, 96 + \item {\Bslash zccccupp}, 96 + \item {\Bslash zcccl}, 25 + \item {\Bslash zccclp}, 96 + \item {\Bslash zccclpp}, 96 + \item {\Bslash zcccu}, 25 + \item {\Bslash zcccup}, 96 + \item {\Bslash zcccupp}, 96 + \item {\Bslash zccl}, 25 + \item {\Bslash zcclp}, 96 + \item {\Bslash zcclpp}, 96 + \item {\Bslash zccu}, 25 + \item {\Bslash zccup}, 96 + \item {\Bslash zccupp}, 96 + \item {\Bslash zchangeclefs}, 51 + \item {\Bslash zchangecontext}, 51, 52 + \item {\Bslash zchar}, 54, 55, 60, 71 + \item {\Bslash zcharnote}, 8, 54, 55, 60, 63, 71 + \item {\Bslash zcl}, 25 + \item {\Bslash zclp}, 26 + \item {\Bslash zclpp}, 26 + \item {\Bslash zclppp}, 97 + \item {\Bslash zcu}, 25 + \item {\Bslash zcup}, 26 + \item {\Bslash zcupp}, 26 + \item {\Bslash zcuppp}, 97 + \item {\Bslash zdiapunc}, 87 + \item {\Bslash zendextract}, 70 + \item {\Bslash zh}, 24 + \item {\Bslash zhl}, 25 + \item {\Bslash zhlp}, 26 + \item {\Bslash zhlpp}, 26 + \item {\Bslash zhlppp}, 97 + \item {\Bslash zhp}, 26 + \item {\Bslash zhpp}, 26 + \item {\Bslash zhppp}, 97 + \item {\Bslash zhu}, 25 + \item {\Bslash zhup}, 26 + \item {\Bslash zhupp}, 26 + \item {\Bslash zhuppp}, 97 + \item {\Bslash zlonga}, 25 + \item {\Bslash zlsqu}, 87 + \item {\Bslash zmaxima}, 23, 25 + \item {\Bslash zmidstaff}, 55 + \item {\Bslash znh}, 25 + \item {\Bslash znotes}, 21 + \item {\Bslash znq}, 25 + \item {\Bslash zoriscus}, 87 + \item {\Bslash zq}, 7, 24 + \item {\Bslash zqb}, 25 + \item {\Bslash zqbp}, 26 + \item {\Bslash zqbpp}, 26 + \item {\Bslash zqbppp}, 97 + \item {\Bslash zql}, 25 + \item {\Bslash zqlp}, 26 + \item {\Bslash zqlpp}, 26 + \item {\Bslash zqlppp}, 97 + \item {\Bslash zqp}, 26 + \item {\Bslash zqpp}, 26 + \item {\Bslash zqppp}, 97 + \item {\Bslash zqu}, 25 + \item {\Bslash zqup}, 26 + \item {\Bslash zqupp}, 26 + \item {\Bslash zquppp}, 97 + \item {\Bslash zrsqu}, 87 + \item {\Bslash zsong}, 72 + \item {\Bslash zsqu}, 87 + \item {\Bslash zstoppiece}, 10, 49 + \item {\Bslash ztqb}, 27 + \item {\Bslash ztqh}, 27 + \item {\Bslash zw}, 25 + \item {\Bslash zwp}, 26 + \item {\Bslash zwpp}, 26 + \item {\Bslash zwppp}, 97 + \item {\Bslash zwq}, 25 + \item {\Bslash zynq}, 85 + +\end{theindex} diff --git a/Master/texmf-dist/tex/generic/musixtex/musixlit.tex b/Master/texmf-dist/tex/generic/musixtex/musixlit.tex index 9aab23b20b9..bee5ab5edbc 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixlit.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixlit.tex @@ -17,7 +17,7 @@ % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXLITurgical 0.36\space<1 March 1995>}% +\immediate\write16{MusiXLITurgical 0.36\space<1 March 1995>}% \ifx\undefined\oldGclef \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixltx.tex b/Master/texmf-dist/tex/generic/musixtex/musixltx.tex index 18bb6083f4b..f4eff2cf23c 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixltx.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixltx.tex @@ -18,7 +18,7 @@ % \ifx\undefined\music \else \endinput \fi -\immediate\write10{MusiXLaTeX T.61\space<25 September 1996>}% +\immediate\write16{MusiXLaTeX T.61\space<25 September 1996>}% \newenvironment{music}{\@afterindenttrue\parskip0pt\catcodesmusic \resetlayout}{}% diff --git a/Master/texmf-dist/tex/generic/musixtex/musixlyr.tex b/Master/texmf-dist/tex/generic/musixtex/musixlyr.tex new file mode 100644 index 00000000000..753928bf99c --- /dev/null +++ b/Master/texmf-dist/tex/generic/musixtex/musixlyr.tex @@ -0,0 +1,1162 @@ +%% +%% musixlyr.tex: Convenient lyrics handling for MusiXTeX T.52 or later +%% +%% Copyright (C) 1996-2003 Rainer Dunker +%% +%% This program is free software; you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation; either version 2 of the License, or +%% any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program; if not, write to the Free Software +%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +%% +%% Author: +%% Rainer Dunker +%% Wachtelweg 31 +%% 85591 Vaterstetten +%% Germany +%% +%% E-mail: rainer.dunker@web.de +%% +\ifx\undefined\lyr\else\endinput\fi +\immediate\write10{MusiXLYRics 2.1c\space} +\def\musixlyrversion{2.12} + +\makeatletter + +%%%%%%%%%% +% +% register allocation +% +%%%%%%%%%% +\newtoks\alle@texte + +% internal parameters for setting text +\let\evtl@klein\empty +\let\evtl@komma\empty +\let\evtl@punktweg\empty +\let\evtl@offset\empty +\let\evtl@next@lyr\empty +\newif\if@strich +\newif\iflyr@processing +\newif\if@pmx@nextvoice +\newif\if@lyrmode +\newif\if@hyphen +\newif\ifaux@active +\newif\if@single@token +\newdimen\lyr@shift +\newbox\lyr@box +\newbox\lyr@hyphen@box +\newbox\lyr@linkbox +\newbox\lyr@linkdepthbox +\def\ma@sw{lyr@m} % "main/aux switch" + +% helpers for shuffling data around +\newtoks\@rohtext +\newtoks\@textvar + +\let\text@name\empty + +% public parameters +\newif\ifleftlyr +\newif\ifforcelyrhyphens +\newif\ifshowlyrshift +\newdimen\minlyrrulelength \minlyrrulelength=2mm +\newdimen\minmulthyphens \minmulthyphens=1.5cm +\newdimen\minlyrspace \minlyrspace=3pt +\def\lyrhyphenchar{-} +\newbox\lyrstrutbox +\def\lyrlinestartpos{-10cm } +\def\oldlyrlinestart{\def\lyrlinestartpos{0pt }} % to restore 2.1 behaviour + +\def\lyrlog#1{\immediate\write16{#1}} % just for debugging convenience + +% for testing token lists for emptyness with \ifx +\def\emp@tst{\empty@test@errmsg} +\def\empty@test@errmsg{% + \errmessage{This shouldn't happen; you have found a musixlyr bug}} + +%%%%%%%%%% +% +% lyrics definition +% +%%%%%%%%%% +% set up text completely +\def\setlyrics#1#2{% iterative variant + % Parameter: + % #1 - lyrics line name + % #2 - text + \@rohtext={#2 -}% + \@textvar={}% + %\lyrlog{setlyrics{#1}, raw text: \the\@rohtext}% + \loop + \expandafter\ifx\expandafter\emp@tst\the\@rohtext\emp@tst % no more text + \let\@weiter n\else \let\@weiter j% + \fi + \ifx\@weiter j% + \expandafter\split@lyr@by@hyphens\the\@rohtext\@end + \repeat + \expandafter\xdef\csname dertext@#1\endcsname{\the\@textvar}% + \expandafter\xdef\csname nochtext@#1\endcsname{\the\@textvar}% + %\lyrlog{setlyrics{#1}: \the\@textvar}% + \initialize@verse{#1}} + +\def\appendlyrics#1#2{% iterative variant + % Parameter: + % #1 - lyrics line name + % #2 - text + % test whether lyrics line name already defined + \expandafter\ifx\csname stp@#1\endcsname\relax + % if not: set it up newly + \setlyrics{#1}{#2}% + \else + % if yes: preprocess new material, then append it to existing stuff + \@rohtext={#2 -}% + \@textvar={}% + %\lyrlog{appendlyrics{#1}, raw text: \the\@rohtext}% + \loop + \expandafter\ifx\expandafter\emp@tst\the\@rohtext\emp@tst % no more text + \let\@weiter n\else \let\@weiter j% + \fi + \ifx\@weiter j% + \expandafter\split@lyr@by@hyphens\the\@rohtext\@end + \repeat + % + % properly append new material to \dertext@#1 + \toks@=\expandafter\expandafter\expandafter{\csname dertext@#1\endcsname}% + \expandafter\test@final@hyphen@i\the\toks@\@end + \expandafter\xdef\csname dertext@#1\endcsname{\the\toks@\the\@textvar}% + % + % properly append new material to \nochtext@#1 + \toks@=\expandafter\expandafter\expandafter{\csname nochtext@#1\endcsname}% + \expandafter\ifx\expandafter\emp@tst\the\toks@\emp@tst + % pending text empty - don't call \test@final@hyphen + \else + \expandafter\test@final@hyphen@i\the\toks@\@end + \fi + \expandafter\xdef\csname nochtext@#1\endcsname{\the\toks@\the\@textvar}% + %\lyrlog{appendlyrics{#1}: \the\@textvar}% + \fi} + +% separate hyphens from syllables +\def\split@lyr@by@hyphens#1-#2\@end{% + % #1: text before first hyphen + % #2: text after first hyphen; may be empty + \ifx\emp@tst#2\emp@tst % -> no hyphen present + \@textvar=\expandafter{\the\@textvar#1}% + \else % -> hyphen present + \@textvar=\expandafter{\the\@textvar#1 @}% + \fi + \@rohtext={#2}% + %\lyrlog{splitlyrics 1: \the\@textvar}% + %\lyrlog{splitlyrics 2: \the\@rohtext}% + } + +% helper macros for \appendlyrics, handling the case that pre-existing +% lyrics material ends with an open hyphen +\def\test@final@hyphen@i#1 \@end{% + % truncate trailing space, then proceed with detecting a trailing @ + \test@final@hyphen@ii#1@@\@end} +\def\test@final@hyphen@ii#1@@#2\@end{% + \ifx\emp@tst#2\emp@tst + % no trailing, open hyphen + %\lyrlog{No trailing hyphen: #1}% + \else + % reset \toks@ so that trailing @ is not longer followed by a space + \toks@={#1@}% + %\lyrlog{Trailing hyphen: #1}% + \fi} + +% copy whole text under different name +\def\copylyrics#1#2{% + % #1 - existing text name + % #2 - new text name + % text still undefined? + \expandafter\ifx\csname dertext@#1\endcsname\relax + \errmessage{Trying to copy undefined verse "#1" to "#2"}% + \setlyrics{#2}{UNDEFINED}% + \else + \expandafter\let\expandafter\text@copy\csname dertext@#1\endcsname + \global\expandafter\let\csname dertext@#2\endcsname\text@copy + \global\expandafter\let\csname nochtext@#2\endcsname\text@copy + \initialize@verse{#2}% + \fi} + +% at 1st definition of a text name +\def\initialize@verse#1{% + % test whether lyrics line name already defined + \expandafter\ifx\csname stp@#1\endcsname\relax + \expandafter\xdef\csname stp@#1\endcsname{\lyrlinestartpos}% tracks horizontal progress + \global\expandafter\let\csname cont@#1\endcsname\relax% context stuff + \expandafter\gdef\csname zwr@#1\endcsname{0}% flag for hyphen/rule status + % for layout definitions + \global\expandafter\let\csname llay@#1\endcsname\relax + % switch on auto-text + {\def\text@name{#1}\lyricson}% + % insert in list of all defined text names + \global\alle@texte=\expandafter{\the\alle@texte#1,}% + \fi} + +% just for more elegance ... +\def\if@multistaff{\ifnum\st@ffs>1 } + +\def\set@texte#1#2{% + % assign assigned lyrics lines to \@texte + % or \empty in case they are empty + % #1: instrument number + % #2: staff number of instrument + \expandafter\let\expandafter\@texte\csname\ma@sw#1-#2\endcsname + \ifx\@texte\relax\let\@texte\empty\fi} + +\def\set@texte@current#1{% + % apply \set@texte to current context + % using PMX, automatically switch to aux lyrics where required + \switch@pmx@aux{% + % get the verses + \ifnum\st@ffs>1 % multi-staff instrument + \set@texte{\the\noinstrum@nt}{\the\noport@@}% + \else + \set@texte{\the\noinstrum@nt}{1}% + \fi + % perform given action + #1}} + +\def\loop@texte#1\@repeat{% + % assumption: \@texte is already set properly, may be empty + % #1: action to be executed + \ifx\@texte\empty\else + \expandafter\loop@texte@step\@texte\@end{#1}% + \fi} + +\def\loop@texte@step#1,#2\@end#3{% + % assumption: text list is not empty, #1 contains list head + % #1: text list head + % #2: text list tail + % #3: action to be executed + % + % perform action on first text + \def\text@name{#1}% + #3\relax + % + % prepare iteration + \ifx\emp@tst#2\emp@tst % list tail empty + \let\@iterate \empty % stop looping + \let\text@name\empty % reset working environment + \else + \def\@iterate{\loop@texte@step#2\@end{#3}}% + \fi + \@iterate} + +% assign text name to staff +\def\assignlyrics#1{% for single-staff instruments + % #1: instrument number + \assignlyricsmulti{#1}1} + +\def\assignlyricshere#1{% assign lyrics to current instrument/staff context + % #1: comma-separated list of text names + \switch@pmx@aux{% + \ifnum\st@ffs>1 % multi-staff instrument + \assignlyricsmulti{\the\noinstrum@nt}{\the\noport@@}{#1}% + \else + \assignlyrics{\the\noinstrum@nt}{#1}% + \fi}} + +\def\assignlyricsmulti#1#2#3{% + % #1: instrument number + % #2: staff number of instrument + % #3: comma-separated list of text names + % gather farthest right current position + % of currently assigned lyrics lines + \y@v=\lyrlinestartpos + \set@texte{#1}{#2}% + \loop@texte + % starting position greater than retrieved so far? + \ifdim\csname stp@\text@name\endcsname > \y@v + \y@v=\csname stp@\text@name\endcsname % advance maximum + \fi + \@repeat + % + % new text names list non-empty -> append comma + \ifx\emp@tst#3\emp@tst + \expandafter\global\expandafter\let\csname\ma@sw#1-#2\endcsname\relax + \else + \expandafter\gdef\csname\ma@sw#1-#2\endcsname{#3,}% + \fi + % set parameters according to newly assigned lyrics lines + \set@texte{#1}{#2}% + \loop@texte + % check for existence + \expandafter\ifx\csname stp@\text@name\endcsname\relax + \errmessage{Trying to assign undefined verse "\text@name"}% + \expandafter\setlyrics\expandafter{\text@name}{EMPTY}% + \fi + \reset@params + \@repeat} + + +\def\reset@params{% + \expandafter\xdef\csname stp@\text@name\endcsname{\the\y@v}% + \expandafter\gdef\csname zwr@\text@name\endcsname{0}} + + +% +% reset horizontal positioning parameters of all lyrics lines +% +\def\resetlyrics{% + \edef\@texte{\the\alle@texte}% + \y@v=\lyrlinestartpos + \loop@texte \reset@params \@repeat} + + +%%%%%%%%%% +% +% process lyrics verse-wise +% +%%%%%%%%%% +% same action for all assigned verses +\def\forall@verses#1{% + % #1: action to be executed + \ifx\text@name\empty + % perform action for all assigned verses + \set@texte@current{% + \ifx\@texte\empty\else + \vplace@lyrics{\loop@texte \hbox{\lyr@strut #1}\@repeat}% + \fi}% + \else + % text name already selected -> perform action for this one only + #1% + \fi} + + +% specify separate actions per verse +\def\verses#1{% + % #1: comma-separated list of actions (from top to bottom) + \set@texte@current{% + \def\@param{#1}% running variable for per-text actions + \vplace@lyrics{% + \loop@texte \expandafter\one@verse\@param,\@end \@repeat}}} + +\def\one@verse#1,#2\@end{% + % #1: action list head = action for current verse + % #2: action list tail = actions for remaining verses + \def\@param{#2}% + % perfrom action + \hbox{\lyr@strut #1}} + + +%%%%%%%%%% +% +% line spacing for multiple verses +% +%%%%%%%%%% +\def\lyr@strut{\copy\lyrstrutbox} +\def\setlyrstrut{% set up strut according to currently active font + \setbox0=\hbox{()}% + \setbox\lyrstrutbox=\hbox{\vrule height 1.1\ht0 depth 1.1\dp0 width\z@}} +\setlyrstrut % initialize + + +%%%%%%%%%% +% +% retrieve text by syllable +% +%%%%%%%%%% +\def\next@lyr{% + \expandafter\let\expandafter\@nochtext\csname nochtext@\text@name\endcsname + %\show\@nochtext + \ifx\@nochtext\empty + % no more text + \@hyphenfalse\@lyric{???}% + \else + \@textvar=\expandafter{\@nochtext}% + \expandafter\next@syllable\the\@textvar\relax\relax + \fi} + +\def\next@syllable#1 #2#3\relax{% + % #1 - first syllable + % #2 - either hyphenation symbol @ + % or \relax (if text ends after #2) + % or 1st char/group of rest text + % #3 - rest text, may be empty + \parse@melisma{#2}{#3}#1_\@end} + +\def\test@single@token#1#2\@end{% + % #2 is empty if argument consists of a single token + \ifx\emp@tst#2\emp@tst + \@single@tokentrue + \else + \@single@tokenfalse + \fi} + +\def\parse@melisma#1#2#3_#4\@end{% parse trailing underscores + % #1: either hyphenation indicator @ + % or \relax (if text ends after #1), + % or 1st char/group of rest text + % #2: rest text, may be empty + % #3: current syllable; may be empty if melisma pending + % #4: trailing underscores, if any, or + % melisma notes number followed by single underscore, or + % empty if no melisma + % + % evaluate hyphenation sign + \ifx @#1% + \@hyphentrue + \@textvar={#2}% may be empty + \else + \@hyphenfalse + % decide rest text (#1 was no hyphen sign) + \ifx\relax#1% current syllable is final syllable + \@textvar={}% + \else + \test@single@token#1\@end % #1 may have been grouped + \if@single@token + \@textvar={#1#2}% + \else + \@textvar={{#1}#2}% + \fi + \fi + \fi + % + % melisma pending? + \ifx\emp@tst#4\emp@tst % no melisma + \let\melisma@spec\empty + \@lyric{\evtl@klein{\evtl@punktweg{#3}}\evtl@komma}% + \else % melisma + \ifx\emp@tst#3\emp@tst % syllable empty, d.i. in mid-melisma + \parse@melisma@tail#4\@end + \ifx\melisma@spec\empty % final melisma note + \lyrruleend + \fi + \else % syllable non-empty, d.i. at melisma start + \leftlyrtrue\@strichtrue + \parse@melisma@start#4\@end + \@lyric{\evtl@klein{\evtl@punktweg{#3}}\evtl@komma}% + \fi % at melisma start + \fi % in melisma + % + % set remaining text + \expandafter\xdef + \csname nochtext@\text@name\endcsname{\melisma@spec\the\@textvar}} + +\def\parse@melisma@start#1_\@end{% + % Cut trailing underscore and attach it at argument head. + % For underscore sequences, the effect is void. + % For numbers, it converts "num_" to "_num". + % Moreover, append a single space. + \def\melisma@spec{_#1 }} + +\def\parse@melisma@tail#1_\@end{% + % #1: either trailing underscores minus one + % or melisma notes number + % or empty + \ifx\emp@tst#1\emp@tst % no more underscores + \let\melisma@spec\empty + \else + \parse@melisma@tail@ii#1\@end + \fi} + +\def\parse@melisma@tail@ii#1#2\@end{% helper for deciding melisma spec type + % #1#2: either trailing underscores minus one + % or melisma notes number + \if#1_% % underscore sequence given + \def\melisma@spec{#1#2 }% + \else % number given + \ifnum#1#2>1 % more melisma notes pending + \count@=#1#2 + \advance\count@\m@ne + \edef\melisma@spec{_\the\count@\space}% + \else % no more melisma notes + \let\melisma@spec\empty + \fi + \fi} + +\def\@lyric#1{% + % #1: Text + \evtl@offset + % Alles Folgende ist Argument fuer obiges \evtl@offset: + {\csname llay@\text@name\endcsname% Layoutkontext abrufen + \lyr@processingtrue + \setbox\lyr@box=\hbox{#1}% + \setbox\lyr@hyphen@box=\hbox{\lyrhyphenchar}% + % Zwischenraum zu voriger Silbe ermitteln: + \get@lyrspace + \ifleftlyr\else + % Silbe zentriert -> Zwischenraum entspr. kleiner: + \advance\y@v -0.5\wd\lyr@box + \advance\y@v 0.5\qn@width % halbe Notenkopfbreite dazu + \fi + % Bindestrich von voriger Silbe anhaengig? + \expandafter\ifnum\csname zwr@\text@name\endcsname=2 + % Minimalzwischenraum entsprechend aendern: + \ifforcelyrhyphens + % Min. Zw.-R. mindestens so breit wie Bindestrich: + \ifdim\minlyrspace < \wd\lyr@hyphen@box + \minlyrspace=\wd\lyr@hyphen@box + \fi + \else + \minlyrspace=0pt % % kein Zwischenraum noetig + \fi + \fi + \ifdim\y@v < \minlyrspace % Zwischenraum zu klein? + \lyr@shift=\minlyrspace % Silbe um Differenz nach rechts verschieben + \advance\lyr@shift -\y@v + \y@v=\minlyrspace % Zwischenraumbreite = geg. Minimum + \else + \expandafter\ifnum\csname zwr@\text@name\endcsname=2 % Bindestrich anhaengig? + \ifforcelyrhyphens\else % Bindestrich nicht erzwungen? + \ifdim\y@v < \wd\lyr@hyphen@box % Zwischenraum zu schmal? + \advance\lyr@shift -\y@v % => Zw.raum ganz wegnehmen + % Dank an Sebastian Clauss fuer diese Verbesserung + \fi + \fi + \fi + \fi + \rlap{% + \hskip\lyr@shift + {\ifleftlyr + \aftergroup\rlap % linksbuendig + \else + \aftergroup\qlrlap % zentriert + \fi}% + % Alles Folgende ist Argument fuer obiges \qlrlap bzw. \rlap: + {% Ist von voriger Silbe noch ein Bindestrich anhaengig? + \expandafter\ifnum\csname zwr@\text@name\endcsname=2 + % limit hyphens at line beginning to zero position + \ifdim\csname stp@\text@name\endcsname < \z@ + \advance\y@v \csname stp@\text@name\endcsname \fi + % Bindestrich nur setzen, wenn Platz genug vorhanden: + \ifdim\y@v < \wd\lyr@hyphen@box\else + \print@hyphen + \fi + \fi + \ifshowlyrshift + % Mit Rechteck Wortverschiebung zeigen: + \llap{\vrule width \lyr@shift height \ht\strutbox}% + \fi + \unhcopy\lyr@box % Wort setzen + % Startposition des nachfolgenden Zwischenraums festhalten: + \getcurpos + \advance\y@v by \lyr@shift + \ifleftlyr + \advance\y@v \wd\lyr@box + \else + \advance\y@v 0.5\wd\lyr@box + \advance\y@v 0.5\qn@width % halbe Notenkopfbreite dazu + \fi + \expandafter\xdef\csname stp@\text@name\endcsname{\the\y@v}% Startposition setzen + \if@hyphen % Bindestrich gefordert? + \expandafter\gdef\csname zwr@\text@name\endcsname{2}% + \else + \if@strich % Verlaengerungs-Strich gefordert? + \expandafter\gdef\csname zwr@\text@name\endcsname{1}% + \else % nichts gefordert + \expandafter\gdef\csname zwr@\text@name\endcsname{0}% + \fi + \fi}}}} + +\def\print@hyphen{% + \llap{\hbox to \y@v{% + % Zwischenraum mit "Strich-Kette" ausfuellen: + \loop + \hfil\lyrhyphenchar\hss% rechter Raum darf am Systemende negativ werden + \advance\y@v by -\minmulthyphens + \ifdim\y@v > 0pt% + \repeat}}} + +\def\get@lyrspace{% + \getcurpos + \advance\y@v by -\csname stp@\text@name\endcsname + \relax} + +% set lyrpos to zero if less than that +\def\limit@lyrpos{% + \ifdim\csname stp@\text@name\endcsname < \z@ + \expandafter\xdef\csname stp@\text@name\endcsname{\the\z@}\fi} + +% Verlaengerungs-Striche abschliessen: +\def\lyrruleend{\forall@verses\lyrrule@end} + +\def\lyrrule@end{% + \expandafter\ifcase\csname zwr@\text@name\endcsname + % 0 -> kommt nicht vor + \or + % 1 -> Strich anhaengig: + \roff{% Zum rechten Notenkopf-Rand + \limit@lyrpos\get@lyrspace \print@lyr@rule + % Zwischenraum-Startposition festhalten, wenn Wort nicht nach + % rechts darueber hinausragt: + \getcurpos + \ifdim\csname stp@\text@name\endcsname < \y@v + \expandafter\xdef\csname stp@\text@name\endcsname{\the\y@v}% + \fi}% + % Einstellung zuruecksetzen: + \expandafter\gdef\csname zwr@\text@name\endcsname{0}% + \or + % 2 -> Bindestrich anhaengig -> nichts tun + \or + % 3 -> fortgesetzter Bindestrich anhaengig + % -> Einstellung fuer Bindestrich-Einfuegen an nächster Note setzen + \expandafter\gdef\csname zwr@\text@name\endcsname{2}% + \fi} + +\def\print@lyr@rule{% + % Kleiner Zwischenraum zur vorherigen Silbe: + \advance\y@v -2pt + \ifdim \y@v > \minlyrrulelength + \llap{\vrule\@width\y@v\@height\lthick\@depth0pt}% + \fi} + + +%%%%%%%%%% +% +% Textstellen per Label anspringen +% +%%%%%%%%%% +\def\llabel#1{}% Damit Kennzeichnung bei der Ausgabe ohne Effekt bleibt + +\def\golyr#1{\forall@verses{\@golyr{#1}}} + +\def\@golyr#1{{% + \expandafter\let\expandafter\@nochtext\csname dertext@\text@name\endcsname + \def\query@label{#1}% + \loop + \expandafter\find@llabel\@nochtext\ende + \ifx\query@label\cur@label\let\@weiter n\else \let\@weiter j\fi + \if\@weiter j\repeat + \expandafter\global\expandafter\let + \csname nochtext@\text@name\endcsname\@nochtext}} + +\def\find@llabel#1\llabel#2#3\ende{% + % #1 - Text vor erstem \llabel + % #2 - naechstfolgender \llabel-Name + % #3 - Resttext + \def\cur@label{#2}% + \def\@nochtext{#3}} + + +%%%%%%%%%% +% +% Offene Silbentrennungen und -verlaengerungen am Systemende abschliessen +% +%%%%%%%%%% +\let\@orig@z@suspend\z@suspend +\def\z@suspend{% + \znotes\sysend@lyrics\empty\en + \znotes\sysend@lyrics\auxlyr\en + \@orig@z@suspend} + +\def\sysend@verse{% + % Flag auswerten: + \ifnum\csname zwr@\text@name\endcsname = 1 % Verlaengerungs-Strich anhaengig + % Platz zum rechten Systemrand, damit Strich nicht in Taktstrich ragt + \loffset{0.3}{\limit@lyrpos\get@lyrspace\print@lyr@rule}% + \else\ifnum\csname zwr@\text@name\endcsname > 1 % Bindestrich anhaengig: + \csname llay@\text@name\endcsname% Layoutkontext abrufen + \limit@lyrpos\get@lyrspace\print@hyphen + % als forgesetzten Bindestrich fortfuehren + \expandafter\gdef\csname zwr@\text@name\endcsname{3}% + \fi\fi + % Startposition fuer naechstes System zuruecksetzen: + \expandafter\xdef\csname stp@\text@name\endcsname{\lyrlinestartpos}} + +\def\sysend@lyrics#1{% + % #1: \auxlyr or \empty + #1{\let\switch@pmx@aux\empty \forall@verses\sysend@verse}% + \if@multistaff + % loop over staves of instrument + \ifnum \noport@@ < \st@ffs + \def\@next{\nextstaff\sysend@lyrics#1}% + \else % staves of instrument finished; continue with next instrument + \sysend@lyrics@instrum@loop#1% + \fi + \else % single-staff instrument + \sysend@lyrics@instrum@loop#1% + \fi + % iterate + \@next} + +\def\sysend@lyrics@instrum@loop#1{% + % prepare instruments loop + \ifnum \noinstrum@nt < \nbinstruments + \def\@next{\nextinstrument\sysend@lyrics#1}% + \else % \noinstrum@nt >= \nbinstruments + \let\@next\empty + \fi} + + +%%%%%%%%%% +% +% Zeilenspezifisches Layout festlegen +% +%%%%%%%%%% +\def\lyrlayout#1{% + \forall@verses{% + \expandafter\gdef\csname llay@\text@name\endcsname{#1}% + % Wenn gerade Text verarbeitet wird, Kontext sofort abrufen: + \iflyr@processing #1\fi}} + +% +% Kontextbehandlung fuer Textnamen: +% +% Aktion zu Kontext hinzufuegen: +\def\add@context#1{% + \toks@=\expandafter\expandafter\expandafter + {\csname cont@\text@name\endcsname #1}% + \expandafter\xdef\csname cont@\text@name\endcsname{\the\toks@}} + +% Kontext abrufen: +\def\@context{% + \expandafter\let\expandafter\der@kontext\csname cont@\text@name\endcsname + \clear@context + \der@kontext} + +% Kontext loeschen: +\def\clear@context{% + \global\expandafter\let\csname cont@\text@name\endcsname\empty} + + +%%%%%%%%%% +% +% Zusaetzliche Textzeilen oberhalb der Notenzeile (auxiliary lyrics) +% +%%%%%%%%%% +\let\enableauxlyrics\empty % just for backward compatibility + +% Befehle auf auxlyrics beziehen: +\def\auxlyr#1{{% + \def\ma@sw{lyr@a}% + \aux@activetrue + #1}} + + +%%%%%%%%%% +% +% vertical lyrics positioning +% +%%%%%%%%%% +\def\lyrraise#1{% + % #1: instrument number + \lyrraisemulti{#1}1} + +\def\lyrraisehere#1{% + % #1: position/offset + \switch@pmx@aux{% + \ifnum\st@ffs>1 % multi-staff instrument + \lyrraisemulti{\the\noinstrum@nt}{\the\noport@@}{#1}% + \else + \lyrraise{\the\noinstrum@nt}{#1}% + \fi}} + +\def\lyrraisemulti#1#2#3{% + % #1: instrument number + % #2: staff of instrument + % #3: position/offset + \toks@=\expandafter{\csname l@raise#1-#2\endcsname}% + \expandafter\ifx\the\toks@\relax + % raise parameter still unset + \expandafter\lyrraise@init\the\toks@ + \fi + % now set raise parameter + \expandafter\expandafter\expandafter + \lyr@raise@multii\the\toks@\@end{#1}{#2}{#3}% + %\lyrlog{raise #1-#2: \expandafter\empty\the\toks@}% +} + +\def\lyr@raise@multii#1@#2\@end#3#4#5{% + % #1: current main position/offset + % #2: current aux position/offset + % #3: instrument number + % #4: staff of instrument + % #5: new position/offset + \expandafter\xdef\csname l@raise#3-#4\endcsname{% + \ifaux@active #1@#5\else #5@#2\fi}} + +% be backward compatible +\let\setsongraise@orig\setsongraise +\def\setsongraise#1#2{\setsongraise@orig{#1}{#2}\lyrraise{#1}{b#2}} +\def\auxsetsongraise#1#2{\auxlyr{\lyrraise{#1}{b#2}}} + + +\def\lyrraise@init#1{% + % #1: control sequence to be set to default value + \gdef#1{b0pt@a0pt}} + + +% vertically place lyrics columns +% replaces MusiXTeX's \C@tx +\def\vplace@lyrics#1{% + % find out applicable positioning settings + \edef\placelyr@staff{\ifnum\st@ffs>1 \the\noport@@ \else 1\fi}% + \toks@=\expandafter + {\csname l@raise\the\noinstrum@nt-\placelyr@staff\endcsname}% + % eventually initialize lyrraise setting first + \expandafter\ifx\the\toks@\relax % lyrraise still unset + \expandafter\lyrraise@init\the\toks@ + \fi + \expandafter\expandafter\expandafter\vplace@lyricsii\the\toks@\@end{#1}} + +\def\vplace@lyricsii#1#2@#3#4\@end#5{% + % #1: main lyrics positioning switch (a/b) + % #2: main lyrics raise value + % #3: aux lyrics positioning switch (a/b) + % #4: aux lyrics raise value + % #5: lyrics material to be issued + % + % decice main/aux context + % + \ifaux@active \let\lyr@ab#3\toks@={#4}% + \else \let\lyr@ab#1\toks@={#2}% + \fi + % + % decide placement situation: above/below/in-mid of system or instrument + % + \if\lyr@ab a% above staff + \ifnum\placelyr@staff<\st@ffs % non-highest staff of multiple staves + \vplaceLyricsAboveMultistaff{#5}% + \else % single or highest staff of instrument + \ifnum\noinstrum@nt<\nbinstruments % lyrics go above instrument + \vplaceLyricsAboveInstrument{#5}% + \else % lyrics go into top margin + \vplaceLyricsTopMargin{#5}% + \fi + \fi + \else % below staff + \ifnum\placelyr@staff>1 % non-lowest staff of multiple staves + \vplaceLyricsBelowMultistaff{#5}% + \else % single or lowest staff of instrument + \ifnum\noinstrum@nt>1 % lyrics go below instrument + \vplaceLyricsBelowInstrument{#5}% + \else % lyrics go into bottom margin + \vplaceLyricsBottomMargin{#5}% + \fi + \fi + \fi} + +% +% user-supersedable placement calculations +% +\def\vplaceLyricsBelowMultistaff#1{% + % #1: lyrics material + % reduced \C@Tx algorithm + \y@iv=\the\toks@\relax + \C@Inter % compute \stem@skip (?) + \advance\y@iv -0.5\stem@skip + \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}} + +\def\vplaceLyricsAboveMultistaff#1{% + % #1: lyrics material + % reduced \C@Tx algorithm + \y@iv=\the\toks@\relax + \C@Inter % compute \stem@skip (?) + \advance\y@iv -0.5\stem@skip + % add height difference to base line of upper staff + \advance\y@iv \interportee + \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}} + +\def\vplaceLyricsBottomMargin#1{% + % #1: lyrics material + % based on \C@tx + \y@iv=\the\toks@\relax + \advance\y@iv -\staffbotmarg + \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}} + +\def\vplaceLyricsTopMargin#1{% + % #1: lyrics material + % based on \C@tx, "mirrored" bottom margin situation + \begingroup % seems to be necessary to make \Comp@High local; + % problem occurred with helper lines for low/high notes + \y@iv=\the\toks@\relax + \advance\y@iv \stafftopmarg + \Comp@High \advance\y@iv\y@v % \y@v = total height of instrument + \advance\y@iv \altitude % for multi-staff: + \advance\y@iv-\altportee % reduce by base height of current staff + \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}% + \endgroup} + +\def\vplaceLyricsBelowInstrument#1{% + % #1: lyrics material + % assumption: \noinstrum@nt > 1 + % based on \C@tx + \y@iv=\the\toks@\relax + \multiply\y@iv 2 % balance division by 2 below + \advance\noinstrum@nt\m@ne + \advance\y@iv -\csname interinstrument\romannumeral\noinstrum@nt\endcsname + \C@Inter % compute \stem@skip (?) + \advance\y@iv -\stem@skip + \divide\y@iv\tw@ + \advance\noinstrum@nt\@ne + \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}} + +\def\vplaceLyricsAboveInstrument#1{% + % #1: lyrics material + % assumption: \noinstrum@nt < \nbinstruments + % analogous to \C@tx, but refers to upper instrument instead + \y@iv=\the\toks@\relax + \multiply\y@iv 2 % balance division by 2 below + \advance\y@iv -\csname interinstrument\romannumeral\noinstrum@nt\endcsname + \C@Inter % compute \stem@skip (?) + \advance\y@iv -\stem@skip + \divide\y@iv\tw@ + % add height difference to base line of upper instrument + \begingroup + \advance\y@iv-\altportee \advance\noinstrum@nt\@ne \s@l@ctinstr + \advance\y@iv \altitude + \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}% + \endgroup} + + +%\def\C@tx{% +% \ifnum\noinstrum@nt=\@ne +% \y@iv\staffbotmarg +% \else +% \advance\noinstrum@nt\m@ne +% \y@iv\csname interinstrument\romannumeral\noinstrum@nt\endcsname +% \C@Inter % compute \stem@skip +% \advance\y@iv\stem@skip +% \divide\y@iv\tw@ +% \advance\noinstrum@nt\@ne +% \fi +% \advance\y@iv-\csname T@R\romannumeral\noinstrum@nt\endcsname +% \lower\y@iv\uplap} +%\def\uplap#1{\vbox\@to\z@{\vss#1}} + + +%%%%%%%%%% +% +% Textsatz-Automatik +% +%%%%%%%%%% +% Text automatisch unter alle "spacing"-Noten eines Systems: +\let\orig@writ@note\writ@note +\def\writ@note{% + \ifnum\n@i<\@c % Bedingung fuer's Notenschreiben in \writ@note (warum?) +% \ifx\st@m\beamst@m +% \uptext{\csname s@bl\balken@nr\endcsname}% +% \else + \decide@lyrmode + \main@aux@or@not{\forall@verses{\@context\evtl@next@lyr}}% +% \fi + \fi + \orig@writ@note} + +\def\lyrmode@no {\def\main@aux@or@not##1{}} +\def\lyrmode@main{\def\main@aux@or@not##1{##1}} +\def\lyrmode@aux {\let\main@aux@or@not\auxlyr} +\let\pmx@auxmode\lyrmode@aux + +% Feststellen, ob Haupt- oder Nebentext oder gar nichts gesetzt werden soll: +\ifx\nextvoice\undefined % ohne PMX + \def\decide@lyrmode{% + \call@lyrmode + \if@lyrmode \decide@stem@direction % Notenhals-Automatik + \else % manuell, nur "spacing"-Noten + \ifadvance \lyrmode@main + \else \lyrmode@no + \fi + \fi} + \def\decide@stem@direction{% + \ifx\st@m\upst@m \lyrmode@aux \else + \ifx\st@m\up@flag \lyrmode@aux \else + \ifx\st@m\downst@m \lyrmode@main\else + \ifx\st@m\down@flag\lyrmode@main\else + \ifx\st@m\setst@m \lyrmode@no \else % kein Hals + \ifx\st@m\resetst@m\lyrmode@no \else + \ifx\st@m\beamst@m + \expandafter\ifx\csname s@bl\balken@nr\endcsname o\lyrmode@aux + \else\lyrmode@main + \fi + \else\errmessage{invalid \string\st@m\space setting}% + \fi\fi\fi\fi\fi\fi\fi} +\else % mit PMX + \def\decide@lyrmode{% + \ifadvance % nur "spacing"-Noten + \call@lyrmode + \if@pmx@nextvoice % Oberstimme + \if@lyrmode\lyrmode@main \else\pmx@auxmode \fi + \else % Unterstimme + \if@lyrmode\pmx@auxmode \else\lyrmode@main \fi + \fi + \else + \lyrmode@no % non-spacing Note + \fi} + \let\orig@nextvoice\nextvoice % \nextvoice erweitern + \def\nextvoice{\orig@nextvoice\@pmx@nextvoicetrue} +\fi + +\def\call@lyrmode{% activate lyrmode setting of current staff/instrument + \ifnum\st@ffs>1 % multi-staff instrument + \csname zlm@\the\noinstrum@nt-\the\noport@@\endcsname + \else % single-staff instrument + \csname zlm@\the\noinstrum@nt-1\endcsname + \fi} + +\def\switch@pmx@aux#1{% + % using PMX, automatically activate auxlyr context for #1 after \nextvoice + \ifx\nextvoice\undefined % not using PMX + #1% + \else % using PMX + \call@lyrmode + \if@pmx@nextvoice % upper PMX voice + \if@lyrmode\lyrmode@main \else\pmx@auxmode \fi + \else % lower PMX voice + \if@lyrmode\pmx@auxmode \else\lyrmode@main \fi + \fi + \main@aux@or@not{#1}% + \fi} + + + +% lyrmode umschalten: +\def\switch@lyrmode#1#2#3{% + % #1: instrument number + % #2: staff-of-instrument number + % #3: lyrmode setting + \ifnum#1=0 % % alle Zeilen einbeziehen + \switch@lyrmode@all@instrum#3% + \else % nur 1 Zeile + \global\expandafter\let\csname zlm@#1-#2\endcsname=#3% + \fi} + +% loop over all possible instruments +\def\switch@lyrmode@all@instrum#1{% + \m@loop \switch@lyrmode@all@staves#1\repeat} + +% loop over 4 possible staves of instrument +\def\switch@lyrmode@all@staves#1{% + \begingroup + \count@=0 + \loop + \advance\count@ 1 + \switch@lyrmode{\the\noinstrum@nt}{\the\count@}#1% + \ifnum\count@<4 \repeat + \endgroup} +% ... nicht wahnsinnig effizient, zugegeben ... + + +\def\lyrmodenormal#1{\lyrmodenormalmulti{#1}1} +\def\lyrmodealter #1{\lyrmodealtermulti {#1}1} + +\def\lyrmodenormalmulti#1#2{\switch@lyrmode{#1}{#2}\@lyrmodefalse} +\def\lyrmodealtermulti #1#2{\switch@lyrmode{#1}{#2}\@lyrmodetrue } + +\def\lyrmodenormalhere{\lyrmode@here\@lyrmodefalse} +\def\lyrmodealterhere {\lyrmode@here\@lyrmodetrue } + +\def\lyrmode@here#1{% apply lyrmode to current instrument/staff context + % #1: lyrmode switch + \if@multistaff + \switch@lyrmode{\the\noinstrum@nt}{\the\noport@@}#1% + \else + \switch@lyrmode{\the\noinstrum@nt}1#1% + \fi} + +\lyrmodenormal0 % auf "normal" initialisieren + +% fuer Halsrichtungs-Automatik: Balkenlage in \s@bl vermerken +\def\balk@nlage#1{\global\expandafter\let + \csname s@bl\balken@nr\endcsname #1\relax} +\let\orig@i@bu\i@bu \def\i@bu{\balk@nlage o\orig@i@bu}% ben +\let\orig@i@bl\i@bl \def\i@bl{\balk@nlage u\orig@i@bl}% nten + +\let\orig@s@l@ctbeam\s@l@ctbeam +\def\s@l@ctbeam#1\relax{\orig@s@l@ctbeam#1\relax \xdef\balken@nr{\number\n@i}} + + +% Auto-Text ein- und ausschalten (innerhalb \notes...\enotes): +\def\lyricson{\forall@verses{\add@context\verse@on@context}} +\def\verse@on@context{% + \let\evtl@next@lyr\next@lyr + \add@context\verse@on@context} + +\def\lyricsoff{\forall@verses\clear@context} + +\def\lyric {\let\evtl@hyph\@hyphenfalse\futurelet\ast@risk\lyric@i} +\def\lyrich{\let\evtl@hyph\@hyphentrue \futurelet\ast@risk\lyric@i} + +\def\lyric@i{% + \ifx\ast@risk*% + \let\evtl@nolyr\relax \let\@next\lyric@ii + \else + \let\evtl@nolyr\nolyr \def\@next{\nolyr\lyric@ii*}% + \fi + \@next} + +% Silben abseits vom Haupttext ausgeben: +\def\lyric@ii*#1{\forall@verses{\@context\evtl@hyph\@lyric{#1}}\evtl@nolyr} + +% Manipulationen einzelner Haupttext-Silben: +\def\forall@context#1{\forall@verses{\add@context{#1}}} + +% 1 Silbe ausgeben: +\def\lyr{\forall@verses{\@context\next@lyr}} + +% Linksbuendig: +\def\llyr{\forall@context{\leftlyrtrue}} + +% Verlaengerungs-Strich: +\def\lyrrule{\forall@context{\@strichtrue}} + +% Horizontale Verschiebung (analog \roffset): +\def\lyroffset#1{\forall@context{\def\evtl@offset{\roffset{#1}}}} + +% Kein automatischer Text: +\def\nolyr{\forall@context{\let\evtl@next@lyr\empty}} + +% Kleinbuchstaben: +\def\lclyr{\forall@context{\let\evtl@klein\@klein}} +\def\@klein#1{\lowercase\expandafter{#1}} + +% Satzzeichen anhaengen: +\def\lyrpt#1{\forall@context{\def\evtl@komma{#1}}} + +% Punkt vom Ende abschneiden: +\def\lyrnop{\forall@context{\let\evtl@punktweg\@punktweg}} +\def\@punktweg#1{{\punktweg@rek#1\ende}} +\def\punktweg@rek#1#2\ende{% + \def\par@ii{#2}% + \ifx\par@ii\empty\else + \aftergroup#1% + \expandafter\punktweg@rek\par@ii\ende + \fi} + +% Melisma beginnen und abschliessen: +\def\beginmel{\forall@verses{\llyr\lyrrule\add@context\lyricsoff}} +\def\endmel{\forall@verses{\lyrruleend\add@context\lyricson}} + +% +% Bindebogen unter zwei Silben derselben Note: +% +\def\lyrlink {\lyr@link0} +\def\lowlyrlink{\lyr@link1} + +\def\lyr@link#1{% + % Bogen erstellen: + \setbox\lyr@linkbox=\hbox{$\smile$}% + % In Box der Breite eines Wortzwischenraums einsetzen: + \setbox\lyr@linkbox=\hbox to\the\fontdimen2\the\font{% + \hss + % Unter die Grundlinie druecken: + \lower\ht\lyr@linkbox\hbox{% + % Zusaetzlicher vertikaler Abstand zur Wortunterseite: + \lower1pt\hbox{% + \if#10\relax + \hbox{$\smile$}% + \else + % Buchstabe mit Unterlaenge -> auch darunter druecken: + \setbox\lyr@linkdepthbox=\hbox{y}% + \lower\dp\lyr@linkdepthbox\hbox{$\smile$}% + \fi}}% + \hss}% + % Keine zusaetzliche Tiefe fuer Bogen anrechnen: + \dp\lyr@linkbox=0pt + % Bogen setzen: + \box\lyr@linkbox} + +\makeatother diff --git a/Master/texmf-dist/tex/generic/musixtex/musixmad.tex b/Master/texmf-dist/tex/generic/musixtex/musixmad.tex index 850597a269d..18b705c2e96 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixmad.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixmad.tex @@ -19,11 +19,12 @@ \ifx\staffspacingxii\undefined\else\endinput\fi -\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 +% input musixadd before changing \catcode`\@ to avoid macro collision +\ifnum\maxinstruments<9 \input musixadd \fi -\ifnum\maxinstruments<\nin@ \input musixadd \fi +\immediate\write16{MusiXMore ADditional instruments T.113\space<28 June 2005>}% -\immediate\write10{MusiXMore ADditional instruments T.99\space<24 March 2000>}% +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 %\ifx\undefined\documentstyle \else % \errmessage{MusiXMAD+LaTeX will need too many dimension registers, it's diff --git a/Master/texmf-dist/tex/generic/musixtex/musixper.tex b/Master/texmf-dist/tex/generic/musixtex/musixper.tex index 22a365726d9..39dd908fca7 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixper.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixper.tex @@ -16,7 +16,7 @@ % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXPERcussion T.60\space<23 September 1996>}% +\immediate\write16{MusiXPERcussion T.60\space<23 September 1996>}% \ifx\undefined\drumclef \else \endinput \fi diff --git a/Master/texmf-dist/tex/generic/musixtex/musixpoi.tex b/Master/texmf-dist/tex/generic/musixtex/musixpoi.tex index c48cd536ebc..dcf33f4f956 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixpoi.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixpoi.tex @@ -17,16 +17,18 @@ % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXPOInted shorties 0.36\space<1 March 1995>} +%\immediate\write16{MusiXPOInted shorties 0.36\space<1 March 1995>} +\immediate\write16{MusiXPOInted shorties T.114\space<16 June 2008>} -\ifx\undefined\ccup \else \endinput \fi +%\ifx\undefined\ccup \else \endinput \fi % conflicts since musixtex.tex T.111 defines \ccup +\ifx\undefined\zcccclpp \else \endinput \fi \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 -\def\@ccup{\n@vii\@xli \let\st@m\up@flag \g@qp} +%\def\@ccup{\n@vii\@xli \let\st@m\up@flag \g@qp}% moved into musixtex.tex since T.111 \def\@cccup{\n@vii42\let\st@m\up@flag \g@qp} \def\@ccccup{\n@vii43\let\st@m\up@flag \g@qp} -\def\@cclp{\n@vii46\let\st@m\down@flag \g@qp} +%\def\@cclp{\n@vii46\let\st@m\down@flag \g@qp}% moved into musixtex.tex at T.114 \def\@ccclp{\n@vii47\let\st@m\down@flag \g@qp} \def\@cccclp{\n@vii48\let\st@m\down@flag \g@qp} \def\@ccupp{\n@vii\@xli \let\st@m\up@flag \g@qpp} @@ -35,10 +37,10 @@ \def\@cclpp{\n@vii46\let\st@m\down@flag \g@qpp} \def\@ccclpp{\n@vii47\let\st@m\down@flag \g@qpp} \def\@cccclpp{\n@vii48\let\st@m\down@flag \g@qpp} -\def\ccup{\q@symbol\@ccup} -\def\zccup{\advancefalse\ccup} -\def\cclp{\q@symbol\@cclp} -\def\zcclp{\advancefalse\cclp} +%\def\ccup{\q@symbol\@ccup}% moved into musixtex.tex since T.111 +%\def\zccup{\advancefalse\ccup}% moved into musixtex.tex at T.114 +%\def\cclp{\q@symbol\@cclp}% moved into musixtex.tex since T.111 +%\def\zcclp{\advancefalse\cclp}% moved into musixtex.tex at T.114 \def\ccupp{\q@symbol\@ccupp} \def\zccupp{\advancefalse\ccupp} \def\cclpp{\q@symbol\@cclpp} @@ -62,3 +64,4 @@ \catcode`\@=\catcodeat \endinput + diff --git a/Master/texmf-dist/tex/generic/musixtex/musixps.tex b/Master/texmf-dist/tex/generic/musixtex/musixps.tex new file mode 100644 index 00000000000..c2a392c80be --- /dev/null +++ b/Master/texmf-dist/tex/generic/musixtex/musixps.tex @@ -0,0 +1,961 @@ +%% PostScript slurs, ties and crescendos +% Coded by Stanislav Kneifl + +\ifx\undefined\liftcresc\else\endinput\fi + +\immediate\write16{MusiXPS PostScript slurs, ties and crescendos 0.92 (12.5.2002)}% + +\catcode`\@=11 + + +%%%% remove the next line if you include this file into a format (see endnotes!). + +\special{header=psslurs.pro}% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\mxsk=mxsk + +% you can change these values if you want... +% Offsets are in \internotes measured vertically from the center and +% horizontally from the left edge of the notehead. +% see the doc at the end for (short) explanation + +\def\psslurraise{1.6} % vertical offset of the slur beginnings/endings +\def\psbslurraise{2} % vert. offset for slurs on beams + +\def\psLslurskip{-0.2} % horiz. offset of slurs shifted more to the left +\def\pslslurskip{0.4} % horiz. offset of slurs shifted to the left +\def\psislurskip{1.4} % horiz. offset of the slur beginnings +\def\pstslurskip{1.2} % horiz. offset of the slur endings +\def\psrslurskip{2.8} % horiz. offset of slurs shifted to the right + +\def\psfslurhgt{0.7} % height coeficient of the 'f'lat slurs +\def\psslurhgt{1} % height coeficient of normal slurs +\def\pshslurhgt{1.6} % height coeficient of 'h'igh slurs +\def\psHslurhgt{2.2} % height coeficient of 'H'igh slurs +\def\psHHslurhgt{2.8} % height coeficient of 'HH'igh slurs +\def\psslurmaxhgt{40} % maximal height of the slur + % (before multiplication by \...slurhgt !!) + +\def\psslurangul{0.17} % angularity of normal, flat and high slurs +\def\psHslurangul{0.15} % angularity of High slurs +\def\psHHslurangul{0.13} % angularity of HHigh slurs + +\def\pstieraise{1.3} % vertical offset of the ties +\def\psitieskip{2.6} % horiz. offset of the tie beginnings +\def\psttieskip{0.3} % horiz. offset of the tie endings +\def\psltieskip{-0.2} % horiz. offset of ties shifted to the left +\def\psrtieskip{3} % horiz. offset of ties shifted to the right + +\def\pstiehgt{0.7} % height coeficient of the ties +\def\pstiemaxhgt{30} % maximal height if the ties +\def\pstieflathgt{20} % maximal height if the ties between staff lines +\def\pstieangul{0.14} % angularity of the ties + +%%%% + +\def\d@nh{-5} % default altitude of the crescendos in \internote +\def\setcrescheight{\def@it\d@nh} + +\def\sl@space{-3pt} % neg. space before continued slurs, ties and crescs. +\def\h@tielim{15pt} % limit for drawing half continued ties + +\def\nohalfties{\def\h@tielim{\z@}} +\def\halfties{\def\h@tielim{15pt}} +\newif\ifslopebrkslurs +\slopebrkslursfalse + +\def\dotted{\def\d@sh{1}} % the '1' is important! +\def\solid{\def\d@sh{0}} +\def\Dotted{\def\D@sh{1}} +\def\Solid{\def\D@sh{0}} +\Solid\solid + +\def\nosluradjust{\gdef\s@adj{0}} +\def\sluradjust{\gdef\s@adj{1}} +\def\Nosluradjust{\gdef\S@adj{0}\gdef\s@adj{0}} +\def\Sluradjust{\gdef\S@adj{1}\gdef\s@adj{1}} +\Sluradjust + +\def\notieadjust{\gdef\t@adj{0}} +\def\tieadjust{\gdef\t@adj{1}} +\def\Notieadjust{\gdef\T@adj{0}\gdef\t@adj{0}} +\def\Tieadjust{\gdef\T@adj{1}\gdef\t@adj{1}} +\Notieadjust + +\newif\ifdangermessages\dangermessagestrue + +\def\@clr#1{\let#1\empty} +\def\def@it#1#2{\def#1{#2}} +\def\slurtext{\def@it\s@tx} +\let\s@tx\empty +\def\lr@lap#1{\rlap{\hss#1}} + +% how many slurs will be stored into the TeX's registers? +% => how many slurs can go across the page break? +% determines also the needed amount of the following registers. +\let\max@slurs\t@n + +\let\slur@alt=\s@xi \let\slur@hgt=\s@Yv \let\slur@lift=\s@yi +\let\slur@alti=\s@xii \let\slur@hgti=\s@Yvi \let\slur@lifti=\s@yii +\let\slur@altii=\s@xiii \newdimen\slur@hgtii \let\slur@liftii=\s@yiii +\let\slur@altiii=\s@xiv \newdimen\slur@hgtiii \let\slur@liftiii=\s@yiv +\let\slur@altiv=\s@xv \newdimen\slur@hgtiv \let\slur@liftiv=\s@yv +\let\slur@altv=\s@Y \newdimen\slur@hgtv \let\slur@liftv=\s@yvi +\let\slur@altvi=\s@Yi \newdimen\slur@hgtvi \let\slur@liftvi=\s@Ni +\let\slur@altvii=\s@Yii \newdimen\slur@hgtvii \let\slur@liftvii=\s@Nii +\let\slur@altviii=\s@Yiii \newdimen\slur@hgtviii \let\slur@liftviii=\s@Niii +\let\slur@altix=\s@Yiv \newdimen\slur@hgtix \let\slur@liftix=\s@Niv + +% in the 'lift' register is coded the altitude of the ending point of the slur +% at the end of a line (y1) and the relative alt. of the starting point at the +% beginning of a line (y2): y1=(reg div 65536)-16384, y2=(reg mod 65536)-16384 + +\newdimen\tie@alt \newdimen\tie@hgt +\newdimen\tie@alti \newdimen\tie@hgti +\newdimen\tie@altii \newdimen\tie@hgtii +\newdimen\tie@altiii \newdimen\tie@hgtiii +\newdimen\tie@altiv \newdimen\tie@hgtiv +\newdimen\tie@altv \newdimen\tie@hgtv +\newdimen\tie@altvi \newdimen\tie@hgtvi +\newdimen\tie@altvii \newdimen\tie@hgtvii +\newdimen\tie@altviii \newdimen\tie@hgtviii +\newdimen\tie@altix \newdimen\tie@hgtix + +\newdimen\cresc@alt +\newdimen\cresc@alti +\newdimen\cresc@altii +\newdimen\cresc@altiii +\newdimen\cresc@altiv +\newdimen\cresc@altv +\newdimen\cresc@altvi +\newdimen\cresc@altvii +\newdimen\cresc@altviii +\newdimen\cresc@altix + +\newcount\pss@rega \pss@rega=\z@ % PS slurs +\newcount\pss@regb \pss@regb=\z@ +\newcount\pst@rega \pss@rega=\z@ % PS ties +\newcount\pst@regb \pss@regb=\z@ +\newcount\psc@rega \pss@rega=\z@ % PS [de]crescendos +\newcount\psc@regb \pss@regb=\z@ + +\newif\if@up +\newif\if@dash + +% information in these registers is binary coded: +% a: lower bit is set ( 2^2i ): there is a pending slur number i +% upper bit is set ( 2^(2i+1) ): slur number i already went across line break +% b: lower bit is set: slur/tie is dotted +% upper bit is set: slur/tie is lower / decrescendo + +% everything else is stored in PostScript variables. If you run out +% of the PostScript dictionary used for slurs, you can increase its size +% by changing the number 200 in the first line of psslurs.pro to anything +% reasonable. (The number says how many tokens can be defined.) + +%%%%%%% + +% input is i for 2^i and register to extract the bits from +% in reg. n@i will be only the bits 2^2i and 2^(2i+1) +% in n@vi will be these bits shifted to 2^0 and 2^1, +% n@ii will be set to 2^2i +\def\get@bits#1#2{\n@i=#1\relax\n@ii\@ne + \loop\ifnum\n@i>\z@\multiply\n@ii\f@ur\advance\n@i\m@ne\repeat + \n@i=\n@ii\multiply\n@i\f@ur\n@iii #2\relax + \divide\n@iii\n@i\multiply\n@iii\n@i\n@i=#2\relax + \advance\n@i-\n@iii\divide\n@i\n@ii\n@vi\n@i\multiply\n@i\n@ii\relax} + +\def\s@l@slur#1{\xdef\th@salt{\csname slur@alt\romannumeral#1\endcsname}% + \xdef\th@shgt{\csname slur@hgt\romannumeral#1\endcsname}% + \xdef\th@slift{\csname slur@lift\romannumeral#1\endcsname}} + +\def\s@l@tie#1{\xdef\th@salt{\csname tie@alt\romannumeral#1\endcsname}% + \xdef\th@shgt{\csname tie@hgt\romannumeral#1\endcsname}} + +\def\s@l@cresc#1{\xdef\th@salt{\csname cresc@alt\romannumeral#1\endcsname}} + +\def\gt@pssb#1#2{\s@l@ctbeam#1\relax\getcurpos\advance\y@v#2\relax % \y@v = hpos + \advance\y@v-\b@x + \y@ii\b@p\y@v \divide\y@ii\tw@nty \advance\y@ii\b@z + \advance\y@ii-\altportee\n@ii=\internote \divide\n@ii6553 + \n@i=\y@ii\divide\n@i\n@ii\divide\n@i6554\relax} + +\def\t@bslur#1#2#3#4{\n@vii\n@i\ifnum#3<\fiv@t@@n\get@bits{#3}\pss@regb\n@i\n@vii + \ifnum\n@vi>\@ne\gt@pssb{#4}\z@\T@slur{#3}{\psbslurraise}{0}{#1}{#2}% + \else\gt@pssb{#4}{\tw@\qn@width}\T@slur{#3}{\psbslurraise}{2.4}{#1}{#2}\fi + \else\gt@pssb{#4}\z@\T@slur{#3}{1.7}{0}{#1}{#2}\fi} + + +%%%%%% slurs %%%%%%%%%%%%%%%%%%% + +% ID, pitch, voffset, hoffset +% all offsets are in \internote, the slur direction is determined +% by the sign of the vertical offset. + +\def\iSlur#1#2{\inhgetn@i#2\relax\I@slur{#1}} + +% ID, voffset, hoffset; \n@i = pitch +\def\I@slur#1#2#3{\y@i=\n@i\internote + \ifdim#2\internote<\z@\@upfalse\else\@uptrue\fi + \advance\y@i#2\internote\raise\y@i\rlap{\hskip #3\internote + \special{ps: slur@Dict begin CP /S#1y1 ED /S#1x1 ED + /S#1hgt (\the\y@i) GD N /S#1brk S#1hgt (\the\internote) GD + \ifslopebrkslurs 3 \else 1 \fi\if@up 1 \else -1 \fi M M A N /S#1lift 0 N + /S#1alt (\the\altportee) GDAR N /S#1dir \if@up1\else-1\fi\space N + /S#1dash \d@sh\space N /S#1adj \s@adj\space N end}}% + \ifnum#1>\fourt@@n + \ifnum#1=99\relax\else + \ifdangermessages\message{Danger! Slur with ID >14.}\fi\fi + \else\n@iv\n@i\get@bits{#1}\pss@rega + \ifcase\n@i\else\message{Slur #1 was re-opened.}% + \advance\pss@rega-\n@i\fi % clear the bits + \global\advance\pss@rega\n@ii % and set the lower bit + \get@bits{#1}\pss@regb\global\advance\pss@regb-\n@i % clear the bits + \ifnum\d@sh=1\relax\global\advance\pss@regb\n@ii\fi + \if@up\else\multiply\n@ii\tw@\global\advance\pss@regb\n@ii\fi + \ifnum#1<\max@slurs\s@l@slur{#1}% + \global\th@salt\altportee\global\th@shgt\y@i\th@slift\n@iv + \if@up\advance\th@slift\fiv@\else\advance\th@slift-\fiv@\fi + \advance\th@slift 16384\relax\multiply\th@slift65536\relax + \global\advance\th@slift16384\relax + \fi\fi\gdef\d@sh{\D@sh}\gdef\s@adj{\S@adj}} + +% ID, height, voffset, hoffset, curvature, angularity +\def\tSlur#1#2{\inhgetn@i#2\relax\T@slur{#1}} + +\def\T@slur#1#2#3#4#5{\n@vii\n@i\n@ii\@ne + \ifnum#1<\fiv@t@@n + \get@bits{#1}\pss@rega + \global\advance\pss@rega-\n@i + \ifcase\n@i\message{Not opened slur #1 was closed.}\n@ii\z@ + \else + \ifnum\n@vi>\@ne % the slur was breaked + \get@bits{#1}\pss@regb % it's not necessary to clear this register + \ifnum\n@vi>\@ne\@upfalse\else\@uptrue\fi + \ifodd\n@vi\@dashtrue\else\@dashfalse\fi + \y@ii=\lin@pos\advance\y@ii\locx@skip\advance\y@ii#3\internote + \advance\y@ii\sl@space + \y@i=\n@vii\internote\advance\y@i\if@up\else-\fi#2\internote + \ifnum#1<\max@slurs + \s@l@slur{#1}\n@ii\th@slift\divide\n@ii65536\relax + \multiply\n@ii65536\relax\n@iii\th@slift\advance\n@iii-\n@ii + \advance\n@iii-16384\y@iii=\n@iii\internote\advance\y@iii\th@shgt + \raise\y@i\rlap{\hskip #3\internote\special{ps: slur@Dict begin + CP S (\the\y@ii) GDAR SB /S#1x1 ED + (\the\y@i) GD (\the\y@iii) GD SB 4 AR M A /S#1y1 ED + (\the\internote) GD (\the\th@shgt) GD (\the\y@i) GD + S#1x1 S#1y1 CP #4 \if@up\else neg \fi #5 30 + \if@dash1\else0\fi\space \s@adj\space 90 DS end}}% + \else + \raise\y@i\rlap{\hskip #3\internote\special{ps: slur@Dict begin + CP S (\the\y@ii) GDAR SB /S#1x1 ED + S#1hgt S#1lift (\the\internote) GD M A 4 AR M + (\the\y@i) GDAR SB SB /S#1y1 ED + (\the\internote) GD S#1hgt (\the\y@i) GD + S#1x1 S#1y1 CP #4 \if@up\else neg \fi #5 30 + S#1dash \s@adj\space 90 DS end}}% + \fi\n@ii\z@ + \fi + \fi + \fi + \ifcase\n@ii\else\y@ii=#2\internote\setbox\z@=\hbox{\s@tx}% + \y@i=\n@vii\internote\raise\y@i\rlap{\hskip #3\internote + \special{ps: slur@Dict begin (\the\internote) GD S#1hgt (\the\y@i) GD + #2 (\the\internote) GD M S#1dir M A + S#1x1 S#1y1 CP (\the\y@ii) GDAR S#1dir M SB + #4 S#1dir M #5 \psslurmaxhgt\space S#1dash S#1adj 90 DS + /ay1 ay1 (\the\ht\z@) GDAR -10 AR add dir mul add def}% + \lr@lap{\box\z@}\special{ps: end}}% + \fi\@clr\s@tx} + +\def\liftslur#1#2{\special{ps: slur@Dict begin /S#1lift #2 N end}% + \ifnum#1<\t@n\s@l@slur{#1}\divide\th@slift65536\relax + \multiply\th@slift65536 \advance\th@slift16384\relax + \advance\th@slift#2\relax\fi} + +\def\breakslur#1#2{\inhgetn@i#2\relax\y@i=\n@i\internote\special + {ps: slur@Dict begin /S#1brk (\the\y@i) GD N end}% + \ifnum#1<\t@n\s@l@slur{#1}\n@ii\th@slift\divide\n@ii65536\relax + \multiply\n@ii65536 \advance\th@slift-\n@ii\advance\n@i16384\relax + \multiply\n@i65536 \global\advance\th@slift\n@i\fi} + +%%%%% [de]crescendos %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ID, height, hoffset + +\def\Icresc{\i@cresc0} +\def\Idecresc{\i@cresc2} + +\def\i@cresc#1#2#3#4{\y@i=#3\internote\raise\y@i\rlap + {\hskip#4\internote\advance\y@i\altportee\special{ps: slur@Dict begin + CP /C#2y1 ED /C#2x1 ED /C#2alt (\the\y@i) GD N + /C#2dir #1 N end}}% + \ifnum#2>\fourt@@n + \ifdangermessages\message{Danger! [De]crescendo with ID >14.}\fi + \else\get@bits{#2}\psc@rega + \ifcase\n@i\else\message{[De]crescendo #2 was re-opened.}% + \advance\psc@rega-\n@i\fi + \global\advance\psc@rega\n@ii + \get@bits{#2}\psc@regb\advance\psc@regb-\n@i + \multiply\n@ii#1\relax + \global\advance\psc@regb\n@ii\relax + \ifnum#2<\max@slurs\s@l@cresc{#2}% + \advance\y@i\altportee\global\th@salt\y@i\fi\fi} + +\def\Tcresc#1#2#3{\n@ii\@ne\n@i=#1\relax + \ifnum\n@i<\fiv@t@@n + \get@bits{#1}\psc@rega\global\advance\psc@rega-\n@i + \ifcase\n@i\message{Not opened crescendo #1 was closed.}\n@ii\z@ + \else + \ifnum\n@vi>\@ne % the crescendo was breaked + \get@bits{#1}\psc@regb % it's not necessary to clear this register + \y@ii=\lin@pos\advance\y@ii\locx@skip\advance\y@ii#3\internote + \advance\y@ii\sl@space + \zchar{#2}{\hskip #3\internote\special{ps: slur@Dict begin + CP S (\the\y@ii) GDAR SB S CP 4 \the\n@vi\space R + \the\n@vi\space 0 eq { DHC } { DC } ifelse end}}% + \global\n@ii\z@\fi + \fi\fi + \ifcase\n@ii\else\zchar{#2}{\hskip#3\internote\special{ps: slur@Dict begin + C#1x1 C#1y1 CP 4 C#1dir R DC end}}\fi} + +\def\liftcresc#1#2{\y@i=#2\internote\ifnum#1<\max@slurs\s@l@cresc{#1}% + \global\advance\th@salt\y@i\else\special{ps: slur@Dict begin + /C#1alt (\the\y@i) GDAR C#1alt A N end}\fi} + + +%%%% ties %%%%%%%%%%%%%%%%%%%%%% + +\def\iTieu{\i@tie{1}} +\def\iTied{\i@tie{-1}} + +% 1/-1, ID, height, hoffset +\def\i@tie#1#2#3#4{\inhgetn@i#3\relax\y@i=\pstieraise\internote + \multiply\y@i#1\relax\advance\y@i\n@i\internote\raise\y@i\rlap + {\hskip #4\internote\special{ps: slur@Dict begin + /S#1alt (\the\altportee) GDAR N + CP /T#2y1 ED /T#2x1 ED /T#2hgt (\the\y@i) GD N + /T#2dir #1 N /T#2dash \d@sh\space N + /T#2adj \t@adj\space N end}}% + \ifnum #2>\fourt@@n + \ifnum#2=99\relax\else + \ifdangermessages\message{Danger! Tie with ID >14.}\fi\fi + \else\get@bits{#2}\pst@rega + \ifcase\n@i\else\message{Tie #2 was re-opened.}% + \global\advance\pst@rega-\n@i\fi + \global\advance\pst@rega\n@ii + \get@bits{#2}\pst@regb\global\advance\pst@regb-\n@i % clear the bits + \ifnum\d@sh=1\relax\global\advance\pst@regb\n@ii\fi + \ifnum#1=1\relax\else\multiply\n@ii\tw@\global\advance\pst@regb\n@ii\fi + \ifnum#2<\max@slurs\s@l@tie{#2}% + \global\th@salt\altportee\global\th@shgt\y@i\fi + \fi\gdef\d@sh{\D@sh}\gdef\t@adj{\T@adj}} + +% ID, hoffset +\def\tTie#1#2{\n@ii\@ne + \ifnum#1<\fiv@t@@n + \get@bits{#1}\pst@rega + \global\advance\pst@rega-\n@i + \ifcase\n@i\message{Not opened tie #1 was closed.}\n@ii\z@ + \else + \ifnum\n@vi>\@ne % the tie was breaked + \get@bits{#1}\pst@regb % it's not necessary to clear this register + \ifnum\n@vi>\@ne\@upfalse\else\@uptrue\fi + \ifodd\n@vi\@dashtrue\else\@dashfalse\fi + \y@ii=\lin@pos\advance\y@ii\locx@skip\advance\y@ii#2\internote + \advance\y@ii\sl@space + \ifnum#1<\max@slurs\s@l@tie{#1}% + \ifdim\y@ii<\h@tielim + \raise\th@shgt\rlap{\hskip-0.3\internote + \ifdim\internote>.9\Internote\n@i=\z@\else + \ifdim\internote<.7\Internote \n@i=\@cxxviii + \else\n@i=64\fi\fi\if@up\else\advance\n@i\@ne\fi + \mxsk\char\n@i}% + \else + \rlap{\hskip #2\internote\special{ps: slur@Dict begin + (\the\internote) GD (\the\th@shgt) GD DP + CP S (\the\y@ii) GDAR SB S (\the\th@shgt) + GDAR SB DP CP P S \if@up \pstiehgt\space + \else -\pstiehgt\space \fi \pstieangul\space \pstiemaxhgt\space + \if@dash 1 \else 0 \fi \t@adj\space 40 DS end}}% + \fi + \else + \rlap{\hskip #2\internote\special{ps: slur@Dict begin + (\the\internote) GD T#1hgt GD DP + CP S (\the\y@ii) GDAR SB S T#1hgt GDAR SB DP CP P S + \if@up -\pstiehgt\space \else \pstiehgt\space \fi + \pstieangul\space \pstiemaxhgt\space \if@dash 1 \else 0 \fi + \t@adj\space 40 DS end}}% + \fi + \global\n@ii=\z@ + \fi + \fi + \fi + \ifcase\n@ii\else + \rlap{\hskip#2\internote + \special{ps: slur@Dict begin (\the\internote) GD T#1hgt DP + T#1x1 T#1y1 CP P T#1y1 + \pstiehgt\space T#1dir M \pstieangul\space \pstiemaxhgt\space T#1dash T#1adj 40 DS end}}% + \fi} + + +%%%%%%% simple slurs %%%%%%%%%%%%%%%%% + +% #1 start pitch #2 final pitch #3 sense(u,d) #4 length[noteskip] + +% \s@Y = vert. offset, \y@ii = horiz. offset at the end, \y@iii add to length +% \y@v = length + +\def\C@sl#1#2#3#4{\inhgetn@i#1\relax \n@ii\n@i\inhgetn@i#2\relax + \if d#3 \s@vy-\s@vy \ifx\@ne\nxt \y@ii\z@\fi \fi + \y@v#4\noteskip\advance\y@v\y@iii\advance\y@ii-\y@iii + \rlap{\hskip\y@ii\y@i=\n@ii\internote\advance\y@i\s@vy + \y@ii=\n@i\internote\advance\y@ii\s@vy\setbox\z@=\hbox{\s@tx}% + \ifx\s@tx\empty\def\tx@sp{1}\else\ifdim\y@v<\tw@nty\internote\def\tx@sp{1.5}% + \else\ifdim\y@v<\@l\internote\def\tx@sp{1.2}\else\def\tx@sp{1}\fi\fi\fi + \special{ps: slur@Dict begin (\the\internote) GD + (\the\y@i) GD (\the\y@ii) GD CP (\the\y@i) GDAR swub + CP exch (\the\y@v) GDAR add exch (\the\y@ii) GDAR sub + \if d#3 -1 \else 1 \fi \tx@sp\space mul \psslurangul\space + \psslurmaxhgt\space \d@sh\space \s@adj\space 90 DS + /ax1 ax1 (\the\y@v) GDAR add def /ay1 ay1 (\the\y@ii) GDAR sub + (\the\ht\z@) GDAR dir mul add def}\lr@lap{\unhbox\z@}\special{ps: end}}% + \@clr\s@tx\gdef\d@sh{\D@sh}\gdef\s@adj{\S@adj}} + + +%%%%%%% breaking the line %%%%%%%%%%%%%%%%% + +\def\br@slur{\divide\n@v\tw@ + \ifodd\n@v % the slur was breaked again + \y@i=\lin@pos\advance\y@i\x@skip\advance\y@i-\tw@\p@ + \advance\y@i\sl@space + \ifnum\n@iv<\max@slurs\s@l@slur\n@iv\n@i\th@slift\divide\n@i65536% + \n@ii\n@i\advance\n@ii-16384\y@iii=\n@ii\internote + \multiply\n@i65536 \n@ii\th@slift\advance\n@ii-\n@i + \advance\n@ii-16384\y@ii=\n@ii\internote\advance\y@ii\th@shgt + \ifnum\n@vi>\@ne\@upfalse\else\@uptrue\fi + \raise\th@salt\rlap{\hskip -2pt\special + {ps: slur@Dict begin /in (\the\internote) GD N + in (\the\y@ii) GD (\the\y@iii) GD CP S (\the\y@i) GD + 4 AR M SB S (\the\y@ii) GDAR SB + CP (\the\y@iii) GDAR SB \if@up1\else-1\fi\space + 0.13 30 \ifodd\n@vi 1 \else 0 \fi \s@adj\space 90 DS end}}% + \else + \rlap{\hskip -2pt\special{ps: slur@Dict begin + /in (\the\internote) GD N in S\the\n@iv hgt + S\the\n@iv lift in M A S\the\n@iv brk + CP S (\the\y@i) GDAR SB in 10 AR M A S + S\the\n@iv hgt S\the\n@iv lift in M A 4 AR M SB + S\the\n@iv alt 4 AR M SB CP S\the\n@iv brk + S\the\n@iv alt A 4 AR M SB S\the\n@iv dir + 0.13 30 S\the\n@iv dash S\the\n@iv adj 90 DS end}}% + \fi + \else % the slur was breaked the first time + \rlap{\hskip-2pt\special{ps: slur@Dict begin (\the\internote) GD + S\the\n@iv hgt S\the\n@iv brk S\the\n@iv x1 S\the\n@iv y1 CP P + S\the\n@iv y1 S\the\n@iv hgt S\the\n@iv brk SB 4 AR M A + S\the\n@iv dir 0.17 \psslurmaxhgt\space S\the\n@iv dash S\the\n@iv adj 90 DS end}}% + \get@bits\n@iv\pss@rega + \multiply\n@ii\tw@\global\advance\pss@rega\n@ii\fi} + + +\def\br@cresc{\divide\n@v\tw@ + \ifodd\n@v % the crescendo was breaked again + \y@i=\lin@pos\advance\y@i\x@skip\advance\y@i-\tw@\p@ + \advance\y@i\sl@space + \ifnum\n@iv<\max@slurs\s@l@cresc\n@iv + \rlap{\hskip-2pt\divide\n@vi\tw@\special{ps: slur@Dict begin CP S + (\the\y@i) GDAR SB S (\the\th@salt) GDAR SB DP CP P S + 4 \ifodd\n@vi 2 \else 0 \fi R DHC end}}% + \else + \rlap{\hskip-2pt\divide\n@vi\tw@\special{ps: slur@Dict begin CP S + (\the\y@i) GDAR SB (\the\internote) GD 10 AR M A S + C\the\n@iv alt GDAR SB DP CP P S + 4 C\the\n@iv dir R DHC end}}\fi + \else % the crescendo was breaked the first time + \rlap{\hskip-2pt\special{ps: slur@Dict begin + C\the\n@iv x1 C\the\n@iv y1 DP CP P S + 4 C\the\n@iv dir R C\the\n@iv dir 0 eq + { DC } { DHC } ifelse end}}% + \get@bits\n@iv\psc@rega + \multiply\n@ii\tw@\global\advance\psc@rega\n@ii\fi} + + +\def\br@tie{\divide\n@v\tw@ + \ifodd\n@v % the tie was breaked again + \y@i=\lin@pos\advance\y@i\x@skip\advance\y@i-\tw@\p@ + \advance\y@i\sl@space + \ifnum\n@iv<\max@slurs\s@l@tie\n@iv + \ifnum\n@vi>\@ne\@upfalse\else\@uptrue\fi + \y@ii\th@salt\advance\y@ii\th@shgt + \raise\y@ii\rlap{\hskip-2pt\special{ps: slur@Dict begin + (\the\internote) GD (\the\th@shgt) GD DP CP S (\the\y@i) GDAR SB S + CP \if@up \pstiehgt\space \else -\pstiehgt\space \fi \pstieangul\space + \pstiemaxhgt\space \ifodd\n@vi 1 \else 0 \fi \t@adj\space 40 DS end}}% + \else + \rlap{\hskip-2pt\special{ps: slur@Dict begin + (\the\internote) GD T\the\n@iv hgt DP CP S (\the\y@i) + GDAR SB (\the\internote) GD 10 AR M A S + T\the\n@iv alt T\the\n@iv hgt A 4 AR M SB DP + CP P S \pstiehgt\space T\the\n@iv dir M + \pstieangul\space \pstiemaxhgt\space T\the\n@iv dash T\the\n@iv adj 40 DS end}}\fi + \else % the tie was breaked the first time + \rlap{\hskip-2pt\special{ps: slur@Dict begin + (\the\internote) GD T\the\n@iv hgt DP + T\the\n@iv x1 T\the\n@iv y1 DP CP P S + \pstiehgt\space T\the\n@iv dir M \pstieangul\space \pstiemaxhgt\space + T\the\n@iv dash 40 T\the\n@iv adj DS end}}% + \get@bits\n@iv\pst@rega + \multiply\n@ii\tw@\global\advance\pst@rega\n@ii\fi} + +\let\mxps@oldsuspend=\z@suspend + +\def\z@suspend{% +% cut PostScript slurs + {\n@iv\z@\n@v\pss@rega\n@vi\pss@regb + \loop\ifnum\n@v>\z@ + \ifodd\n@v{\br@slur}\fi\divide\n@v\f@ur + \advance\n@iv\@ne\divide\n@vi\f@ur + \repeat}% +% cut PostScript [de]crescendos + {\n@iv=\z@\n@v=\psc@rega\n@vi\psc@regb + \loop\ifnum\n@v>\z@ + \ifodd\n@v{\br@cresc}\fi\divide\n@v\f@ur + \advance\n@iv\@ne\divide\n@vi\f@ur + \repeat}% +% cut PostScript ties + {\n@iv=\z@\n@v=\pst@rega\n@vi\pst@regb + \loop\ifnum\n@v>\z@ + \ifodd\n@v{\br@tie}\fi\divide\n@v\f@ur + \advance\n@iv\@ne\divide\n@vi\f@ur + \repeat}% + \special{ps: slur@Dict begin /pss@rega \the\pss@rega\space N + /psc@rega \the\psc@rega\space N /pst@rega \the\pst@rega\space N end }% +% do all other mxtex stuff + \mxps@oldsuspend} + +% checking for lost slurs + +\def\checkslurs{ + \ifcase\pss@rega\else\message{Warning! Opened slur(s) at checkpoint!}\fi + \ifcase\psc@rega\else\message{Warning! Opened crescendo(s) at checkpoint!}\fi + \ifcase\pst@rega\else\message{Warning! Opened tie(s) at checkpoint!}\fi} + + +%%%%%% common abbreviations %%%%%%%%%%%%%%%%%%%% + +\def\isluru#1#2{\iSlur{#1}{#2}{\psslurraise}{\psislurskip}} +\def\islurd#1#2{\iSlur{#1}{#2}{-\psslurraise}{\psislurskip}} +\def\irsluru#1#2{\iSlur{#1}{#2}{\psslurraise}{\psrslurskip}} +\def\irslurd#1#2{\iSlur{#1}{#2}{-\psslurraise}{\psrslurskip}} +\def\ilsluru#1#2{\iSlur{#1}{#2}{\psslurraise}{\pslslurskip}} +\def\ilslurd#1#2{\iSlur{#1}{#2}{-\psslurraise}{\pslslurskip}} +\def\iLsluru#1#2{\iSlur{#1}{#2}{\psslurraise}{\psLslurskip}} +\def\iLslurd#1#2{\iSlur{#1}{#2}{-\psslurraise}{\psLslurskip}} + +\def\tfslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pstslurskip}{\psfslurhgt}{\psslurangul}} +\def\tslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pstslurskip}{\psslurhgt}{\psslurangul}} +\def\thslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pstslurskip}{\pshslurhgt}{\psslurangul}} +\def\tHslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pstslurskip}{\psHslurhgt}{\psHslurangul}} +\def\tHHslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pstslurskip}{\psHHslurhgt}{\psHHslurangul}} + +\def\trfslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psrslurskip}{\psfslurhgt}{\psslurangul}} +\def\trslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psrslurskip}{\psslurhgt}{\psslurangul}} +\def\trhslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psrslurskip}{\pshslurhgt}{\psslurangul}} +\def\trHslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psrslurskip}{\psHslurhgt}{\psHslurangul}} +\def\trHHslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psrslurskip}{\psHHslurhgt}{\psHHslurangul}} + +\def\tlfslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pslslurskip}{\psfslurhgt}{\psslurangul}} +\def\tlslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pslslurskip}{\psslurhgt}{\psslurangul}} +\def\tlhslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pslslurskip}{\pshslurhgt}{\psslurangul}} +\def\tlHslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pslslurskip}{\psHslurhgt}{\psHslurangul}} +\def\tlHHslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\pslslurskip}{\psHHslurhgt}{\psHHslurangul}} + +\def\tLfslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psLslurskip}{\psfslurhgt}{\psslurangul}} +\def\tLslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psLslurskip}{\psslurhgt}{\psslurangul}} +\def\tLhslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psLslurskip}{\pshslurhgt}{\psslurangul}} +\def\tLHslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psLslurskip}{\psHslurhgt}{\psHslurangul}} +\def\tLHHslur#1#2{\tSlur{#1}{#2}{\psslurraise}{\psLslurskip}{\psHHslurhgt}{\psHHslurangul}} + +% slur ID, beam ID +\def\iBsluru#1#2{\gt@pssb{#2}{\tw@\qn@width}\I@slur{#1}{\psbslurraise}{2.4}} +\def\iBslurd#1#2{\gt@pssb{#2}\z@\I@slur{#1}{-\psbslurraise}0} +\def\tBfslur{\t@bslur\psfslurhgt\psslurangul} +\def\tBslur{\t@bslur\psslurhgt\psslurangul} +\def\tBhslur{\t@bslur\pshslurhgt\psslurangul} +\def\tBHslur{\t@bslur\psHslurhgt\psHslurangul} +\def\tBhHslur{\t@bslur\psHHslurhgt\psHHslurangul} + + +\def\itieu#1#2{\iTieu{#1}{#2}{\psitieskip}} +\def\itied#1#2{\iTied{#1}{#2}{\psitieskip}} +\def\iltieu#1#2{\iTieu{#1}{#2}{\pslslurskip}} +\def\iltied#1#2{\iTied{#1}{#2}{\pslslurskip}} +\def\irtieu#1#2{\iTieu{#1}{#2}{\psrslurskip}} +\def\irtied#1#2{\iTied{#1}{#2}{\psrslurskip}} +\def\ttie#1{\tTie{#1}{\psttieskip}} +\def\tltie#1{\tTie{#1}{\psltieskip}} +\def\trtie#1{\tTie{#1}{\psrtieskip}} + +\def\icresc#1{\Icresc{#1}{\d@nh}{0}} +\def\idecresc#1{\Idecresc{#1}{\d@nh}{0}} +\def\tcresc#1{\Tcresc{#1}{\d@nh}{2}} +\let\tdecresc\tcresc + +\def\ilcresc#1{\Icresc{#1}{\d@nh}{-4}} +\def\ildecresc#1{\Idecresc{#1}{\d@nh}{-4}} +\def\tlcresc#1{\Tcresc{#1}{\d@nh}{-2}} +\let\tldecresc\tlcresc + +\def\ircresc#1{\Icresc{#1}{\d@nh}{4}} +\def\irdecresc#1{\Idecresc{#1}{\d@nh}{4}} +\def\trcresc#1{\Tcresc{#1}{\d@nh}{-6}} +\let\trdecresc\trcresc + +% for compatibility with old MusiXTeX slurs ... +\let\Tslur\tslur +\let\Ttie\ttie +\let\issluru\irsluru +\let\isslurd\irslurd +\let\tsslur\tLslur +\def\ibsluru#1#2{\iSlur{#1}{#2}8{\psrslurskip}} +\def\ibslurd#1#2{\iSlur{#1}{#2}{-8}{\psrslurskip}} +\def\tubslur#1#2{\tSlur{#1}{#2}8{\psrslurskip}{\psslurhgt}{\psslurangul}} +\def\tdbslur#1#2{\tSlur{#1}{#2}8{\pslslurskip}{\psslurhgt}{\psslurangul}} +\let\tbsluru=\tubslur +\let\tbslurd=\tdbslur +\let\istieu\irtieu +\let\istied\irtied +\let\itenu\irtieu +\let\itenl\irtied +\let\tstie\tltie +\let\tten\tltie +\let\Itenu\istieu +\let\Itenl\istied +\let\Liftslur\liftslur +% p1 p2 sense len +\def\slur#1#2#3#4{\csname islur#3\endcsname{99}{#1}% + \rlap{\hskip#4\noteskip\tslur{99}{#2}}} +\def\tie#1#2#3{\csname itie#2\endcsname{99}{#1}% + \rlap{\hskip#3\noteskip\ttie{99}}} + +\catcode`\@=\catcodeat + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +USAGE: +~~~~~~ +Basic usage is: + +\isluru0g - starts upper slur with ID 0 above the note 'g' +\tslur0i - terminates slur with ID 0. It will end above or below + the note 'i' with respect to the slur direction + +You can shift the starting or ending point slightly to the left +or right using \ilsluru, \ilslurd, \irsluru, \irslurd, \trslur and \tlslur. + +And finally you can make the slur a bit more flat than default +( \tfslur0f ), higher ( \thslur0f ), more higher ( \tHslur0f ) or +even more higher ( \tHHslur0f ). All combinations with shifting are +allowed (see the abbreviations above). These commands act like +\midslur for standard slurs. + +If this is not sufficient, you can use the \iSlur and \tSlur and adjust the +parameter as you want (see comments above their definitions) or even change +the default parameters. + +NOTE 1: The identification parameter should be a number greater + or equal to 0 and lower than 10. You can use even higher + numbers, but slurs, ties and crescendos with ID >10 + can not go over page break but can go across line break. + Slurs, ties and crescendos with ID >14 can't be breaked at all + (these slurs also can not be exactly positioned at a beam, so + don't use for example \tbslur{16}0; \ibslur{16}0 is safe). + If you know that a line break can not occur inside the slur + (probably inside a bar) you can happily use numbers + up to 2^31-1, which is also the maximal number of + simultaneously opened slurs :-). Such slurs will be also + a bit faster... + +NOTE 2: You can start a slur, tie and crescendo with the same ID, + the ID's are independent. This is not true for crescendos + and decrescendos. That means you can say \isluru0f\icresc0, + but not \icresc0\idecresc0, in which case you'll get a warning + message and the first crescendo will be forgotten. + +There are also macros for slurs begining or ending at a beam: + +\iBsluru{slur ID}{beam ID} +\iBslurd{slur ID}{beam ID} +\tBslur{slur ID}{beam ID} + +They are NOT THE SAME as for the original slurs, but a bit smarter... + +for example: + +\Notes\ibu0i0\iBsluru00\qb0{eh}\tbu0\qb0i\ibu0j0\qb0{jl}\tbu0% + \setslurtext{6}\tBslur00\qb0e\en + +The \slurtext works for PostScript slurs exactly the same way as +for the bitmapped ones. When you say '\slurtext3', a number '3' will +be typeset in the middle of the next closed slur. +The position of the reference point of the box with text will be +exactly in the middle horizontally and adjusted according to the +height of the box in case of upper slur. + +This works only for non-breaked slurs, if the slur is breaked, +the text disappears. + +The placing of the slur text is done with a very dirty PostScript +hack, so I am not really sure that everything you want to typeset +will be placed at the correct position (if you are interested, see +the end of psslurs.pro for details). If you find something that won't +work, let me know. + +There is also an unpleasant side-effect: when you look at the +DVI-file with some standard (non-PostScript) driver, the figure will +be placed at the end of the slur instead of the middle. From obvious +reasons this can't be fixed --- TeX can't know where the middle is, +as the slur shape is defined by a PostScript program. + + +General coding is very simple: + +\i[h.shift]slur[u|d]{slur ID}{note height} +\t[h.shift][slur height]slur{slur ID}{note height} + +\iBslur[u|d]{slur ID}{beam ID} +\tB[slur height]slur{slur ID}{beam ID} + +where h. shift can be 'l', 'r' or nothing +and slur height can be 'f', nothing, 'h', 'H' or 'HH' + +Mnemonics: \tlfslur means 'terminate left flat slur'. + + +There are also simple slurs with same invocation and parameters as the +original ones. + + +Similarly the ties: +~~~~~~~~~~~~~~~~~~~ +\itieu0e +\ttie0 + +\i[h.shift]tie[u|d]{ID}{note height} +\t[h.shift]tie{ID} + + +And crescendos: +~~~~~~~~~~~~~~~ +\icresc0 +\tcresc0 draws a crescendo at a default position (defined with + \setcrescheight) + +NOTE 1: \tcresc is the same as \tdecresc. + +NOTE 2: The coding of crescendos is incompatible with original crescendos. + The difference (as you notices) is in defining the type + (crescendo/decrescendo) at the beginning instead of the end. + This can't be fixed, because the TeX must know this at the end + of the line when the crescendo is breaked. + + +You can shift the starting and ending point horizontally with + +\ilcresc \ildecresc +\ircresc \irdecresc +\tlcresc \tldecresc +\trcresc \trdecresc + +to get some space for \mf, \ff etc. + + +Furthermore, you can say: + +\Icresc0{-6}0 +\Tcresc0{-8}2 + +and you will get crescendo with ending point lower than the begining +one. (The '0' and '2' at the end is horizontal offset in \internote +from the current point.) Due to some implemenational reasons, you must +use numbered height when specifying the altitude of the crescendos. + + + +Dotted slurs and ties +~~~~~~~~~~~~~~~~~~~~~ +The slurs and ties can be dotted, when you say \dotted anywhere before +the begining of the slur or tie. The first slur or tie following this +command will then be drawed with dotted line. + +[dangerous bend] When you say \dotted, then ALL slurs and ties + from this point will be dotted until you say +\Solid. Furthermore, inside the \dotted...\Solid you can make some slur or +tie solid saying \solid before its begining. + +NOTE: These macros are taken into account only at the begining + of the slur or tie. + + +Collisions of slurs/ties and staff lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In PostScript it is possible to do some computations, which are very hard +to implement in TeX. One of neat features of the PS slurs and ties is +checking, if the curve passes close the staff line and if so, adjusting +the altitude of the curve to avoid collision ("black triangles" or narrow +white space). You can turn this feature on globally (\Sluradjust, +\Tieadjust) or locally (\sluradjust, \tieadjust), or disable it either +globally (\Nosluradjust, \Notieadjust) or locally (\nosluradjust, +\notieadjust). Default is \Sluradjust and \Notieadjust. "Locally" +means before the next opening command of the slur or tie. + + +Line breaking: +~~~~~~~~~~~~~~ +The slurs, ties and crescendos going across the line breaks are handled +automatically. Of course they can go over more lines than two (this is +true also for ties, though it would be somewhat strange). + +There is the classic \breakslur implemented, which sets the height of the +ending point slur at the end of a line to given number of \internotes. + +There is also a switch, \ifslopebrkslurs, indicating whether the ending point +of the first segment of the breaked slur (at the end of the line) should +be automatically raised by 3 \internote. You can turn this feature on by +the \slopebrkslurstrue and off by \slopebrkslursfalse commands, default +is false. + +You can raise or lower the starting point of the slur at the begining of +the next line with the command \liftslur with ID and the relative offset in +\internotes measured from the slur beginning height. Its usage and behavior +is the same as of the original \liftslur, only it is not necessary to code +it in \atnextstaff{}, just anywhere inside the slur. + +Similar is \liftcresc, but it works only for the middle part of crescendos +broken into three parts. The height of the last part of a broken crescendo +is defined with the height parameter of \Tcresc. + +As said before, anything with ID <10 is breaked fully automatically, but +you should be careful about the slurs, ties and crescendos with 10 <= ID < 15. +These can not go acress PAGE break, otherwise you'll get a PostScript error +like 's11hgt undefined'. Of course the LINE breaking works for them +automatically too. + +When a tie is continuead after breaking at the very beginning of a line, +only a half of the tie is drawn (the 'very beginning' means that the tie +would be less than 15pt long). To forbid this feature, say \nohalfties +(default is \halfties). A font called mxsk is necessary for \halfties. + + +Backwards compatibility +~~~~~~~~~~~~~~~~~~~~~~~ + +There are several "aliases" which allow to use the old, bitmapped slur +commands for PS slurs without any change. There are however a few differences: +- the \invertslur is not implemented yet +- the \curve and \midslur macros have no effect + + + + +Memory requrements +~~~~~~~~~~~~~~~~~~ + +I have tried to make the macros as small and fast as possible. The problem +about them is not in their size, but in their output. Each \i... and \t... +produces a \special command, which must be stored into the TeX's main memory. +Therefore, if too many slur occurs in one page, some memory troubles could +occur. In that case either use BigTeX (but I suppose you already use it) or +use the bitmapped slurs. I will try to reduce the memory requirements, but +do not expect any miracles. There is a lot of things to be passed to the +PostScript part... + + + +About the PS header: +~~~~~~~~~~~~~~~~~~~~ +The slurs need the PS header file psslurs.pro to be included into the +output PostScript file. You have to say this to dvips with command + +\special{header=psslurs.pro} + +placed anywhere inside the piece. As default, this is done when \inputting +the MusiXpss, but if you include the MusiXpss.tex into a format, the first +page of your document will be always empty. If you want the macros included +in your format file, comment the line 13 of this file and don't forget +to copy it into your source file. + +Warning to dvidvi users: If you select a set of pages from your document, +don't forget to include the page in which the \special command was used +(default is first page). Otherwise the dvips won't find this command and +won't include the header file, putting the PostScript device into a serious +problems. You can also use the "-h psslurs.pro" option to tell dvips to add +the header file manually. + + +About the slur shape: +~~~~~~~~~~~~~~~~~~~~~ +The shape is defined via trapezium: + + c + <----> b + <-----------------------------------------> + _ _ _________________________________ _ _ + | /^1 _____/ ^2 ^3 ^4\_____ 5^\ | ^ + / __/ \___ \ | + | /_/ \ \_\ | | + // this is the 'slur' \\ | a + |/ \\| | + |_________________________________________| v + 0 6 + +Points 0 and 6 are the starting and ending points. When the slope is not +zero, the trapezium is simply rotated, NOT slanted. + +'a' is computed as sqrt(b)*2, bounded with <3,\psslurmaxhgt> and multiplied +by the given height coeficient (see \tSlur and \t..slur, defaults to 1) +The units are not equal to anything common, the values were found +after a lot of testing. + +'c' is computed as angularity*b. Default angularity is 0.17, reasonable +values should lie in <0.1, 0.3>. + +Then the shape is corrected when the slur is so steep that its extreme +in horizontal direction lies inside the slur and shifted up or down +if it's top would be too close to nearest staff line (!!!!!!!!). + +The slur then consists of two bezier curves: +from 0 to 3 with control points 1 and 2 and +from 3 to 6 with control points 4 and 5. + +The shading is made according to its length and current \internote. + + + +If you are interested, see a slightly commented PS code in psslurs.pro. + +Bug reports and complainments are welcomed at: + + Stanislav Kneifl, + + standa@hiero.cz + + + +HISTORY +~~~~~~~ + +0.92 (12.5.2002) + added: \nosluradjust, \sluradjust, \notieadjust, \tieadjust + added: \slopebrkslurtrue, \slopebrkslurfalse + fixed: shaded slurs now do not break up to separate curves + at high resolutions + +0.91 (10.1.2002) + First public release, adopted from OpusTeX version. diff --git a/Master/texmf-dist/tex/generic/musixtex/musixstr.tex b/Master/texmf-dist/tex/generic/musixtex/musixstr.tex index cde052ad37f..7fc44796ac6 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixstr.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixstr.tex @@ -16,7 +16,7 @@ % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % -\immediate\write10{MUsiXSTRingaccents T.57\space<6 September 1996>}% +\immediate\write16{MUsiXSTRingaccents T.57\space<6 September 1996>}% \ifx\undefined\sevenrm \iflongDCfontnames diff --git a/Master/texmf-dist/tex/generic/musixtex/musixsty.tex b/Master/texmf-dist/tex/generic/musixtex/musixsty.tex index ebe52ae3126..9078883af25 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixsty.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixsty.tex @@ -18,7 +18,7 @@ % \ifx\undefined\Tenpoint \else \endinput\fi -\immediate\write10{MusiXtextSTYle T.94\space<11 May 1999>}% +\immediate\write16{MusiXtextSTYle T.94\space<11 May 1999>}% \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 \edef\catcode@gt{\the\catcode`\>}\catcode`\>=12 diff --git a/Master/texmf-dist/tex/generic/musixtex/musixtex.ins b/Master/texmf-dist/tex/generic/musixtex/musixtex.ins deleted file mode 100644 index 6e0d4a70a24..00000000000 --- a/Master/texmf-dist/tex/generic/musixtex/musixtex.ins +++ /dev/null @@ -1,7 +0,0 @@ -\input musixtex -\input musixcpt -\input musixsty -\tracingstats=2\relax -\dump - - diff --git a/Master/texmf-dist/tex/generic/musixtex/musixtex.tex b/Master/texmf-dist/tex/generic/musixtex/musixtex.tex index fc6c4fa3253..618711cfa53 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixtex.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixtex.tex @@ -16,6 +16,19 @@ % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % +% New in this version +% macros: \lwp \lwpp \rwp \rwpp \lhp \rhp \lhpp \rhpp +% +% Correction of signature spacing at change of the music size (l.1428-35)rev2 +% +% Correction of a bug in the definition of choir bracket (l.1690-1700) +% +% Correction of a bug in the macro \rul@sep (l. 2259)(l.2273) +% +% \cclp, \zccup, \zcclp from musixpoi.tex (l.3254)rev3 typo correction +% +% Correction of a historical bug of stem length (l.4460) +% \ifx\undefined\startpiece \else \endinput \fi \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 @@ -23,8 +36,8 @@ \ifx\makeatother\undefined\def\makeatother{\catcode`\@=12\relax}\fi \def\mufl@x{0.83}% -\def\mxversion{T.103} -\def\mxdate{8 July 2001} +\def\mxversion{T.114} +\def\mxdate{1 Feb 2009} % T.114-rev.4 \immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}% \everyjob{\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}}% @@ -188,6 +201,8 @@ \newdimen\i@nv \newdimen\i@nvi +\def\i@n{\z@} % safety in case of.... + % positions x et z de debut des poutres \newdimen\b@xi \newdimen\b@zi @@ -197,19 +212,19 @@ \newdimen\b@xv \newdimen\b@zv \newdimen\b@xvi \newdimen\b@zvi -\newdimen\c@xi \newdimen\c@zi -\newdimen\c@xii \newdimen\c@zii -\newdimen\c@xiii\newdimen\c@ziii -\newdimen\c@xiv \newdimen\c@ziv -\newdimen\c@xv \newdimen\c@zv -\newdimen\c@xvi \newdimen\c@zvi +\newdimen\c@xi \newskip\c@zi +\newdimen\c@xii \newskip\c@zii +\newdimen\c@xiii\newskip\c@ziii +\newdimen\c@xiv \newskip\c@ziv +\newdimen\c@xv \newskip\c@zv +\newdimen\c@xvi \newskip\c@zvi -\newdimen\d@xi \newdimen\d@zi -\newdimen\d@xii \newdimen\d@zii -\newdimen\d@xiii\newdimen\d@ziii -\newdimen\d@xiv \newdimen\d@ziv -\newdimen\d@xv \newdimen\d@zv -\newdimen\d@xvi \newdimen\d@zvi +\newdimen\d@xi \newskip\d@zi +\newdimen\d@xii \newskip\d@zii +\newdimen\d@xiii\newskip\d@ziii +\newdimen\d@xiv \newskip\d@ziv +\newdimen\d@xv \newskip\d@zv +\newdimen\d@xvi \newskip\d@zvi \newdimen\e@xi \newskip\e@zi \newdimen\e@xii \newskip\e@zii @@ -218,6 +233,13 @@ \newdimen\e@xv \newskip\e@zv \newdimen\e@xvi \newskip\e@zvi +\newdimen\f@xi \newskip\f@zi +\newdimen\f@xii \newskip\f@zii +\newdimen\f@xiii\newskip\f@ziii +\newdimen\f@xiv \newskip\f@ziv +\newdimen\f@xv \newskip\f@zv +\newdimen\f@xvi \newskip\f@zvi + % pentes des poutres ( entier de -9 a +9 ) % multiplicite des poutres ( de -5 a +5 . 0= inactive ) @@ -301,11 +323,14 @@ % Find current font prefix (cm, dc, ec) %% \def\@onetoks#1#2+{#1} +\def\@secondtoks#1#2#3+{#2} \def\@twotoks#1#2#3+{#1#2} \def\@svntoks#1#2#3#4#5#6#7#8+{#7} \rm \edef\fontid{\expandafter\@twotoks\fontname\the\font+} +\edef\DynFontId{\fontid} \edef\fontfid{\expandafter\@onetoks\fontname\the\font+} +\edef\fontsid{\expandafter\@secondtoks\fontname\the\font+} % % Find out whether \rm font name of the form dcr1000 , i.e. with a digit at % 7th position @@ -329,6 +354,13 @@ \longECfontnamestrue \longDCfontnamesfalse \fi + \if\fontfid r + \if\fontsid x + \longECfontnamestrue + \longDCfontnamesfalse + \def\DynFontId{cm} + \fi + \fi \fi %% @@ -418,53 +450,78 @@ %% % Large fonts for titles: boldface only. %% - +\ifx\bigfont\undefined \iflongDCfontnames \font\bigfont=\fontid bx1440 % 14pt, formerly \moyen. -\font\Bigfont=\fontid bx1728 % 17pt, formerly \gros. -\font\BIgfont=\fontid bx2074 % 20pt, formerly \gros. -\font\BIGfont=\fontid bx2488 % 25pt, formerly \enorme. \else\iflongECfontnames \font\bigfont=\fontid bx1440 % 14pt, formerly \moyen. -\font\Bigfont=\fontid bx1728 % 17pt, formerly \gros. -\font\BIgfont=\fontid bx2074 % 20pt, formerly \gros. -\font\BIGfont=\fontid bx2488 % 25pt, formerly \enorme. \else \font\bigfont=\fontid bx12 scaled \magstep1 % 14pt, formerly \moyen. +\fi +\fi +\fi + +\ifx\Bigfont\undefined +\iflongDCfontnames +\font\Bigfont=\fontid bx1728 % 17pt, formerly \gros. +\else\iflongECfontnames +\font\Bigfont=\fontid bx1728 % 17pt, formerly \gros. +\else \font\Bigfont=\fontid bx12 scaled \magstep2 % 17pt, formerly \gros. +\fi +\fi +\fi + +\ifx\BIgfont\undefined +\iflongDCfontnames +\font\BIgfont=\fontid bx2074 % 20pt, formerly \gros. +\else\iflongECfontnames +\font\BIgfont=\fontid bx2074 % 20pt, formerly \gros. +\else \font\BIgfont=\fontid bx12 scaled \magstep3 % 20pt. +\fi +\fi +\fi + +\ifx\BIGfont\undefined +\iflongDCfontnames +\font\BIGfont=\fontid bx2488 % 25pt, formerly \enorme. +\else\iflongECfontnames +\font\BIGfont=\fontid bx2488 % 25pt, formerly \enorme. +\else \font\BIGfont=\fontid bx12 scaled \magstep4 % 25pt, formerly \emorme. \fi \fi +\fi %% % Bold italic fonts for dynamic markings. %% \iflongDCfontnames -\font\ppffsixteen=\fontid bi1000 -\font\ppfftwenty=\fontid bi1200 -\font\ppfftwentyfour=\fontid bi1440 -\font\ppfftwentynine=\fontid bi1728 -\font\smallppff=\fontid bi1000 -\font\normppff=\fontid bi1200 -\font\medppff=\fontid bi1440 +\font\ppffsixteen=\DynFontId bi1000 +\font\ppfftwenty=\DynFontId bi1200 +\font\ppfftwentyfour=\DynFontId bi1440 +\font\ppfftwentynine=\DynFontId bi1728 +\font\smallppff=\DynFontId bi1000 +\font\normppff=\DynFontId bi1200 +\font\medppff=\DynFontId bi1440 \else\iflongECfontnames -\font\ppffsixteen=\fontid bi1000 -\font\ppfftwenty=\fontid bi1200 -\font\ppfftwentyfour=\fontid bi1440 -\font\ppfftwentynine=\fontid bi1728 -\font\smallppff=\fontid bi1000 -\font\normppff=\fontid bi1200 -\font\medppff=\fontid bi1440 +\font\ppffsixteen=\DynFontId bi1000 +\font\ppfftwenty=\DynFontId bi1200 +\font\ppfftwentyfour=\DynFontId bi1440 +\font\ppfftwentynine=\DynFontId bi1728 +\font\smallppff=\DynFontId bi1000 +\font\normppff=\DynFontId bi1200 +\font\medppff=\DynFontId bi1440 \else -\font\ppffsixteen=\fontid bxti10 -\font\ppfftwenty=\fontid bxti10 scaled \magstep1 -\font\ppfftwentyfour=\fontid bxti10 scaled \magstep2 -\font\ppfftwentynine=\fontid bxti10 scaled \magstep3 -\font\smallppff=\fontid bxti10 -\font\normppff=\fontid bxti10 scaled \magstep1 -\font\medppff=\fontid bxti10 scaled \magstep2 +\font\ppffsixteen=\DynFontId bxti10 +\font\ppfftwenty=\DynFontId bxti10 scaled \magstep1 +\font\ppfftwentyfour=\DynFontId bxti10 scaled \magstep2 +\font\ppfftwentynine=\DynFontId bxti10 scaled \magstep3 +\font\smallppff=\DynFontId bxti10 +\font\normppff=\DynFontId bxti10 scaled \magstep1 +\font\medppff=\DynFontId bxti10 scaled \magstep2 \fi \fi @@ -736,7 +793,7 @@ % #1 start pitch #2 end pitch #3 length #4 right hoffset \newcount \meet@minus@n@iv -\def\writ@slur#1#2#3#4{% modified: sld... into slurd... 12.04.95 ick +\def\writ@slur#1#2#3#4{\check@staff % modified: sld... into slurd... 12.04.95 ick \let\slz\slurz% inserted \let\slzd\slurzd% inserted for dotted slurs +ickd \ifx\s@N\undefined \relax % \let\internote\Internote @@ -807,9 +864,9 @@ \def\@slope{z}\n@i\z@ \else \ifnum\n@ii<\n@i % Slope is negative - \C@csl\n@i\n@ii\def\@slope{d}% + \C@csl\n@i\n@ii\def\@slope{d}% % compute @meet height for slurs \else % Slope is positive - \C@csl\n@ii\n@i\def\@slope{u}\n@i\n@ii + \C@csl\n@ii\n@i\def\@slope{u}\n@i\n@ii % compute @meet height for slurs \fi \fi %% @@ -839,11 +896,13 @@ % setup meet height of slur % \ifx\empty\@meet +% \immediate\write16{\noexpand\@meet was empty.}% \else \n@iii\n@iv \advance\n@iii\@meet \fi \edef\@meet{\the\n@iii}% +% \immediate\write16{\noexpand\@meet = \@meet.}% % % allow a little bit overlap (2*2pt) for nicer outlook (as longer as nicer) % clip to extremities @@ -1008,7 +1067,8 @@ \llap{\raise\y@i\hbox\@to\y@ii{% %-ickd \hss\csname sl\@slope\endcsname\char\n@v\hss}\kern#4}% \hss\csname sl\@slope\@dotted\endcsname\char\n@v\hss}\kern#4}% - \fi} + \fi +\fi} % end writ@slur \def\sp@pt#1{\divide\n@v65536\divide\n@v#1} @@ -1080,13 +1140,20 @@ % #2 (length)slope left #3 (length)slope right \def\curve#1#2#3{\getcurpos % ignore \curve behind a linebreak - \ifdim\y@v>\@xxxii\p@ \xdef\@meet{#1}\edef\l@length{#2}\edef\r@length{#3}\fi} + \ifdim\y@v>\@xxxii\p@ \xdef\@meet{#1}\edef\l@length{#2}\edef\r@length{#3}\relax + \else +% \message{\noexpand\curve #1#2#3 not expanded}% + \fi} % raise (or lower) only the mid of slur % #1 final height [number, steps of internote, relativ to beginning! note] %! #1 can still be changed to work relativ from default height ??? -\def\midslur#1{\getcurpos\ifdim\y@v>\@xxxii\p@ \xdef\@meet{#1}\fi} +\def\midslur#1{\getcurpos + \ifdim\y@v>\@xxxii\p@ \xdef\@meet{#1}\relax + \else +% \message{\noexpand\midslur #1 not expanded}% + \fi} \let\@meet\empty \let\l@length\empty @@ -1121,6 +1188,11 @@ \def\ibslurd{\y@i\stemfactor\interbeam \advance\y@i\h@lf\internote \y@i-\y@i \i@slur0\y@i d} +% initiate slur at half note width but NO vertical offset (for linkings) + +\def\ihsluru{\i@slur\h@lf\z@ u}% +\def\ihslurd{\i@slur\h@lf\z@ d}% + \let\itieu\issluru \let\itied\isslurd \def\istieu{\i@slur{1\p@ne}{\qu@rt\internote}u}% shorter for accords @@ -1132,11 +1204,12 @@ \def\dotted{\let\dott@d\@ne}\let\dott@d\empty %+ickd -% #1 hoffset #2 voffset #3 sense (u,d) #4 reference number #5 start note - \def\@mis{missing } +% #1 hoffset #2 voffset #3 sense (u,d) #4 reference number #5 start note + \def\i@slur#1#2#3#4#5{% + \check@staff \global\advance\N@s\@ne % update slurcounter \s@l@ctslur#4\relax % test for already invoked \islur @@ -1151,7 +1224,8 @@ \global\s@a\altportee % store altportee of current slur \getcurpos \advance\y@v#1\qn@width - \global\s@x\y@v}% start hpos (current pos including hoffset) + \global\s@x\y@v + \fi}% start hpos (current pos including hoffset) % terminate slur #1 reference number #2 end note % the various types only influence the horizontal offset, if you want to @@ -1164,8 +1238,11 @@ \def\tbsluru{\t@slur1} \def\tbslurd{\t@slur0} -\def\ttie#1{\let\T@i\@c \t@slur{-\p@ne}#1\@ne} -\def\tleg#1{\let\T@i\@c \tslur #1\@ne} +% \def\ttie#1{\let\T@i\@c \t@slur{-\p@ne}#1\@ne} +% \def\tleg#1{\let\T@i\@c \tslur #1\@ne} +% #1 should be braced... by David Alsop on January 11, 2009 +\def\ttie#1{\let\T@i\@c \t@slur{-\p@ne}{#1}\@ne} +\def\tleg#1{\let\T@i\@c \tslur{#1}\@ne} \let\tten\ttie \let\Tten\ttie \let\Tleg\tleg @@ -1177,6 +1254,7 @@ % #1 hoffset #2 reference number #3 end note \def\t@slur#1#2#3{% + \check@staff \s@l@ctslur#2\relax \y@iv#1\qn@width \def\@sense{\the\s@s}% @@ -1202,17 +1280,28 @@ \writ@slur\s@y\n@i\y@v{-\y@iv}% % reset sense of slur \global\s@s{x}\let\T@i\empty - \global\advance\N@s\m@ne}% update slur counter + \global\advance\N@s\m@ne + \fi}% update slur counter % this command is made to terminate the slur #1 exactly on the note pitch #2 \def\Tslurbreak#1#2{\s@l@ctslur#1\relax \def\@sense{\the\s@s}% {\if d\@sense \advance\transpose 2\raise0.2\Interligne\hbox{\tslur{#1}{#2}}\relax \else \advance\transpose -2\raise-0.2\Interligne\hbox{\tslur{#1}{#2}}\relax - \fi}} + \fi + }% +\global\let\@meet\empty +\let\l@length\empty +\let\r@length\empty +\let\@invert\empty +} + \def\Islurubreak#1#2{{\advance\transpose -1\isluru{#1}{#2}}} \def\Islurdbreak#1#2{{\advance\transpose 1\islurd{#1}{#2}}} +\def\TslurbreakNextBar#1#2{\off{\beforeruleskip}\hloff{\Tslurbreak{#1}{#2}}\off{-\beforeruleskip}} +\def\IslurubreakPrevBar#1#2{\off{-\afterruleskip}\hloff{\Islurubreak{#1}{#2}}\off{\afterruleskip}} +\def\IslurdbreakPrevBar#1#2{\off{-\afterruleskip}\hloff{\Islurdbreak{#1}{#2}}\off{\afterruleskip}} \def\y@eol{\y@\line@width \advance\y@-\sign@skip \advance\y@-\clef@skip \advance\y@-\s@indent} @@ -1224,7 +1313,7 @@ % #1 start pitch #2 final pitch #3 sense(u,d) #4 length[noteskip] -\def\C@slur#1#2#3#4{% +\def\C@slur#1#2#3#4{\check@staff \inhgetn@i#1\relax \n@ii\n@i \inhgetn@i#2\relax \relax \ifx\dott@d\empty \gdef\@dotted{}\else\gdef\@dotted{d}\fi %+ickd @@ -1237,7 +1326,8 @@ \advance\y@v\y@iii \kern\y@iv \writ@slur\n@ii\n@i\y@v\z@ - \kernm\y@iv} + \kernm\y@iv + \fi} \def\sslur{% \let\s@N\undefined % do not store instrument number @@ -1338,13 +1428,13 @@ %%% \def\normalmusicsize{\musicsize\tw@nty \comput@specifics - \afterruleskip\@ight\p@ \elemskip\fontdimen\si@\musicnorfont} + \afterruleskip\@ight\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@} \def\smallmusicsize{\musicsize\sixt@@n \comput@specifics - \afterruleskip\si@\p@ \elemskip\fontdimen\si@\musicnorfont} + \afterruleskip\si@\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@} \def\largemusicsize{\musicsize\@xxiv \comput@specifics - \afterruleskip\t@n\p@ \elemskip\fontdimen\si@\musicnorfont} + \afterruleskip\t@n\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@} \def\Largemusicsize{\musicsize\@xxix \comput@specifics - \afterruleskip\t@n\p@ \elemskip\fontdimen\si@\musicnorfont} + \afterruleskip\t@n\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@} \def\comput@fonts{% \ifnum\musicsize=\sixt@@n @@ -1615,10 +1705,11 @@ \g@loop \ifnum\uppersonginstrum<\lowersonginstrum \else + \noinstrum@nt\uppersonginstrum\s@l@ctinstr\C@Inter \global\advance\g@h-\stem@skip \global\advance\g@h-\g@b \global\advance\g@h\Interligne \global\advance\g@b-\Internote \raise\g@b\llap{\uplap{\offinterlineskip - \hbox{\musixfont\fourt@@n}\hbox{\vrule\@height\g@h + \set@normalnotesize\hbox{\musixfont\fourt@@n}\hbox{\vrule\@height\g@h \@width\internote}\hbox{\musixfont\fiv@t@@n}}\kern\internote}% \fi \repeat @@ -2182,7 +2273,7 @@ \def\rul@full#1{\hbox{\raise\altplancher\rlap{\vrule\@depth\hlthick \@height\systemheight\@width#1}}\addspace#1} -\def\rul@sep#1{\n@loop +\def\rul@sep#1{\noport@@\z@\n@loop \edef\rul@hidden{\csname h@bl\romannumeral\noinstrum@nt\endcsname}% \Comp@High\hbox{\raise\altitude\rlap{% % \message{(tw@=\meaning\tw@\space thr@@=\meaning\thr@@\space \number\noinstrum@nt->}\expandafter\show\rul@hidden @@ -2576,10 +2667,15 @@ \expandafter\edef\csname instrument\romannumeral\n@v\endcsname{#2}} \def\writ@names{\n@loop + \setbox\toks@box\null\relax + \ifnum\st@ffs>0\relax \setbox\toks@box\llap{\vbox{\hbox\@to\parindent{% \hss\csname instrument\romannumeral\noinstrum@nt\endcsname\hss}}\ \ }% + \fi \altportee\altitude \Comp@High \advance\y@v-\ht\toks@box - \advance\altportee\h@lf\y@v \writ@box \repeat} + \advance\altportee\h@lf\y@v + \writ@box + \repeat} %%% @@ -2592,8 +2688,26 @@ \newdimen\elemskip \newdimen\@l@mskip +\def\check@staff{% + \ifnum\noport@@>\st@ffs\relax + \ifx\Post@Elims\undefined\else + \immediate\write16{check@staff\space inst=\the\noinstrum@nt\space + staff=\the\noport@@\space st@ffs=\the\st@ffs\space Elim.}\relax + \fi + \ifnum\st@ffs>0\relax + \errmessage{Staff number (\the\noport@@) out of specified range (\the\st@ffs)!}\fi + \else\relax} +%\def\check@staff{\iftrue\relax} + +\let\ifactiveinstrument\check@staff + \def\nextstaff{\@ndstaff\beginstaff} \def\nextinstrument{\@ndstaff\begininstrument} +\def\prevstaff{\@ndstaff\advance\noport@@-2\relax\beginstaff} +\def\selectstaff#1{\@ndstaff\noport@@#1\relax + \advance\noport@@ -1\relax\beginstaff} +\def\selectinstrument#1{\@ndstaff\noinstrum@nt#1\relax + \advance\noinstrum@nt -1\relax\begininstrument} \def\begininstrument{\advance\noinstrum@nt\@ne \s@l@ctinstr \ifdim\internote<\p@seven6\Internote \set@tinynotesize \comput@sizes @@ -2848,7 +2962,9 @@ \def\zwqq{\def\w@h{\musixchar127}\y@v\wn@width \advancefalse \g@w} \def\g@w#1{\let\st@m\resetst@m - \getn@i#1\relax\let\n@fon\g@w \let\n@sym\w@h \writ@note} + \check@staff + \getn@i#1\relax\let\n@fon\g@w \let\n@sym\w@h \writ@note + \fi} \def\maxima{\def\w@h{\musixchar36}\y@v\tw@\wn@width \g@w} \def\longa{\def\w@h{\musixchar39}\y@v\wn@width \g@w} @@ -2910,6 +3026,10 @@ \def\lw#1{\kernm\wn@width\zw{#1}\kern\wn@width} \def\rw#1{\kern\wn@width\zw{#1}\kernm\wn@width} +\def\lwp#1{\kernm\wn@width\zwp{#1}\kern\wn@width} +\def\rwp#1{\kern\wn@width\zwp{#1}\kernm\wn@width} +\def\lwpp#1{\kernm\wn@width\zwpp{#1}\kern\wn@width} +\def\rwpp#1{\kern\wn@width\zwpp{#1}\kernm\wn@width} %%% common routines for noteheads with the same width as a quarter note @@ -2926,8 +3046,9 @@ \def\@zq{\let\st@m\setst@m \advancefalse\g@q} \def\@nq{\let\st@m\resetst@m \g@q} -\def\g@q#1{\getn@i#1\relax\let\n@fon\g@q \let\n@sym\q@u - \y@v\qn@width \writ@note} +\def\g@q#1{\check@staff + \getn@i#1\relax\let\n@fon\g@q \let\n@sym\q@u + \y@v\qn@width \writ@note\fi} \def\@qup{\let\st@m\upst@m \g@qp} \def\@qlp{\let\st@m\downst@m \g@qp} @@ -2935,8 +3056,9 @@ \def\@nqp{\let\st@m\resetst@m \g@qp} \def\q@up{\q@u\C@Point\z@\raise} -\def\g@qp#1{\getn@i#1\relax\let\n@fon\g@qp \let\n@sym\q@up - \y@v\qn@width \writ@note} +\def\g@qp#1{\check@staff + \getn@i#1\relax\let\n@fon\g@qp \let\n@sym\q@up + \y@v\qn@width \writ@note\fi} \def\@qupp{\let\st@m\upst@m \g@qpp} \def\@qlpp{\let\st@m\downst@m \g@qpp} @@ -2944,8 +3066,9 @@ \def\@nqpp{\let\st@m\resetst@m \g@qpp} \def\q@upp{\q@u\C@Point\@ne\raise} -\def\g@qpp#1{\getn@i#1\relax\let\n@fon\g@qpp \let\n@sym\q@upp - \y@v\qn@width \writ@note} +\def\g@qpp#1{\check@staff + \getn@i#1\relax\let\n@fon\g@qpp \let\n@sym\q@upp + \y@v\qn@width \writ@note\fi} \def\@lqu#1{\kernm\qn@width\advancefalse\@qu{#1}\kern\qn@width} \def\@rqu#1{\kern\qn@width\advancefalse\@qu{#1}\kernm\qn@width} @@ -2980,14 +3103,19 @@ \def\@ccu{\n@vii\@xli \let\st@m\up@flag \g@q} \def\@cccu{\n@vii42\let\st@m\up@flag \g@q} \def\@ccccu{\n@vii43\let\st@m\up@flag \g@q} +\def\@cccccu{\n@vii44\let\st@m\up@flag \g@q} \def\@cl{\n@vii\@xlv \let\st@m\down@flag \g@q} \def\@ccl{\n@vii46\let\st@m\down@flag \g@q} \def\@cccl{\n@vii47\let\st@m\down@flag \g@q} \def\@ccccl{\n@vii48\let\st@m\down@flag \g@q} +\def\@cccccl{\n@vii49\let\st@m\down@flag \g@q} \def\@cup{\n@vii\@xl \let\st@m\up@flag \g@qp} +\def\@ccup{\n@vii\@xli \let\st@m\up@flag \g@qp} \def\@clp{\n@vii\@xlv \let\st@m\down@flag \g@qp} +\def\@cclp{\n@vii46\let\st@m\down@flag \g@qp} + \def\@cupp{\n@vii\@xl \let\st@m\up@flag \g@qpp} \def\@clpp{\n@vii\@xlv \let\st@m\down@flag \g@qpp} @@ -3028,6 +3156,11 @@ \def\lhl{\h@symbol\@lql} \def\rhl{\h@symbol\@rql} +\def\lhp#1{\loff{\zhp{#1}}} +\def\rhp#1{\roff{\zhp{#1}}} +\def\lhpp#1{\loff{\zhpp{#1}}} +\def\rhpp#1{\roff{\zhpp{#1}}} + %%% quarter notes, stem up \def\q@symbol{\def\q@u{\musixfont\s@v@n}} @@ -3089,40 +3222,49 @@ \def\cca{\q@symbol\@cca} \def\ccca{\q@symbol\@ccca} \def\cccca{\q@symbol\@cccca} +\def\ccccca{\q@symbol\@ccccca} \def\cu{\q@symbol\@cu} \def\ccu{\q@symbol\@ccu} \def\cccu{\q@symbol\@cccu} \def\ccccu{\q@symbol\@ccccu} +\def\cccccu{\q@symbol\@cccccu} \def\cup{\q@symbol\@cup} +\def\ccup{\q@symbol\@ccup} \def\cupp{\q@symbol\@cupp} \def\zcu{\advancefalse\cu} \def\zccu{\advancefalse\ccu} \def\zcccu{\advancefalse\cccu} \def\zccccu{\advancefalse\ccccu} +\def\zcccccu{\advancefalse\cccccu} \def\lcu#1{\kernm\qn@width\zcu{#1}\kern\qn@width} \def\rcu#1{\kern\qn@width\zcu{#1}\kernm\qn@width} \def\zcup{\advancefalse\cup} +\def\zccup{\advancefalse\ccup} \def\zcupp{\advancefalse\cupp} \def\cl{\q@symbol\@cl} \def\ccl{\q@symbol\@ccl} \def\cccl{\q@symbol\@cccl} \def\ccccl{\q@symbol\@ccccl} +\def\cccccl{\q@symbol\@cccccl} \def\clp{\q@symbol\@clp} +\def\cclp{\q@symbol\@cclp} \def\clpp{\q@symbol\@clpp} \def\zcl{\advancefalse\cl} \def\zccl{\advancefalse\ccl} \def\zcccl{\advancefalse\cccl} \def\zccccl{\advancefalse\ccccl} +\def\zcccccl{\advancefalse\cccccl} \def\zclp{\advancefalse\clp} +\def\zcclp{\advancefalse\cclp} \def\zclpp{\advancefalse\clpp} \def\lcl#1{\kernm\qn@width\zcl{#1}\kern\qn@width} @@ -3181,20 +3323,30 @@ \def\s@l@cte{\edef\e@x{\csname e@x\romannumeral\n@i\endcsname}% \edef\e@z{\csname e@z\romannumeral\n@i\endcsname}\s@l@ctd} +\def\s@l@ctf{\edef\f@x{\csname f@x\romannumeral\n@i\endcsname}% + \edef\f@z{\csname f@z\romannumeral\n@i\endcsname}\s@l@cte} + +\def\s@l@ctg{\edef\g@x{\csname g@x\romannumeral\n@i\endcsname}% + \edef\g@z{\csname g@z\romannumeral\n@i\endcsname}\s@l@ctf} + \def\ibu#1{\s@l@ctbeam#1\relax \i@bu} \def\ibbu#1{\s@l@ctbeam#1\relax \s@l@ctc \i@bbu} \def\ibbbu#1{\s@l@ctbeam#1\relax \s@l@ctd \i@bbbu} \def\ibbbbu#1{\s@l@ctbeam#1\relax \s@l@cte \i@bbbbu} +\def\ibbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctf \i@bbbbbu} \def\ibl#1{\s@l@ctbeam#1\relax \i@bl} \def\ibbl#1{\s@l@ctbeam#1\relax \s@l@ctc \i@bbl} \def\ibbbl#1{\s@l@ctbeam#1\relax \s@l@ctd \i@bbbl} \def\ibbbbl#1{\s@l@ctbeam#1\relax \s@l@cte \i@bbbbl} +\def\ibbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctf \i@bbbbbl} -\def\i@bu#1#2{\ifnum\b@n=\z@ \else \C@tb\t@bbu\qn@width \fi \global\b@n\m@ne +\def\i@bu#1#2{%\check@staff + \ifnum\b@n=\z@ \else \C@tb\t@bbu\qn@width \fi \global\b@n\m@ne \inhgetn@i#1\relax \n@v#2 \C@ib+\global\advance\b@x\qd@skip} -\def\i@bl#1#2{\ifnum\b@n=\z@ \else \C@tb\t@bbl\lthick \fi \global\b@n\@ne +\def\i@bl#1#2{%\check@staff + \ifnum\b@n=\z@ \else \C@tb\t@bbl\lthick \fi \global\b@n\@ne \inhgetn@i#1\relax \n@v#2 \C@ib-} \def\C@ib#1{\max@n@v\nin@\min@n@v{-\nin@}\global\b@p\n@v % clip slope number @@ -3212,10 +3364,15 @@ \i@bbl{#1}{#2}\C@ba\b@z\m@ne \C@ba\c@z\m@ne \fi\n@bbbl} \def\i@bbbbu#1#2{\ifnum\b@n=\z@ - \i@bbbu{#1}{#2}\C@ba\b@z\@ne \C@ba\c@z\@ne \C@ba\d@z\@ne \fi \n@bbbbu} + \i@bbbu{#1}{#2}\C@ba\b@z\@ne \C@ba\c@z\@ne \C@ba\d@z\@ne \fi\n@bbbbu} \def\i@bbbbl#1#2{\ifnum\b@n=\z@ \i@bbbl{#1}{#2}\C@ba\b@z\m@ne \C@ba\c@z\m@ne \C@ba\d@z\m@ne \fi\n@bbbbl} +\def\i@bbbbbu#1#2{\ifnum\b@n=\z@ + \i@bbbbu{#1}{#2}\C@ba\b@z\@ne \C@ba\c@z\@ne \C@ba\d@z\@ne \C@ba\e@z\@ne \fi\n@bbbbbu} +\def\i@bbbbbl#1#2{\ifnum\b@n=\z@ + \i@bbbbl{#1}{#2}\C@ba\b@z\m@ne \C@ba\c@z\m@ne \C@ba\d@z\m@ne \C@ba\e@z\m@ne \fi\n@bbbbbl} + %%% changing beams \def\Dec@b#1#2{\ifnum\b@n=#1#2\fi\ifnum\b@n=-#1#2\fi} @@ -3234,12 +3391,19 @@ \def\nbbbbl#1{\s@l@ctbeam#1\relax \s@l@cte \Dec@b\@ne\n@bbl \Dec@b\tw@\n@bbbl \Dec@b\thr@@\n@bbbbl} +\def\nbbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctf + \Dec@b\@ne\n@bbu \Dec@b\tw@\n@bbbu \Dec@b\thr@@\n@bbbbu \Dec@b\f@ur\n@bbbbbu} +\def\nbbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctf + \Dec@b\@ne\n@bbl \Dec@b\tw@\n@bbbl \Dec@b\thr@@\n@bbbbl \Dec@b\f@ur\n@bbbbbl} + \def\n@bbu{\C@nb\c@z\c@x\@ne\qd@skip} \def\n@bbl{\C@nb\c@z\c@x\@ne\z@} \def\n@bbbu{\C@nb\d@z\d@x\tw@\qd@skip} \def\n@bbbl{\C@nb\d@z\d@x\tw@\z@} \def\n@bbbbu{\C@nb\e@z\e@x\thr@@\qd@skip} \def\n@bbbbl{\C@nb\e@z\e@x\thr@@\z@} +\def\n@bbbbbu{\C@nb\f@z\f@x\f@ur\qd@skip} +\def\n@bbbbbl{\C@nb\f@z\f@x\f@ur\z@} \def\C@nb#1#2#3#4{% \global#1\b@z @@ -3288,27 +3452,32 @@ \advance\y@iv\y@ \comp@slope\y@ \advance\y@iii\s@lope \repeat \fi} -\def\s@l@ctcde{\s@l@ctc \s@l@ctd \s@l@cte } +\def\s@l@ctcde{\s@l@ctc \s@l@ctd \s@l@cte \s@l@ctf } \def\tbu#1{\s@l@ctbeam#1\relax \C@tb\t@bbu\qn@width } \def\tbbu#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbu} \def\tbbbu#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbu} \def\tbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbbu} +\def\tbbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbbbu} \def\tbl#1{\s@l@ctbeam#1\relax \C@tb\t@bbl\lthick } \def\tbbl#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbl} \def\tbbbl#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbl} \def\tbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbbl} +\def\tbbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbbbl} \def\beam@pos#1{\getcurpos\y@ii\y@v\advance\y@ii-#1} \def\C@tb#1#2{% \n@ii\b@n \ifnum\n@ii<\z@ \n@ii-\n@ii \fi - \ifcase\n@ii \or \or \s@l@ctc \or \s@l@ctd \or \s@l@cte \fi + \ifcase\n@ii \or \or \s@l@ctc \or \s@l@ctd \or \s@l@cte \or \s@l@ctf \or \s@l@ctg\fi \ifnum\b@n<\m@ne #1\fi \ifnum\b@n>\@ne #1\fi \y@i\b@z \advance\y@i-\altportee \beam@pos\b@x - \advance\y@ii#2\llap{\@beam\kernm#2}\global\b@n\z@} + \advance\y@ii#2\relax + \check@staff + \llap{\@beam\kernm#2}\relax + \fi\global\b@n\z@} \def\t@bbu{\n@v\tw@ \C@b\t@bbbu\n@bbu\y@i\c@z \beam@pos\c@x \t@xbu} \def\t@bbl{\n@v\tw@ \C@b\t@bbbl\n@bbl\y@i\c@z \beam@pos\c@x \t@xbl} @@ -3316,8 +3485,11 @@ \def\t@bbbu{\n@v\thr@@ \C@b\t@bbbbu\n@bbbu\y@i\d@z \beam@pos\d@x \t@xbu} \def\t@bbbl{\n@v\thr@@ \C@b\t@bbbbl\n@bbbl\y@i\d@z \beam@pos\d@x \t@xbl} -\def\t@bbbbu{\n@v\f@ur \C@b\empty\n@bbbbu\y@i\e@z \beam@pos\e@x \t@xbu} -\def\t@bbbbl{\n@v\f@ur \C@b\empty\n@bbbbl\y@i\e@z \beam@pos\e@x \t@xbl} +\def\t@bbbbu{\n@v\f@ur \C@b\t@bbbbbu\n@bbbbu\y@i\e@z \beam@pos\e@x \t@xbu} +\def\t@bbbbl{\n@v\f@ur \C@b\t@bbbbbl\n@bbbbl\y@i\e@z \beam@pos\e@x \t@xbl} + +\def\t@bbbbbu{\n@v\fiv@ \C@b\empty\n@bbbbbu\y@i\f@z \beam@pos\f@x \t@xbu} +\def\t@bbbbbl{\n@v\fiv@ \C@b\empty\n@bbbbbl\y@i\f@z \beam@pos\f@x \t@xbl} \def\C@b#1#2{% \n@ii\b@n \ifnum\n@ii<\z@ \n@ii-\n@ii \fi @@ -3331,9 +3503,13 @@ \def\t@xbl{\C@txb\lthick\b@amthick\interbeam\hlthick<} \def\C@txb#1#2#3#4#5{\advance\y@i-\altportee - \advance\y@ii#1\llap{\@beam\kernm#1}% + \advance\y@ii#1\relax + \check@staff + \llap{\@beam\kernm#1}% \ifnum\b@n#5\z@ \comp@slope\y@ii \advance\y@i\s@lope - \raise\y@i\rlap{\kern#4\vrule\@height#3\@depth#2\@width\lthick}\fi + \raise\y@i\rlap{\kern#4\vrule\@height#3\@depth#2\@width\lthick}\relax + \fi + \fi \ifnum\b@n<\z@ \global\advance\b@n\@ne \fi \ifnum\b@n>\z@ \global\advance\b@n\m@ne \fi} @@ -3353,6 +3529,8 @@ \def\Ibbbl#1{\s@l@ctbeam#1\relax \s@l@ctd \I@bl\i@bbbl} \def\Ibbbbu#1{\s@l@ctbeam#1\relax \s@l@cte \I@bu\i@bbbbu} \def\Ibbbbl#1{\s@l@ctbeam#1\relax \s@l@cte \I@bl\i@bbbbl} +\def\Ibbbbbu#1{\s@l@ctbeam#1\relax \s@l@cte \I@bu\i@bbbbbu} +\def\Ibbbbbl#1{\s@l@ctbeam#1\relax \s@l@cte \I@bl\i@bbbbbl} % compute altitude difference of tried beam in \y@iv % and compare with notes altitude difference @@ -3426,10 +3604,11 @@ \def\lppt{\g@pt\m@ne\@ne} \def\lpppt{\g@pt\m@ne\tw@} -\def\g@pt#1#2#3{\inhgetn@i#3\relax \relax % two \relax since the first one +\def\g@pt#1#2#3{\check@staff + \inhgetn@i#3\relax \relax % two \relax since the first one \ifnum\n@i<\@c % in swallowed by \inhgetn@i \ifodd\n@i \else\advance\n@i#1\fi - \pl@base \raise\y@i\hbox{\musixchar#2}\fi} + \pl@base \raise\y@i\hbox{\musixchar#2}\fi\fi} %%% rests @@ -3457,14 +3636,18 @@ \def\PAUSe{\adv@box{\musixchar59}} \def\PAuse{\adv@box{\musixchar58}} -\def\pause{\adv@box{\raise\si@\internote\hbox{\musixchar61}}} -\def\pausep{\wholeshift{\pt5}\pause} +\def\pause{\check@staff + \adv@box{\raise\si@\internote\hbox{\musixchar61}}\fi} +\def\pausep{%\check@staff + \wholeshift{\pt5}\pause} \def\liftpause{\C@ps\@l@v@n\si@} \def\liftpausep{\C@pspt\@l@v@n\si@} -\def\hpause{\adv@box{\raise\f@ur\internote\hbox{\musixchar60}}} +\def\hpause{\check@staff + \adv@box{\raise\f@ur\internote\hbox{\musixchar60}}\fi} \let\hp\hpause -\def\hpausep{\wholeshift{\pt5}\hpause} +\def\hpausep{%\check@staff + \wholeshift{\pt5}\hpause} \def\lifthpause{\C@ps\t@n\f@ur} \def\lifthpausep{\C@pspt\t@n\f@ur} @@ -3473,11 +3656,14 @@ \advance\lift@rest -2.5\fontdimen\fiv@\musixfont \raise\lift@rest\hbox\@to\noteskip{#1\hss}}\advance\locx@skip\noteskip} -\def\qp{\adv@restbox{\musixchar62}} +\def\qp{\check@staff + \adv@restbox{\musixchar62}\fi} \let\soupir\qp -\def\ds@oup{\adv@restbox{\musixchar63}} -\def\qs{\adv@restbox{\musixchar64}} +\def\ds@oup{\check@staff + \adv@restbox{\musixchar63}\fi} +\def\qs{\check@staff + \adv@restbox{\musixchar64}\fi} \def\hs{\adv@restbox{\musixchar65}} \def\qqs{\adv@restbox{\musixchar66}} @@ -3544,7 +3730,9 @@ \message{\@nod sharpen \noexpand\dsh \t@ruc}\let\@Ti\empty \or \n@v\thr@@ \or \n@v\tw@ \fi} -\def\C@acc#1{\inhgetn@i#1\relax \relax +\def\C@acc#1{% + \check@staff + \inhgetn@i#1\relax \ifx\rel@sw\@ne \s@l@ctsigns \n@iii\n@i \advance\n@iii-\ut@ref \advance\n@iii-\ut@ref @@ -3562,7 +3750,8 @@ % \n@ii positive signature limit, \n@ii-8 negative signature limit \advance\n@ii-\a@s \advance\n@ii\si@ \divide\n@ii\s@v@n \@Tii - \fi \advance\n@v\@l \advance\n@v\n@vi \@Ti} + \fi \advance\n@v\@l \advance\n@v\n@vi \@Ti + \fi} \def\@nod{Can't double } @@ -3638,13 +3827,17 @@ \def\lpzst{\n@iv19\lacc@Char} \def\dpzst{\lpzst} -\def\uacc@Char#1{\inhgetn@i#1\relax \relax +\def\uacc@Char#1{\check@staff + \inhgetn@i#1\relax \relax \ifnum\n@i<\@ight \ifodd\n@i \else\advance\n@i\@ne \fi \fi - \zchar\n@i\C@ChaR} + \zchar\n@i\C@ChaR + \fi} -\def\lacc@Char#1{\inhgetn@i#1\relax \relax +\def\lacc@Char#1{\check@staff + \inhgetn@i#1\relax \relax \ifnum\n@i>\@ne \ifodd\n@i \else\advance\n@i\m@ne \fi \fi - \zchar\n@i\C@ChaR} + \zchar\n@i\C@ChaR + \fi} \def\C@ChaR{\musixfont\char\n@iv} @@ -3849,12 +4042,33 @@ %%% octave lines -\def\octnumber{\ppffsixteen8} +\def\octnumberup{\octnumberdefault\vrule width 0pt height2ex} +\def\octnumberdefault{\ppffsixteen8} +\def\octnumberdown{\octnumberdefault$^a$\eightit\kern 0.3em bassa\vrule width 0pt depth \Internote} + +\def\octfinup{\check@staff + \n@v\@xxiii\n@ii\@xxiv\global\o@swz={\@ne}\fi + \C@of} +\def\octfindown{\check@staff + \n@v\@xxv \n@ii\@xxvi\global\o@swz={\z@}\fi + \C@of} +\def\C@of#1#2{\check@staff + \y@v#2\noteskip\zcharnote{#1}{\hbox\@to\y@v{% + \xdef\o@sw{\csname o@swz\endcsname}\relax + \octnumber\mxsps\xleaders\hbox{\char\n@v}\hfill\char\n@ii}}% + \fi} -\def\octfinup{\n@v\@xxiii\n@ii\@xxiv\C@of} -\def\octfindown{\n@v\@xxv \n@ii\@xxvi \C@of} -\def\C@of#1#2{\y@v#2\noteskip\zcharnote{#1}{\hbox\@to\y@v{% - \octnumber\mxsps\xleaders\hbox{\char\n@v}\hfill\char\n@ii}}} +%%%%%% +% selecting \octnumber??? according to \o@sw +\def\octnumber{% \show\o@sw + \setbox\w@rkbox\hbox{% + \ifnum \@ne=\the\o@sw\relax \octnumberup + \else \octnumberdown + \fi}% + \ifdim \wd\w@rkbox>\y@v\setbox\w@rkbox\hbox{\octnumberdefault}\fi + \box\w@rkbox +} + %%%%%% @@ -3874,6 +4088,7 @@ \newskip\o@yv % height of octline \newskip\o@yvi % height of octline +\newtoks\o@swz % sense of octline for \octfin[up][down] without number \newtoks\o@swi % sense of octline \newtoks\o@swii % sense of octline \newtoks\o@swiii % sense of octline @@ -3902,32 +4117,36 @@ \def\ioctfinup{\Ioctfinup0} \def\ioctfindown{\Ioctfindown0} -\def\Ioctfinup#1{\s@l@ctoctline#1\relax +\def\Ioctfinup#1{\check@staff + \s@l@ctoctline#1\relax \ifdim\o@x < \maxdimen\errmessage{\@mis \noexpand\Toctfin \number #1}\fi -% \global\expandafter\let\o@sw\@ne - \global\o@sw={\@ne}% + \global\o@sw={\@ne}\fi \C@O} -\def\Ioctfindown#1{\s@l@ctoctline#1\relax +\def\Ioctfindown#1{\check@staff + \s@l@ctoctline#1\relax \ifdim\o@x < \maxdimen\errmessage{\@mis \noexpand\Toctfin \number #1}\fi -% \global\expandafter\let\o@sw\empty - \global\o@sw={\z@}% + \global\o@sw={\z@}\fi \C@O} -\def\C@O#1{% +\def\C@O#1{\check@staff \getcurpos\global\o@x\y@v % store horizontal pos \inhgetn@i#1\relax\pl@base\advance\y@i\altportee % get absolute height - \global\o@y\y@i } + \global\o@y\y@i + \fi} % clise check@staff in Ioctfinup/down \def\toctfin{\Toctfin0} -\def\Toctfin#1{\s@l@ctoctline#1\relax - \advance\o@y-\altportee \let\T@ii\char \C@TO \global\o@x\maxdimen } +\def\Toctfin#1{\check@staff + \s@l@ctoctline#1\relax + \advance\o@y-\altportee \let\T@ii\char \C@TO \global\o@x\maxdimen + \fi} -\def\C@TO{% +\def\C@TO{\check@staff \ifnum \@ne=\the\o@sw \n@v\@xxiii \n@ii\@xxiv \else \n@v\@xxv \n@ii\@xxvi \fi \ifx\T@ii\n@ii \y@v\lin@pos \else \getcurpos \fi \advance\y@v-\o@x \kernm\y@v \raise\o@y\hbox\@to\y@v{% - \octnumber\mxsps\xleaders\hbox{\char\n@v}\hfill\T@ii\n@ii}}% + \octnumber\mxsps\xleaders\hbox{\char\n@v}\hfill\T@ii\n@ii}\relax + \fi}% % Liftoctline #1 refnumber #2 lift[steps of internote] @@ -3937,6 +4156,7 @@ %%% some specials \def\metron#1#2{{\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2}} +\def\metronequiv#1#2{{\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2 1}} \def\xtuplet#1#2{\n@iv#1\advance\n@iv\m@ne {\sign@skip=\n@iv\noteskip \sign@skip=0.5\sign@skip \xdef\half@sign@skip{\the\sign@skip}}% @@ -3945,9 +4165,9 @@ %\check -\def\zbreath{\raise\si@\internote\rlap{\BIGfont'}} -\def\cbreath{\adv@box{\raise\si@\internote - \hbox\@to\noteskip{\hss\BIGfont'\hss}}} +\def\zbreath{\check@staff\raise\si@\internote\rlap{\BIGfont'}\fi} +\def\cbreath{\check@staff\adv@box{\raise\si@\internote + \hbox\@to\noteskip{\hss\BIGfont'\hss}}\fi} % The following macros can be used to surround a note by parentheses % \l[r]par p produces a left[right] parenthesis at pitch p (Ian Collier) @@ -4101,22 +4321,22 @@ \def\hcharnote{\let\@Ti\hard@box \C@ch} \def\charnote#1#2{\zcharnote{#1}{#2}\sk} -\def\C@ch#1#2{\inhgetn@i#1\relax\pl@base\raise\y@i\@Ti{#2}} +\def\C@ch#1#2{\check@staff\inhgetn@i#1\relax\pl@base\raise\y@i\@Ti{#2}\fi} \def\zmidstaff{\let\@Ti\rlap \C@mid} \def\lmidstaff{\let\@Ti\llap \C@mid} \def\cmidstaff{\let\@Ti\lrlap \C@mid} -\def\C@mid#1{\y@v\interportee \advance\y@v\f@ur\Interligne \divide\y@v\tw@ - \raise\y@v\uplap{\@Ti{\strut#1}\vss}} +\def\C@mid#1{\check@staff\y@v\interportee \advance\y@v\f@ur\Interligne \divide\y@v\tw@ + \raise\y@v\uplap{\@Ti{\strut#1}\vss}\fi} -\def\zchar#1#2{\raise#1\internote\rlap{#2}} -\def\lchar#1#2{\raise#1\internote\llap{#2}} -\def\cchar#1#2{\raise#1\internote\lrlap{#2}} -\def\hchar#1#2{\raise#1\internote\hard@box{#2}} +\def\zchar#1#2{\check@staff\raise#1\internote\rlap{#2}\fi} +\def\lchar#1#2{\check@staff\raise#1\internote\llap{#2}\fi} +\def\cchar#1#2{\check@staff\raise#1\internote\lrlap{#2}\fi} +\def\hchar#1#2{\check@staff\raise#1\internote\hard@box{#2}\fi} -\def\uptext#1{\zchar\t@n{#1}} -\def\Uptext#1{\zchar\fourt@@n{#1}} +\def\uptext#1{\check@staff\zchar\t@n{#1}\fi} +\def\Uptext#1{\check@staff\zchar\fourt@@n{#1}\fi} \def\setsongraise#1#2{\n@v#1\relax % select instrument \expandafter\def\csname T@R\romannumeral\n@v\endcsname{#2}} @@ -4224,6 +4444,7 @@ \stafftopmarg\thr@@\Interligne \staffbotmarg\thr@@\Interligne \let\n@li\fiv@ \let\n@lii\fiv@ \let\n@liii\fiv@ \let\n@liv\fiv@ \let\n@lv\fiv@ \let\n@lvi\fiv@ + \noinstrum@nt1\s@l@ctinstr\internote\Internote \resetclefsymbols} \def\resetclefsymbols{% @@ -4239,10 +4460,10 @@ \let\nbinstruments\maxinstruments \normalnotesize \normalmusicsize +\normalnotesize% needs rerun to initialize \metron stem length (a very historical bug since T.103 or earlier) (T.114, Hiroaki) \resetlayout \def\nbinstruments{1} - %%% % % This is muflex.tex version 1.00 , January 1993 @@ -4503,3 +4724,4 @@ \catcode`\@=\catcodeat \endinput + diff --git a/Master/texmf-dist/tex/generic/musixtex/musixtmr.tex b/Master/texmf-dist/tex/generic/musixtex/musixtmr.tex new file mode 100644 index 00000000000..ad219dbbc97 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musixtex/musixtmr.tex @@ -0,0 +1,74 @@ +%% +%% musixtmr.tex : Times-series fonts definition for MusiXTeX +%% +%% usage: +%% \input musixtex +%% \input musixtmr +%% ... +%% +%% This file is public domain. +%% +%% Author: +%% Hiroaki MORIMOTO +%% Tokyo, Japan +%% URL(en): http://homepage1.nifty.com/kuuku/pub/musixtex/index-e.html +%% (jp): http://homepage1.nifty.com/kuuku/pub/musixtex/index.html +%% +%% reference: musixtex.tex (T.99) 268-508 +%% MusiXTeX: (c) Daniel Taupin, et al. +%% +%% History: see trailer. +% +\immediate\write16{MusiXTimesFonts\space<2009/10/15>} +% +% 8pt roman, bold, and italic +\font\eightrm=ptmr7t at 8pt +\font\eightbf=ptmb7t at 8pt +\font\eightit=ptmri7t at 8pt +% +% 9pt +\font\ninerm=ptmr7t at 9pt +\font\ninebf=ptmb7t at 9pt +\font\nineit=ptmri7t at 9pt +% +% 10pt +\font\tenrm=ptmr7t +\font\tenbf=ptmb7t +\font\tenit=ptmri7t +% +% 12pt +\font\twelverm=ptmr7t scaled \magstep 1 +\font\twelvebf=ptmb7t scaled \magstep 1 +\font\twelveit=ptmri7t scaled \magstep 1 +% +% Large fonts for titles +% (If you prefer Times-bold, use ptmb7t instead of ptmr7t) +\font\bigfont=ptmr7t scaled \magstep2 % 14pt +\font\Bigfont=ptmr7t scaled \magstep3 % 17pt +\font\BIgfont=ptmr7t scaled \magstep4 % 20pt +\font\BIGfont=ptmr7t scaled \magstep5 % 25pt +% +% PMX changes font assignment in pmx.tex +% \BIGfont=\fontid bx10 scaled\magstep4 +% \Bigfont=\fontid bx10 scaled\magstep2 +\ifx\pmxversion\undefined\relax\else + \font\Bigfont=ptmr7t scaled \magstep2 % 14pt + \font\BIGfont=ptmr7t scaled \magstep4 % 20pt +\fi +% +\normtype +\endinput +%% +%% History +%% +%% 2001/08/21 +%% first publish +%% 2004/12/24 +%% no functional change. (email & real address change) +%% 2007/06/11 +%% no functional change. (email protection, real address change, URL change) +%% 2008/08/01 +%% Font assignment change on PMX. +%% 2009/10/15 +%% small update for MusiXTeX T.114 final release. +%% diff --git a/Master/texmf-dist/tex/generic/musixtex/musixtri.tex b/Master/texmf-dist/tex/generic/musixtex/musixtri.tex index 0b4f2923991..52375e170df 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixtri.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixtri.tex @@ -17,9 +17,9 @@ % Boston, MA 02111-1307, USA. % -\immediate\write10{MusiXTRIplepoint 0.36\space<1 March 1995>} +\immediate\write16{MusiXTRIplepoint 1.05\space<30 April 2002>} -\ifx\undefined\lpppt \else \endinput \fi +\ifx\undefined\hlppp \else \endinput \fi \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 diff --git a/Master/texmf-dist/tex/generic/musixtex/tuplet.tex b/Master/texmf-dist/tex/generic/musixtex/tuplet.tex new file mode 100644 index 00000000000..0dcb7aca469 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musixtex/tuplet.tex @@ -0,0 +1,147 @@ +% +% tuplet.tex - conventional tuplet brackets for MusiXTeX. +% Col. G. L. Sicherman. Last revised 2003-05-17. +% +% MusiXTeX is free software, licensed under the GNU General Public +% License. This file is also free software. You may use it and +% modify it as you please so long as you leave this message intact. +% +% To use this file with MusiXTeX, refer to it in your source code +% after MusiXTeX: +% +% \input musixtex +% \input tuplet +% +% This file uses macros defined in musixtex.tex. +% +% Standard MusiXTeX uses \uptrio and \downtrio to print tuplet brackets. +% This file defines \uptuplet and \downtuplet, with the same arguments: +% +% #1 : starting pitch +% #2 : width of bracket, in (\noteskip)s +% #3 : slope of bracket, in multiples of 1-1/8 degrees +% +% The user defines the text to appear in the opening as \tuplettxt. +% This is to avoid conflicting with the \txt in standard MusiXTeX. +% +% Examples: +% +% Draw a triplet bracket over the notes, starting at pitch "p", +% 1.25\noteskip wide, with a slope up of 3-3/8 degrees: +% +% \uptuplet p{1.25}3 +% +% Draw a sextuplet bracket over the notes, starting at pitch "a", +% 2.5\noteskip wide, with a slope down of 4-1/2 degrees: +% +% \def\tuplettxt{\smallppff 6\/\/} +% \downtuplet{a}{2.5}{-4} +% +% Send comments, complaints, and bouquets to the Colonel at +% . +% +\makeatletter % Names of internal macros contain atpersats. + +% Standard MusiXTeX prints a small "3" (or other number) within +% the bracket. Here we print the "3" in an opening in the bracket, +% so we need not use a small font. +% +% The double italic correction compensates for centering the number +% on the bracket line. + +\def\tuplettxt{\smallppff3\/\/} + +%%% The rest is adapted from standard MusixTeX. + +\newdimen\y@vii % x of right end of left part of bracket. +\newdimen\y@viii % x of left end of right part of bracket. +\newdimen\y@ix +\newbox\tuptxtb@x + +% v@rline #1=height[dimen] #2=length[dimen] #3=slope (1\eqiv 1.125degree) +% (comments and ideas from Ian Collier) (from -20 upto 20 ) +% This macro is used by some of the others which follow, +% using it directly it must be set in zero box + +\def\v@rline#1#2#3{\n@v#3\y@i#2% + \setbox\tuptxtb@x\hbox{\hskip1pt\tuplettxt\hskip1pt}% + \y@vii=\h@lf\y@i\advance\y@vii-\h@lf\wd\tuptxtb@x% + \n@ii-\tw@nty \min@n@v\n@ii + \max@n@v\tw@nty \n@iii\n@v + \ifnum\n@v<\z@ \n@v-\n@v \advance\n@v\tw@nty \fi % offset to lower linechars + \advance\n@v\@xxix + \setbox\ch@box\hbox{\mxsps\char\n@v}% + \ifdim\y@vii<\wd\ch@box \y@vii\wd\ch@box\fi% At least one whole segment! + \y@viii=\y@i\advance\y@viii-\y@vii% + \y@iv\wd\ch@box \y@ii\qu@rt\p@ \y@ii\n@iii\y@ii \y@iii\z@ + \raise#1\internote\hbox{\mxsps\char\n@iv +% +% Build bracket with slanted line segments of width 10pt. +% Left part of bracket: +% + \loop\ifdim\y@iv<\y@vii\raise\y@iii\copy\ch@box + \advance\y@iv\wd\ch@box \advance\y@iii\y@ii \repeat +% +% last element +% +% \finalheight=2.5\completewidth +% \finalheight=\n@iii\finalheight +% \divide\finalheight by 100 +% \advance\overlapwidth by -\completewidth +% \stepheight=-2.5\overlapwidth +% \stepheight=\n@iii\stepheight +% \divide\stepheight by 100 +% \advance\curheight by \stepheight +% \kern -\overlapwidth \raise\curheight \box\ch@box +% + \y@ix=\y@vii\advance\y@ix-\y@iv\hbox to\y@ix{\hss}% + \y@ix\y@vii\advance\y@ix-\wd\ch@box% + \y@iii\n@iii\y@ix\y@iii2\h@lf\y@iii\divide\y@iii\@c\raise\y@iii\copy\ch@box% +% +% Text: +% + \y@v2\h@lf\y@i \y@v\n@iii\y@v \divide\y@v\@c% + \y@ix=-\y@vii \advance\y@ix\h@lf\y@i \advance\y@ix-\h@lf\wd\tuptxtb@x% + \hbox to\y@ix{\hss}% + \y@iii\h@lf\y@v \raise\y@iii\vbox to\z@{% + \vss{\copy\tuptxtb@x}\vss} + \y@ix=\y@viii \advance\y@ix-\h@lf\y@i \advance\y@ix-\h@lf\wd\tuptxtb@x + \hbox to\y@ix{\hss}% To start of right part. No-op unless bracket is short. +% +% Right part of bracket: +% + \y@iii2\h@lf\y@viii \y@iii\n@iii\y@iii \divide\y@iii\@c% + \y@iv=\y@viii \advance\y@iv\wd\ch@box% + \loop\ifdim\y@iv<\y@i\raise\y@iii\copy\ch@box% + \advance\y@iv\wd\ch@box \advance\y@iii\y@ii \repeat +% +% Finish off the right part: +% + \y@iii\y@i\advance\y@iii-\wd\ch@box\y@iii2\h@lf\y@iii\y@iii\n@iii\y@iii% + \y@ix=\y@i\advance\y@ix-\y@iv\hbox to\y@ix{\hss}% + \divide\y@iii\@c% + \raise\y@iii\copy\ch@box% +% + \raise\y@v\hbox{\mxsps\char\n@iv}}} +% +% y@i =complete length +% y@ii =height of linechar +% y@iii =current height +% y@iv =current width +% y@v =height of ending line +% y@vii =width of left segment of bracket +% y@viii=y@vii + width of opening +% y@ix =adjustment register +% +% n@iii=slope +% n@iv =(number of char for hooks) +% n@v =slope (number of linechar) + +\def\X@bkt#1#2#3{\y@v#2\noteskip \advance\y@v\wn@width + \inhgetn@i#1\relax \rlap{\kernm\p@ne\qn@width\v@rline\n@i\y@v{#3}}} + +\def\uptuplet{\n@iv22\X@bkt} +\def\downtuplet{\n@iv21\X@bkt} + +\makeatother +\endinput diff --git a/Master/texmf-dist/tex/generic/musixtex/underbracket.sty b/Master/texmf-dist/tex/generic/musixtex/underbracket.sty new file mode 100644 index 00000000000..994aee60ba1 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musixtex/underbracket.sty @@ -0,0 +1,190 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% LaTeX package underbracket +% +% draws brackets to underline text +% (especially, but not exclusively, syllables of song text) +% +% v1.2 by Bernd Jantzen +% For e-mail contact please use "ctan" before the "@"-sign +% and "bernd-jantzen.de" after it to form my address +% (not given in full clear text here to prevent spam). +% +% This package draws brackets to underline text (especially, +% but not exclusively, syllables of song text). +% It may be combined with musixtex/musixlyr, within the argument of +% the \setlyrics command or outside the music score. +% It provides several macros to define brackets which may e.g. start +% and end centered below syllables. +% Three length variables are provided to allow a fine adjustment +% of the bracket parameters. +% +% This material is subject to the LaTeX Project Public License. +% See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +% for the details of that license. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Commands: +% +% \underbracket{TEXT} +% draws a bracket underlining TEXT +% the bracket starts below the left end of TEXT +% and stops below the right end of TEXT +% +% \Underbracket{TEXT} +% like \underbracket, but reserves no vertical space below the text +% +% \cunderbracket{LEFT}{TEXT}{RIGHT} +% draws a bracket underlining LEFTTEXTRIGHT +% the bracket starts centered below LEFT and stops centered below RIGHT +% +% \cUnderbracket{LEFT}{TEXT}{RIGHT} +% like cunderbracket, but reserves no vertical space below the text +% +% +% The commands \[c]underbracket do well in normal text which is aligned +% according to the baseline. The vertical space reserved below the text +% guarantees the distance to the next line. +% The commands \[c]Underbracket do well within the \setlyrics command of +% musixlyr where the text is vertically centered between the staves. Vertical +% space reserved below the text would shift the whole text upwards here. +% +% +% Adjustable length parameters: +% (change e.g. with \setlength{\underbracketheight}{4pt}) +% +% \underbracketwidth (default 0.3pt): +% linewidth of the bracket +% +% \underbracketheight (default 3pt): +% height of the bracket (length of the vertical lines) +% +% \underbracketsep (default 2pt): +% vertical distance between the lowest part of the text +% and the upper end of the bracket; +% also minimal vertical distance below the bracket +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ProvidesPackage{underbracket}[2004/03/24 v1.2 LaTeX package underbracket] +\NeedsTeXFormat{LaTeX2e} + +% declare length variables +\newlength{\underbracketwidth} +\newlength{\underbracketheight} +\newlength{\underbracketsep} +\newlength{\underbracketlength} +\newlength{\underbracketdist} + +% need calc pages for adding lengts +\RequirePackage{calc} + +% \underbracket{TEXT} +% draws a bracket underlining TEXT +% the bracket starts below the left end of TEXT +% and stops below the right end of TEXT +% +\newcommand{\underbracket}[1]{% + \settodepth{\underbracketdist}{#1}% + \addtolength{\underbracketdist}{\underbracketsep+\underbracketheight}% + \mbox{% + \rule[-\underbracketdist-\underbracketsep]{0pt}{\underbracketsep}% + \makebox[0pt][l]{% + \rule[-\underbracketdist]{\underbracketwidth}{\underbracketheight}}% + \settowidth{\underbracketlength}{#1}% + \makebox[0pt][l]{% + \rule[-\underbracketdist]{\underbracketlength}{\underbracketwidth}}% + \mbox{#1}% + \makebox[0pt][r]{% + \rule[-\underbracketdist]{\underbracketwidth}{\underbracketheight}}% + }% +} + +% \Underbracket{TEXT} +% like \underbracket, but reserves no vertical space below the text +% +\newcommand{\Underbracket}[1]{% + \settodepth{\underbracketdist}{#1}% + \addtolength{\underbracketdist}{\underbracketsep+\underbracketheight}% + \mbox{% + \raisebox{0pt}[0pt][0pt]{\makebox[0pt][l]{% + \rule[-\underbracketdist]{\underbracketwidth}{\underbracketheight}}}% + \settowidth{\underbracketlength}{#1}% + \raisebox{0pt}[0pt][0pt]{\makebox[0pt][l]{% + \rule[-\underbracketdist]{\underbracketlength}{\underbracketwidth}}}% + \mbox{#1}% + \raisebox{0pt}[0pt][0pt]{\makebox[0pt][r]{% + \rule[-\underbracketdist]{\underbracketwidth}{\underbracketheight}}}% + }% +} + +% \cunderbracket{LEFT}{TEXT}{RIGHT} +% draws a bracket underlining LEFTTEXTRIGHT +% the bracket starts centered below LEFT and stops centered below RIGHT +% +\newcommand{\cunderbracket}[3]{% + \settodepth{\underbracketdist}{#1#2#3}% + \addtolength{\underbracketdist}{\underbracketsep+\underbracketheight}% + \mbox{% + \rule[-\underbracketdist-\underbracketsep]{0pt}{\underbracketsep}% + \settowidth{\underbracketlength}{#1}% + \makebox[0pt][l]{% + \hspace*{0.5\underbracketlength}% + \makebox[0pt]{% + \rule[-\underbracketdist]{\underbracketwidth}{\underbracketheight}}% + \rule[-\underbracketdist]{0.5\underbracketlength}{\underbracketwidth}}% + \mbox{#1}% + \settowidth{\underbracketlength}{#2}% + \makebox[0pt][l]{% + \rule[-\underbracketdist]{\underbracketlength}{\underbracketwidth}}% + \mbox{#2}% + \settowidth{\underbracketlength}{#3}% + \makebox[0pt][l]{% + \rule[-\underbracketdist]{0.5\underbracketlength}{\underbracketwidth}% + \makebox[0pt]{% + \rule[-\underbracketdist]{\underbracketwidth}{\underbracketheight}}}% + \mbox{#3}% + }% +} + +% \cUnderbracket{LEFT}{TEXT}{RIGHT} +% like cunderbracket, but reserves no vertical space below the text +% +\newcommand{\cUnderbracket}[3]{% + \settodepth{\underbracketdist}{#1#2#3}% + \addtolength{\underbracketdist}{\underbracketsep+\underbracketheight}% + \mbox{% + \settowidth{\underbracketlength}{#1}% + \raisebox{0pt}[0pt][0pt]{\makebox[0pt][l]{% + \hspace*{0.5\underbracketlength}% + \makebox[0pt]{% + \rule[-\underbracketdist]{\underbracketwidth}{\underbracketheight}}% + \rule[-\underbracketdist]{0.5\underbracketlength}{\underbracketwidth}}}% + \mbox{#1}% + \settowidth{\underbracketlength}{#2}% + \raisebox{0pt}[0pt][0pt]{\makebox[0pt][l]{% + \rule[-\underbracketdist]{\underbracketlength}{\underbracketwidth}}}% + \mbox{#2}% + \settowidth{\underbracketlength}{#3}% + \raisebox{0pt}[0pt][0pt]{\makebox[0pt][l]{% + \rule[-\underbracketdist]{0.5\underbracketlength}{\underbracketwidth}% + \makebox[0pt]{% + \rule[-\underbracketdist]{\underbracketwidth}{\underbracketheight}}}}% + \mbox{#3}% + }% +} + +% adjustable length parameters +% +% linewidth of the bracket +\setlength{\underbracketwidth}{0.3pt} +% +% height of the bracket (length of the vertical lines) +\setlength{\underbracketheight}{3pt} +% +% vertical distance between the lowest part of the text +% and the upper end of the bracket; +% also minimal vertical distance below the bracket +\setlength{\underbracketsep}{2pt} + -- cgit v1.2.3