summaryrefslogtreecommitdiff
path: root/macros/musixtex/tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/musixtex/tex
Initial commit
Diffstat (limited to 'macros/musixtex/tex')
-rw-r--r--macros/musixtex/tex/musixadd.tex30
-rw-r--r--macros/musixtex/tex/musixadf.tex138
-rw-r--r--macros/musixtex/tex/musixbar.tex148
-rw-r--r--macros/musixtex/tex/musixbbm.tex69
-rw-r--r--macros/musixtex/tex/musixblx.tex44
-rw-r--r--macros/musixtex/tex/musixbm.tex25
-rw-r--r--macros/musixtex/tex/musixcho.tex68
-rw-r--r--macros/musixtex/tex/musixcpt.tex826
-rw-r--r--macros/musixtex/tex/musixcrd.tex272
-rw-r--r--macros/musixtex/tex/musixdat.tex59
-rw-r--r--macros/musixtex/tex/musixdbr.tex250
-rw-r--r--macros/musixtex/tex/musixdia.tex110
-rw-r--r--macros/musixtex/tex/musixec.tex169
-rw-r--r--macros/musixtex/tex/musixeng.tex42
-rw-r--r--macros/musixtex/tex/musixesf.tex79
-rw-r--r--macros/musixtex/tex/musixevo.tex19
-rw-r--r--macros/musixtex/tex/musixext.tex26
-rw-r--r--macros/musixtex/tex/musixfll.tex44
-rw-r--r--macros/musixtex/tex/musixgre.tex351
-rw-r--r--macros/musixtex/tex/musixgui.tex41
-rw-r--r--macros/musixtex/tex/musixhor.tex41
-rw-r--r--macros/musixtex/tex/musixhou.tex58
-rw-r--r--macros/musixtex/tex/musixhv.tex180
-rw-r--r--macros/musixtex/tex/musixinv.tex2
-rw-r--r--macros/musixtex/tex/musixlit.tex87
-rw-r--r--macros/musixtex/tex/musixlyr.tex1162
-rw-r--r--macros/musixtex/tex/musixmad.tex30
-rw-r--r--macros/musixtex/tex/musixper.tex195
-rw-r--r--macros/musixtex/tex/musixplt.tex184
-rw-r--r--macros/musixtex/tex/musixpoi.tex67
-rw-r--r--macros/musixtex/tex/musixppff.tex169
-rw-r--r--macros/musixtex/tex/musixps.tex963
-rw-r--r--macros/musixtex/tex/musixref.tex305
-rw-r--r--macros/musixtex/tex/musixslu.tex4
-rw-r--r--macros/musixtex/tex/musixsqr.tex3
-rw-r--r--macros/musixtex/tex/musixste.tex35
-rw-r--r--macros/musixtex/tex/musixstf.tex28
-rw-r--r--macros/musixtex/tex/musixstr.tex47
-rw-r--r--macros/musixtex/tex/musixsty.tex388
-rw-r--r--macros/musixtex/tex/musixtex.tex5707
-rw-r--r--macros/musixtex/tex/musixtmr.tex201
-rw-r--r--macros/musixtex/tex/musixtri.tex64
-rw-r--r--macros/musixtex/tex/tuplet.tex27
43 files changed, 12757 insertions, 0 deletions
diff --git a/macros/musixtex/tex/musixadd.tex b/macros/musixtex/tex/musixadd.tex
new file mode 100644
index 0000000000..9e3b716071
--- /dev/null
+++ b/macros/musixtex/tex/musixadd.tex
@@ -0,0 +1,30 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+%
+% musixadd.tex : allocate registers for additional instruments
+%
+\immediate\write16{MusiXADDitional instruments T.115 <19 Nov 2010>}%
+%
+%
+% setup the maximum element numbers
+\setmaxinstruments{9}%
+\setmaxgroups{4}%
+\setmaxslurs\maxinstruments
+%
+\endinput
diff --git a/macros/musixtex/tex/musixadf.tex b/macros/musixtex/tex/musixadf.tex
new file mode 100644
index 0000000000..33c93ddca8
--- /dev/null
+++ b/macros/musixtex/tex/musixadf.tex
@@ -0,0 +1,138 @@
+%
+% musixadf.tex - some additional accents for MusiXTeX
+%
+%% Author:
+%% Hiroaki MORIMOTO <CQX05646\atmark nifty.com>
+%% Tokyo, Japan
+%% URL: http://homepage1.nifty.com/kuuku/pub/musixtex/index-e.html
+%
+\immediate\write16{MusiXTeX Additional Accents <2015-02-15> )}%
+%
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+%
+\font\musixadfeleven=xadf11
+\font\musixadfthirteen=xadf13
+\font\musixadfsixteen=xadf16
+\font\musixadftwenty=xadf20
+\font\musixadftwentyfour=xadf24
+\font\musixadftwentynine=xadf29
+%
+\let\comput@fonts@org=\comput@fonts\relax
+\def\comput@fonts{%
+ \comput@fonts@org
+ \ifnum\musicsize=\sixt@@n
+ \let\musixadfLargefont\musixadftwentyfour
+ \let\musixadflargefont\musixadftwenty
+ \let\musixadfnorfont\musixadfsixteen
+ \let\musixadfsmallfont\musixadfthirteen
+ \let\musixadftinyfont\musixadfeleven
+ \else\ifnum\musicsize=\@xxiv
+ \let\musixadfLargefont\musixadftwentynine
+ \let\musixadflargefont\musixadftwentynine
+ \let\musixadfnorfont\musixadftwentyfour
+ \let\musixadfsmallfont\musixadftwenty
+ \let\musixadftinyfont\musixadfsixteen
+ \else\ifnum\musicsize=\@xxix
+ \let\musixadfLargefont\musixadftwentynine
+ \let\musixadflargefont\musixadftwentynine
+ \let\musixadfnorfont\musixadftwentynine
+ \let\musixadfsmallfont\musixadftwentyfour
+ \let\musixadftinyfont\musixadftwenty
+ \else
+ \musicsize\tw@nty
+ \let\musixadfLargefont\musixadftwentynine
+ \let\musixadflargefont\musixadftwentyfour
+ \let\musixadfnorfont\musixadftwenty
+ \let\musixadfsmallfont\musixadfsixteen
+ \let\musixadftinyfont\musixadfthirteen
+ \fi\fi\fi
+}%
+%
+\let\set@Largenotesize@org=\set@Largenotesize\relax
+\let\set@largenotesize@org=\set@largenotesize\relax
+\let\set@normalnotesize@org=\set@normalnotesize\relax
+\let\set@smallnotesize@org=\set@smallnotesize\relax
+\let\set@tinynotesize@org=\set@tinynotesize\relax
+%
+\def\set@Largenotesize{%
+ \set@Largenotesize@org\let\musixadfont\musixadfLargefont}%
+\def\set@largenotesize{%
+ \set@largenotesize@org\let\musixadfont\musixadflargefont}%
+\def\set@normalnotesize{%
+ \set@normalnotesize@org\let\musixadfont\musixadfnorfont}%
+\def\set@smallnotesize{%
+ \set@smallnotesize@org\let\musixadfont\musixadfsmallfont}%
+\def\set@tinynotesize{%
+ \set@tinynotesize@org\let\musixadfont\musixadftinyfont}%
+%
+\def\musixadfchar{\musixadfont\char}%
+%
+\def\uacc@Char@adf#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@adf
+ \fi}%
+%
+\def\lacc@Char@adf#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@adf
+ \fi}%
+\def\C@ChaR@adf{\musixadfont\char\n@iv}%
+%
+\def\@Char@adf#1{\zcharnote{#1}\C@ChaR@adf}%
+%
+% coda sign with serif
+%
+% ___
+% |
+% /~|~\
+% |-+--+--+-|
+% \_|_/
+% |
+% ~~~
+%
+%\def\scoda{\musixadfchar85\relax}%
+\def\adfC@coda#1{\llap{\@Char@adf{#1}\kern\afterruleskip}}%
+\def\scoda{\n@iv85\adfC@coda}%
+\def\replacecoda{\let\coda=\scoda}%
+%
+%
+%
+% upright segno
+%
+%\def\upsegno{\musixadfchar86\relax}%
+\def\upsegno{\n@iv86\@Char@adf}%
+\def\replacesegno{\let\segno=\upsegno}%
+%
+%
+% little swell ...something like <>
+%
+% lower
+\def\llsw{\n@iv31\lacc@Char@adf}
+% upper
+\def\ulsw{\n@iv30\uacc@Char@adf}%
+%
+%
+% a little larger sforzato
+%
+\def\uSfz{\n@iv\tw@nty \uacc@Char@adf}
+\def\lSfz{\n@iv21\lacc@Char@adf}
+\def\dSfz{\lSfz}
+\def\replacesforzato{%
+ \let\usfz=\uSfz\relax
+ \let\lsfz=\lSfz\relax
+}%
+%
+%
+% v-breath
+%
+\def\zuBreath{\check@staff\raise\@ight\internote\rlap{\n@iv33\C@ChaR@adf}\fi}%
+\def\cuBreath{\check@staff\adv@box{\raise\@ight\internote
+ \hbox\@to\noteskip{\hss\n@iv33\C@ChaR@adf\hss}}\fi}%
+\def\zlBreath{\check@staff\raise0\internote\rlap{\n@iv34\C@ChaR@adf}\fi}%
+\def\clBreath{\check@staff\adv@box{\raise0\internote
+ \hbox\@to\noteskip{\hss\n@iv34\C@ChaR@adf\hss}}\fi}%
+%
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixbar.tex b/macros/musixtex/tex/musixbar.tex
new file mode 100644
index 0000000000..5e748aae6d
--- /dev/null
+++ b/macros/musixtex/tex/musixbar.tex
@@ -0,0 +1,148 @@
+%%%%%%%%%% Hiding/printing bar lines individually %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Here comes a bunch of rather general macros which enable printing or
+% hiding barlines for each staff and inter-staff space individually:
+%
+% Mthimkhulu Molekwa <MMolekwa@rrs.co.za>
+
+\ifx\indivbarrules\undefined\else\endinput\fi
+
+\immediate\write16{MusiXBAR printing or hiding seperate bar lines 1.01\space<23 Februar 2000>}%
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+%\makeatletter
+
+\newdimen\barline@depth
+
+\def\rul@indiv#1{%
+ \n@loop
+ \Comp@High
+ \expandafter\ifx\csname s@b\romannumeral\noinstrum@nt\endcsname\relax
+ \multiply\barline@depth -1\relax
+ \advance\barline@depth\altitude
+ \else
+ \barline@depth=0pt\relax
+ \fi
+ {\expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname 1%
+ \y@v=0pt\relax
+ \fi
+ \raise\altitude\rlap{\vrule\@depth\barline@depth\@width#1\@height\y@v}}%
+ \barline@depth\altitude
+ \advance\barline@depth\y@v
+ \repeat
+ \addspace#1}
+
+\def\rul@indiv@#1{\n@loop{\prul@indiv@#1}\repeat\addspace#1}
+
+\def\prul@indiv@#1{%
+ \y@v\interportee \C@Inter\advance\y@v-\stem@skip
+ \expandafter\ifx\csname s@b\romannumeral\noinstrum@nt\endcsname\relax
+ \multiply\barline@depth -1\relax
+ \advance\barline@depth\altitude
+ \else
+ \barline@depth=0pt\relax
+ \fi
+ {\expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname 1%
+ \y@v=0pt\relax
+ \fi
+ \p@loop
+ \raise\altportee\rlap{%
+ \vrule\@depth\barline@depth\@width#1\@height\y@v}%
+ \count@portee
+ \repeat}%
+ \barline@depth\altitude
+ \advance\barline@depth\y@v}
+
+%== Required to use the following macros
+\def\indivbarrules{%
+ \let\writ@rule\rul@indiv
+ \sepbarrule 1}
+
+\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
+\def\conbarrule#1{%
+ \if 1#1\else\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}
+
+%== shows bar line for specified instrument
+\def\showbarrule#1{\expandafter\let\csname h@bl\romannumeral#1\endcsname\relax}
+
+%== separates barlines in multistaff instruments
+\def\rul@sep@#1{\n@loop{\prul@sep#1}\repeat\addspace#1}
+
+\def\prul@sep#1{%
+ \y@v\interportee \C@Inter\advance\y@v-\stem@skip
+ \p@loop
+ \hbox{\raise\altportee\rlap{%
+ \vrule\@depth\hlthick\@width#1\@height\y@v}}%
+ \count@portee\repeat}
+
+\def\Sepbarrules{\let\writ@rule\rul@sep@ }
+
+%-\makeatother
+
+\catcode`\@=\catcodeat
+\endinput
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Here comes an example of how to use these macros
+
+%%%%% Pre-amble
+\input musixtex
+\input musixbar
+
+\instrumentnumber3
+\setmeter3{{\meterfrac{3}{4}}}
+\setmeter2{{\meterfrac{2}{4}}}
+\setmeter1{{\meterfrac{3}{8}}}
+\nobarnumbers
+\indivbarrules
+\sepbarrule2
+\sepbarrule3
+
+%%%%% Spacing
+\beforeruleskip=0.5\afterruleskip
+\interinstrument=4\Interligne
+
+%%%%% Macros
+\let\ni\nextinstrument
+
+%%%%% Music
+\linegoal2
+\startpiece\addspace\afterruleskip
+\NOtes\pt f\qa f\ni\qa f\ni\qa f\en
+\hidebarrule2\hidebarrule3\bar
+\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en
+\showbarrule2\bar
+\NOtes\pt f\qa f\ni\qa f\ni\qa f\en
+\hidebarrule2\showbarrule3\bar
+\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en
+\showbarrule2\hidebarrule3\bar
+\NOtes\pt f\qa f\ni\qa f\ni\qa f\en
+\hidebarrule2\bar
+\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en
+\showbarrule2\showbarrule3\bar
+\NOtes\pt f\qa f\ni\qa f\ni\qa f\en
+\hidebarrule2\hidebarrule3\bar
+\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en
+\showbarrule2\bar
+\NOtes\pt f\qa f\ni\qa f\ni\qa f\en
+\hidebarrule2\showbarrule3\bar
+\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en
+\showbarrule2\hidebarrule3\bar
+\NOtes\pt f\qa f\ni\qa f\ni\qa f\en
+\hidebarrule2\bar
+\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en
+\showbarrule2\showbarrule3\stoppiece
+\bye
+
diff --git a/macros/musixtex/tex/musixbbm.tex b/macros/musixtex/tex/musixbbm.tex
new file mode 100644
index 0000000000..c3c2333002
--- /dev/null
+++ b/macros/musixtex/tex/musixbbm.tex
@@ -0,0 +1,69 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+%
+% musixbbm.tex : allocate registers and define macros for 256th beam
+%
+\immediate\write16{MusiXBBeaM T.115 <19 Nov 2010>}%
+%
+\ifx\undefined\ibbbbbbu \else \endinput \fi
+%
+% setup the maximum element numbers
+\setmaxcclvibeams{6}%
+%
+%
+% definitions for 256th beams
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+%
+\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\ibbbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctg \i@bbbbbbu}
+\def\ibbbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctg \i@bbbbbbl}
+
+\def\i@bbbbbbu#1#2{%
+ \ifnum\b@n=\z@ \i@bbbbbu{#1}{#2}\C@ba\b@z\@ne \C@ba\c@z\@ne
+ \C@ba\d@z\@ne \C@ba\e@z\@ne \C@ba\f@z\@ne \fi \n@bbbbbbu}
+\def\i@bbbbbbl#1#2{%
+ \ifnum\b@n=\z@ \i@bbbbbl{#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 \C@ba\f@z\m@ne \fi \n@bbbbbbl}
+
+\def\nbbbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctg \Dec@b\@ne\n@bbu
+ \Dec@b\tw@\n@bbbu \Dec@b\thr@@\n@bbbbu \Dec@b\f@ur\n@bbbbbu
+ \Dec@b\fiv@\n@bbbbbbu}
+\def\nbbbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctg \Dec@b\@ne\n@bbl
+ \Dec@b\tw@\n@bbbl \Dec@b\thr@@\n@bbbbl \Dec@b\f@ur\n@bbbbbl
+ \Dec@b\fiv@\n@bbbbbbl}
+
+\def\n@bbbbbbu{\C@nb\g@z\g@x\fiv@\qd@skip}
+\def\n@bbbbbbl{\C@nb\g@z\g@x\fiv@\z@}
+
+\def\tbbbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctg \t@bbbbbbu}
+\def\tbbbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctg \t@bbbbbbl}
+
+\def\t@bbbbbu{\n@v\fiv@ \C@b\t@bbbbbbu\n@bbbbbu\y@i\f@z \beam@pos\f@x \t@xbu}
+\def\t@bbbbbl{\n@v\fiv@ \C@b\t@bbbbbbl\n@bbbbbl\y@i\f@z \beam@pos\f@x \t@xbl}
+
+\def\t@bbbbbbu{\n@v\si@ \C@b\empty\n@bbbbbu\y@i\g@z \beam@pos\g@x \t@xbu}
+\def\t@bbbbbbl{\n@v\si@ \C@b\empty\n@bbbbbl\y@i\g@z \beam@pos\g@x \t@xbl}
+
+\def\Ibbbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctg \I@bu\i@bbbbbbu}
+\def\Ibbbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctg \I@bl\i@bbbbbbl}
+
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixblx.tex b/macros/musixtex/tex/musixblx.tex
new file mode 100644
index 0000000000..d40de4cb68
--- /dev/null
+++ b/macros/musixtex/tex/musixblx.tex
@@ -0,0 +1,44 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+% (Nicolas Brouard)
+
+\immediate\write16{MusiXBigLateX 0.36\space<1 March 1995>}%
+
+\ifx\undefined\largevaugment \else \endinput \fi
+
+\newenvironment{music}{\catcodesmusic\parskip0pt\resetlayout}{}%
+
+\newdimen\largevaugment \newdimen\largehaugment
+
+\newenvironment{largemusic}{\vfill\eject\catcodesmusic\parskip0pt
+ \resetlayout
+ \edef\theoldtextwidth{\the\textwidth}%
+ \edef\theoldtextheight{\the\textheight}%
+ \def\Fullwidth{185mm}\def\Fullheight{260mm}%
+ \largevaugment\Fullheight \advance\largevaugment-\theoldtextheight
+ \largehaugment\Fullwidth \advance\largehaugment-\theoldtextwidth
+ \divide\largevaugment2 \divide\largehaugment2
+ \advance\voffset\largevaugment \advance\hoffset-\largehaugment
+ \xdef\thelargehoffset{\the\hoffset}%
+ \hsize\Fullwidth \textwidth\Fullwidth
+
+ \bgroup\textwidth\Fullwidth\hsize\Fullwidth\vsize\Fullheight}%
+ {\egroup\advance\voffset.5\largevaugment
+ \clearpage\advance\voffset-.5\largevaugment}
+\endinput
diff --git a/macros/musixtex/tex/musixbm.tex b/macros/musixtex/tex/musixbm.tex
new file mode 100644
index 0000000000..29147d8707
--- /dev/null
+++ b/macros/musixtex/tex/musixbm.tex
@@ -0,0 +1,25 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+%
+\immediate\write16{MusiXEXTra \space<7 June 2015>}%
+%
+%
+% (nothing to do. - T.118 or later provide \slide and \raggedstoppiece by default.)
+%
+\endinput
diff --git a/macros/musixtex/tex/musixcho.tex b/macros/musixtex/tex/musixcho.tex
new file mode 100644
index 0000000000..55b5e482eb
--- /dev/null
+++ b/macros/musixtex/tex/musixcho.tex
@@ -0,0 +1,68 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+\immediate\write16{MusiXCHOir T.89\space<24 March 1998>}%
+
+\ifx\undefined\braceheight \else \endinput \fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+\catcodesmusic
+
+% big parentheses for e.g. multiline text
+
+\newskip\braceheight \braceheight=4\Interligne\relax
+\def\ChoirStrut{\vphantom{\^Wgjpqy}}
+
+\def\biglbrace{\let\@Ti\llap \let\@Tii\{\relax \C@br}
+\def\bigrbrace{\let\@Ti\rlap \let\@Tii\}\relax \C@br}
+\def\C@br{\C@tx{\@Ti{$\left\@Tii\vbox\@to\braceheight{}\right.\n@space$}\vss}}
+
+% multiline text
+
+\def\@kti{\kern\thr@@\Internote\strut}
+\def\@kmi{\kernm\Internote\strut}
+
+\def\Dtx#1|#2*{\C@tx{\lrlap{\@kti#1\ChoirStrut}\lrlap{\@kti#2\ChoirStrut}\vss}}
+\def\Drtx#1|#2*{\C@tx{\rlap{\@kmi#1\ChoirStrut}\rlap{\@kmi#2\ChoirStrut}\vss}}
+
+\def\Ttx#1|#2|#3*{\C@tx{\lrlap{\@kti#1\ChoirStrut}\lrlap{\@kti#2\ChoirStrut}\lrlap{\@kti#3\ChoirStrut}\vss}}
+\def\Trtx#1|#2|#3*{\C@tx{\rlap{\@kmi#1\ChoirStrut}\rlap{\@kmi#2\ChoirStrut}\rlap{\@kmi#3\ChoirStrut}\vss}}
+
+\def\Qtx#1|#2|#3|#4*{\C@tx{\lrlap{\@kti#1\ChoirStrut}\lrlap{\@kti#2\ChoirStrut}%
+ \lrlap{\@kti#3\ChoirStrut}\lrlap{\@kti#4\ChoirStrut}\vss}}
+\def\Qrtx#1|#2|#3|#4*{\C@tx{\rlap{\@kmi#1\ChoirStrut}\rlap{\@kmi#2\ChoirStrut}\rlap{\@kmi#3\ChoirStrut}%
+ \rlap{\@kmi#4\ChoirStrut}\vss}}
+
+\def\tx#1*{\C@tx{\lrlap{\@kti#1\ChoirStrut}\vss}}
+\def\rtx#1*{\C@tx{\rlap{\@kmi#1\ChoirStrut}\vss}}
+
+% longation rule
+
+\newskip\@ihf
+\def\thf{\getcurpos\advance\y@v-\@ihf \advance\y@v-\tw@\Interligne
+ \llap{\vrule\@width\y@v\@height\lthick\kern\Interligne}}%
+
+\def\ixhf#1{\setbox\ch@box\hbox{#1}\getcurpos \advance\y@v\h@lf\wd\ch@box
+ \advance\y@v\Interligne \global\@ihf\y@v \box\ch@box}
+
+\def\ihf#1{\setbox\ch@box\hbox{#1}\getcurpos \advance\y@v\wd\ch@box
+ \global\@ihf\y@v \box\ch@box}
+
+\endcatcodesmusic
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixcpt.tex b/macros/musixtex/tex/musixcpt.tex
new file mode 100644
index 0000000000..90d9066465
--- /dev/null
+++ b/macros/musixtex/tex/musixcpt.tex
@@ -0,0 +1,826 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+%%% for those who want compatibility, input it !after! musixtex and all
+%%% other \input files, means: at very last
+
+\ifx\undefined\DIMin \else \endinput \fi
+
+\immediate\write16{MusiXComPaTible T.109\space<8 May 2018>}%
+
+\ifx\undefined\mxversion \errmessage{MusiXcpt input before MusiXTeX !}\fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+\catcodesmusic
+
+\voffset=-15.4mm
+\parindent=10mm
+
+\def\z@suspend@autoflag{\ifx\auto@flag\empty
+ \fil@autolines\fi \let\auto@flag\empty}
+
+
+\let\fil@autolines\empty
+\let\auto@flag\empty
+
+\def\updatecontext{%
+ \T@bil \writ@newclefs\wbarno@x\Writ@newsigns
+ \Writ@meters\addspace\afterruleskip
+ \else\fil@autolines\let\auto@flag\@ne
+ \writ@newclefs\Writ@newsigns\z@suspend\@NewPage\fi}
+
+\def\changecontext{\n@wbar\updatecontext}
+\def\zchangecontext{\advance\n@skip\beforeruleskip \widthtyp@\@ne \t@rmskip
+ \zn@wbar\updatecontext}
+
+\def\@breakpassInoauto{\def\T@bil{\getcurpos \ifdim\y@v<\h@lf\line@width}}
+\def\ori@passIzbarre{\zn@wbar\fil@{z \the\barno}}
+
+\def\ori@passIendsection{\fil@{*\space\the\mulooseness}\mulooseness\z@}
+
+\def\@breakpassIauto{\advance\barsinlin@\@ne \ifnum\barsinlin@<\maxbarsinline}%
+
+\def\@xbarrepassIauto{\T@bil \else\advance\barsinlin@\m@ne \fi\@bar}
+\let\@xbarrepassIIauto\barre
+
+\def\@zbarpassIauto{\T@bil \zn@wbar\else\zstoppiec@\@NewPage\fi}
+
+%!!! Attention: If you use \autolines, take care for the number of lines.
+% If they exceed 127, trouble will be ahead. (adjust MAX_SECTIONS in
+% musixflx.c or insert a \suspmorceau..\debutmorceau) !!!
+
+\def\autolines#1#2#3{% #1 nombre d'elemskip par mesure,
+% #2 nombre de mesures par ligne,
+% #3 nb lignes par page
+ \ifstartmuflex@done\else\startmuflex\fi
+ \global\maxbarsinline=#2\relax
+ \global\maxlinesinpage=#3\relax
+ \let\count@lines\count@lines@auto
+ \ifx\ragg@d\empty % ---> pass 1
+ \message{/autolines pass I }%
+ \let\xbar=\@xbarrepassIauto
+ \let\zbar=\@zbarpassIauto
+ \let\@nds@ction=\empty
+ \def\fil@autolines{\fil@{a}}%
+ \let\barsinline=\barsinlin@
+ \let\T@bil=\@breakpassIauto
+ \else %---> pass 2
+ \message{/autolines pass II }%
+ \let\xbar=\@xbarrepassIIauto
+ \let\@nds@ction=\empty
+ \fi}
+
+\def\noautolines{\let\fil@autolines\empty
+ \ifstartmuflex@done\else\startmuflex\fi
+ \let\xbar\ori@xbarre % original X handling
+ \let\count@lines\count@lines@empty
+ \ifx\ragg@d\empty %---> pass 1
+ \message{/noautolines pass I }%
+ \let\zbar\ori@zbarre % original X handling
+ \let\barsinline=\barsinline@ori
+ \let\T@bil\ori@T@bil
+ \let\@nds@ction=\ori@passIendsection
+ \else
+ \message{/noautolines pass II }%
+ \let\@nds@ction=\empty
+ \fi}
+ %
+
+\def\count@lines@auto{\global\advance\linesinpage\@ne
+ \ifnum\linesinpage<\maxlinesinpage
+ \else \eject \global\linesinpage\z@ \fi}
+\def\count@lines@empty{\global\advance\linesinpage\@ne}
+\let\count@lines\count@lines@empty
+
+\def\@NewPage{\count@lines \contpiece}
+\def\@LeftRp{\stoppiec@\@NewPage\addspace{\h@lf\afterruleskip}%
+ \kernm\afterruleskip\l@eftrepeat\kern\afterruleskip}
+
+\def\T@bil{\advance\barsinlin@\@ne \ifnum\barsinlin@<\maxbarsinlin@}
+\def\ori@T@bil{\advance\barsinlin@\@ne \ifnum\barsinlin@<\maxbarsinlin@}
+
+\def\barre{\T@bil \@bar\else\stoppiec@\@NewPage\fi}
+
+\def\xbar{\@bar\global\advance\barsinpi@c@\m@ne }
+\def\ori@xbarre{\@bar\global\advance\barsinpi@c@\m@ne }
+
+\def\zbar{\T@bil \zn@wbar\else\zstoppiece\@NewPage\fi}
+\def\ori@zbarre{\T@bil \zn@wbar\else\zstoppiece\@NewPage\fi}
+
+\def\alaligne{\stoppiece\@NewPage}
+\def\Suspmorceau{\Stoppiece\count@lines}
+\def\suspmorceau{\stoppiece\count@lines}
+\def\zalaligne{\zstoppiece\@NewPage}
+\def\leftrepeat{\leftrepeat@II}
+\def\leftrepeat@II{\T@bil \setleftrepeat\@bar\else\@LeftRp\fi}
+\def\leftrightrepeat{\leftrightrepeat@II}
+\def\leftrightrepeat@II{\T@bil \setleftrightrepeat\@bar
+ \else\setrightrepeat\@LeftRp\fi}
+
+\def\finrightrepeat{\setrightrepeat\stoppiec@}
+
+
+\let\nbporteesi\n@pi
+\let\nbporteesii\n@pii
+\let\nbporteesiii\n@piii
+\let\nbporteesiv\n@piv
+\let\nbporteesv\n@pv
+\let\nbporteesvi\n@pvi
+\def\nbporteesvii{\n@pvii}%
+\def\nbporteesviii{\n@pviii}%
+\def\nbporteesix{\n@pvix}%
+
+\def\nbstaffsi{\n@pi}%
+\def\nbstaffsii{\n@pii}%
+\def\nbstaffsiii{\n@piii}%
+\def\nbstaffsiv{\n@piv}%
+\def\nbstaffsv{\n@pv}%
+\def\nbstaffsvi{\n@pvi}%
+\def\nbstaffsvii{\n@pvii}%
+\def\nbstaffsviii{\n@pviii}%
+\def\nbstaffsix{\n@pvix}%
+
+\def\resetlayout{\nullthick\f@ur\Interligne \let\interfacteur\nin@
+ \stafftopmarg\thr@@\Interligne \staffbotmarg\thr@@\Interligne
+ \let\stafflinesnbi\fiv@ \let\stafflinesnbii\fiv@ \let\stafflinesnbiii\fiv@
+ \let\stafflinesnbiv\fiv@ \let\stafflinesnbv\fiv@ \let\stafflinesnbvi\fiv@
+ \let\clefdesoli\trebleclef \let\clefdesolii\trebleclef
+ \let\clefdesoliii\trebleclef \let\clefdesoliv\trebleclef
+ \let\clefdesolv\trebleclef \let\clefdesolvi\trebleclef
+ \let\clefduti\altoclef \let\clefdutii\altoclef
+ \let\clefdutiii\altoclef \let\clefdutiv\altoclef
+ \let\clefdutv\altoclef \let\clefdutvi\altoclef
+ \let\clefdefai\bassclef \let\clefdefaii\bassclef
+ \let\clefdefaiii\bassclef \let\clefdefaiv\bassclef
+ \let\clefdefav\bassclef \let\clefdefavi\bassclef
+ \elemskip\f@ur\Internote}
+
+% These definition depends on the assumption, that \elemskip is equal 10pt
+
+\def\hqsk{\off{.3\@l@mskip}}
+\def\qsk{\hqsk\hqsk}
+
+% ============================
+% will change
+
+\chardef\@li=51
+\chardef\@liii=53
+\newif\ifcautionacc
+
+\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}
+\def\bigdfl{\n@v\@li \@acc}
+\def\bigsh{\n@v\@lii \@acc}
+\def\bigdsh{\n@v\@liii \@acc}
+\def\bigna{\n@v\@liv \@acc}
+
+\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{\check@staff
+ \n@v91\inhgetn@i#1\relax\n@iv\si@ \@SmallACC
+ \fi}
+
+\def\csh{\cautionacctrue\smallsh}
+\def\cdsh{\cautionacctrue\smalldsh}
+\def\cna{\cautionacctrue\smallna}
+\def\cfl{\cautionacctrue\smallfl}
+\def\cdfl{\cautionacctrue\smalldfl}
+
+\def\@UpperAcc#1{\inhgetn@i#1\relax\@UpAcc}
+\def\@UpAcc{\advance\n@i\thr@@ \zchar\n@i{\kern\qu@rt\qn@width\@SmallAcc}}
+
+\def\upperna{\n@v94\@UpperAcc}
+\def\upperfl{\n@v90\@UpperAcc}
+\def\uppersh{\n@v92\@UpperAcc}
+
+% analysis of accidentals within collective note coding
+
+\def\absoluteaccidentals{%
+ \let\Xna\na \let\Xsh\sh \let\Xfl\fl \let\Xdsh\dsh \let\Xdfl\dfl}
+\absoluteaccidentals
+
+\def\Na#1{\small@test\bigNa{#1}\else\smallNa{#1}\fi}
+\def\Fl#1{\small@test\bigFl{#1}\else\smallFl{#1}\fi}
+\def\Sh#1{\small@test\bigSh{#1}\else\smallSh{#1}\fi}
+\def\dFl#1{\small@test\bigdFl{#1}\else\smalldFl{#1}\fi}
+\def\dSh#1{\small@test\bigdSh{#1}\else\smalldSh{#1}\fi}
+
+\def\cNa{\cautionacctrue\smallNa}
+\def\cFl{\cautionacctrue\smallFl}
+\def\cSh{\cautionacctrue\smallSh}
+\def\cdFl{\cautionacctrue\smalldFl}
+\def\cdSh{\cautionacctrue\smalldSh}
+
+\def\lNa#1{\shiftaccwidth{\Na{#1}}}
+\def\lFl#1{\shiftaccwidth{\Fl{#1}}}
+\def\lSh#1{\shiftaccwidth{\Sh{#1}}}
+\def\ldFl#1{\shiftaccwidth{\dFl{#1}}}
+\def\ldSh#1{\shiftaccwidth{\dSh{#1}}}
+\def\shiftaccwidth{\loffset\smallvalue}
+
+\def\sign@diff#1\relax{\getn@i#1\relax\n@iii\n@i
+ \advance\n@iii-\ut@ref \advance\n@iii-\ut@ref
+ \loop\ifnum\n@iii>\si@ \advance\n@iii-\s@v@n \repeat
+ \loop\ifnum\n@iii<\z@ \advance\n@iii\s@v@n \repeat
+ \ifcase\n@iii
+ \n@ii\si@ % mi
+ \or\n@ii\@ne % fa
+ \or\n@ii\thr@@ % sol
+ \or\n@ii\fiv@ % la
+ \or\n@ii\s@v@n % si
+ \or\n@ii\tw@ % do
+ \or\n@ii\f@ur % re
+ \fi
+% \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{\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}
+
+\def\set@bigaccid{\n@vi\z@ \let\@Ti\@BigAcc}
+\def\set@smallaccid{\n@vi\@xl \let\@Ti\@SmallACC}
+\def\set@UpAcc{\n@vi\@xl \let\@Ti\@UpAcc}
+
+\def\bigFl{\set@bigaccid\@Flat}
+\def\smallFl{\set@smallaccid\@Flat}
+\def\upperFl{\set@UpAcc\@Flat}
+
+\def\@Natural#1{\sign@diff#1\relax
+ \ifcase\n@ii \n@v\@lii \or\n@v\@liv \or\n@v\@l \fi \C@aacc}
+
+\def\bigNa{\set@bigaccid\@Natural}
+\def\smallNa{\set@smallaccid\@Natural}
+\def\upperNa{\set@UpAcc\@Natural}
+
+\def\@Sharp#1{\sign@diff#1\relax
+ \ifcase\n@ii \n@v\@liii \or\n@v\@lii \or\n@v\@liv \fi \C@aacc}
+
+\def\bigSh{\set@bigaccid\@Sharp}
+\def\smallSh{\set@smallaccid\@Sharp}
+\def\upperSh{\set@UpAcc\@Sharp}
+
+\def\@nod{Can't double }
+
+\def\@dSharp#1{\sign@diff#1\relax
+ \ifcase\n@ii \message{\@nod sharpen !\noexpand\dSh #1}%
+ \or\n@v\@liii \C@aacc\or\n@v\@lii \C@aacc \fi}
+
+\def\bigdSh{\set@bigaccid\@dSharp}
+\def\smalldSh{\set@smallaccid\@dSharp}
+%\def\upperdSh{\set@UpAcc\@dSharp}
+
+\def\@dFlat#1{\sign@diff#1\relax
+ \ifcase\n@ii \n@v\@l \C@aacc\or\n@v\@li \C@aacc
+ \or\message{\@nod flatten !\noexpand\dFl #1}\fi}
+
+\def\bigdFl{\set@bigaccid\@dFlat}
+\def\smalldFl{\n@vi\@xl \n@iv\si@ \let\@Ti\@SmallACC \@dFlat}
+%\def\upperdFl{\set@UpAcc\@dFlat}
+
+\def\relativeaccidentals{%
+ \let\Xna\Na \let\Xsh\Sh \let\Xfl\Fl \let\Xdsh\dSh \let\Xdfl\dFl}
+
+%\def\writ@names{\n@loop
+% \setbox\n@otebox\llap{\vbox{\hbox\@to\parindent{%
+% \hss\csname instrument\romannumeral\noinstrum@nt\endcsname\hss}}~~}%
+% \altportee\altitude \Comp@High\advance\y@v-\ht\n@otebox
+% \advance\altportee\h@lf\y@v \raise\altportee\box\n@otebox \repeat}
+%\let\Writ@names\writ@names
+
+%\let\instrumenti\empty \let\instrumentii\empty \let\instrumentiii\empty
+%\let\instrumentiv\empty \let\instrumentv\empty \let\instrumentvi\empty
+
+% ============================
+
+\def\dimin{\decrescendo{4\qn@width}}
+\def\Dimin{\decrescendo{8\qn@width}}
+\def\DImin{\decrescendo{12\qn@width}}
+\def\DIMin{\decrescendo{16\qn@width}}
+\def\DIMIn{\decrescendo{24\qn@width}}
+\def\DIMIN{\decrescendo{36\qn@width}}
+\def\cresc{\crescendo{4\qn@width}}
+\def\Cresc{\crescendo{8\qn@width}}
+\def\CResc{\crescendo{12\qn@width}}
+\def\CREsc{\crescendo{16\qn@width}}
+\def\CRESc{\crescendo{24\qn@width}}
+\def\CRESC{\crescendo{36\qn@width}}
+
+\let\interligne\Interligne
+\def\debutmorceau{\ifstartmuflex@done\else\startmuflex\fi
+\startpiece
+\let\debutmorceau\startpiece}
+\let\finmorceau\Stoppiece
+\let\zfinmorceau\zstoppiece
+\let\finpartition\stoppiece
+\let\debutextrait\startextract
+\let\finextrait\endextract
+\let\zfinextrait\zendextract
+\let\reprmorceau\contpiece
+\let\lreprmorceau\contpiece
+\def\preprmorceau{\eject \global\linesinpage\z@ \contpiece}
+\def\resetsignatures{\generalsignature0\savesignature}
+\def\alapage{\stoppiece\eject \global\linesinpage\z@ \contpiece}
+\def\zalapage{\zstoppiece\eject \global\linesinpage\z@ \contpiece}
+\def\pchangecontext{\n@wbar\writ@newclefs\writ@newsigns
+ \z@suspend \eject \global\linesinpage\z@ \contpiece}
+\def\lchangecontext{\n@wbar\writ@newclefs\writ@newsigns
+ \z@suspend \count@lines \contpiece}
+\let\xbeambarre\bar
+\def\xbarre{\xbar}
+\def\zbarre{\zbar}
+\let\temps\empty
+\let\zglue\empty
+\let\zglu\empty
+\let\doublebarre\doublebar
+
+\def\leftrightrepeatsymbol{\C@rep\l@eftrightrepeat}
+\def\leftrepeatsymbol{\C@rep\l@eftrepeat}
+\def\rightrepeatsymbol{\C@rep\r@ightrepeat}
+\def\C@rep#1{\advance\n@skip\beforeruleskip \widthtyp@\@ne \t@rmskip
+ #1\widthtyp@\z@ \t@rmskip\addspace\afterruleskip}
+
+%\let\suspmorceau\stoppiece
+%\let\Suspmorceau\Stoppiece
+\let\computewidths\empty
+\let\computespecifics\empty
+\let\zsuspmorceau\zstoppiece
+\let\signaturegenerale\generalsignature
+\let\pointdorgue\fermataup
+\let\pointdurgue\fermatadown
+\let\zbv\zbreve
+\let\zsb\zmaxima
+\let\ha\hu
+\let\resetfacteurs\resetlayout
+\let\savesignature\empty
+\let\savemeter\empty
+\let\savemeters\empty
+\let\saveclefs\empty
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\let\ITenu\istieu
+\let\ITenl\istied
+%%%%%%%%%%%%%%%%%%
+\let\ilegu\isluru
+\let\ilegl\islurd
+\let\Ilegu\isluru
+\let\Ilegl\islurd
+%\let\tleg\tslur
+%\def\Tleg#1{\roff{\ttie#1}}
+\let\Invertslur\invertslur
+\let\qh\qb
+\let\qhp\qbp
+\let\qhpp\qbpp
+\let\zqh\zqb
+\let\zqhp\zqbp
+\let\zqhpp\zqbpp
+\let\hh\hb
+\let\soupir\qp
+\let\dsoupir\ds
+\let\demisoupir\ds
+\let\qsoupir\qs
+\let\quartsoupir\qs
+\let\hsoupir\hs
+\let\huitsoupir\hs
+\let\seizsoupir\qqs
+\let\Pince\Shake
+\let\pince\shake
+\let\Lpince\Shakel
+\let\Pincesw\Shakesw
+\let\Pincene\Shakene
+\let\Pincenw\Shakenw
+\let\mordant\mordent
+\let\nblines\z@
+\let\wd@skip\wn@width
+\let\musicnfont\musixfont
+
+\let\clefdesolsymbol\trebleclef
+\let\clefdefasymbol\altoclef
+\let\clefdutsymbol\bassclef
+\let\gclefdut\gregorianCclef
+\let\drumclefsymbol\drumclef
+\let\smallclefdesol\smalltrebleclef
+\let\smallclefdefa\smallaltoclef
+\let\smallclefdut\smallbassclef
+
+\let\cmbxmicro\sevenbf
+\let\cmbxtiny\eightbf
+\let\cmbxsmall\tenbf
+\let\cmbx\twelvebf
+\let\cmbxbig\bigfont
+\let\moyen\bigfont
+\let\gros\Bigfont
+\let\enorme\BIGfont
+
+\def\setprimavolta{\setvolta1}
+\def\setsecondavolta{\setvolta2}
+
+\def\advancebottom#1{}
+\newif\ifraggedlines
+\newcount\linesinpage
+\newcount\barsinline@ori
+\let\barsinline\barsinline@ori
+\newcount\maxbarsinline
+\newcount\maxlinesinpage \maxlinesinpage\maxdimen
+\newskip\zglueskip
+\newskip\tempsskip
+
+%%% definitions for holding up compatibility, not supported in musixtex
+
+\let\endinstrument\@ndstaff
+\def\huslur#1#2{\errmessage{No more need for \noexpand\huslur!}}
+\def\hdslur#1#2{\errmessage{No more need for \noexpand\hdslur!}}
+\def\liftslur#1#2{\errmessage{\noexpand\liftslur is not supported in MusiXTeX}}
+
+\def\expause#1{\charnote{#1}{\musicnorfont\char 11\hss}}
+\def\zexpause#1{\zcharnote{#1}{\musicnorfont\char 11\hss}}
+\def\exhpause#1{\charnote{#1}{\musicnorfont\char 10\hss}}
+\def\zexhpause#1{\zcharnote{#1}{\musicnorfont\char 10\hss}}
+
+\def\vdlthick{\vrule depth \hlthick}
+\let\resettens\empty
+\let\resetstem\resetst@m
+\let\setstem\setst@m
+\let\resetlegs\empty
+\let\savepenalties\empty
+\let\currenthyphenpenalty\empty
+\let\setnohyphenpenalty\empty
+\let\sethyphenpenalty\empty
+\let\setnormalhyphen\empty
+\let\glueaftersymbol\empty
+\def\zgluearule{\addspace\afterruleskip}%
+\let\gluearule\zgluearule
+\let\ygluearule\zgluearule
+\let\Writesignatures\writ@signs
+\let\changecontexte\changecontext
+\let\Changecontexte\Changecontext
+\let\Changeclefs\changeclefs
+\let\Changeclef\Changeclefs
+\def\shortstems{\stemlength4}%
+\def\normalstems{\stemlength{4.66}}%
+\normalstems
+
+\def\phpause{\hbox to \noteskip{\vrule width
+ 1.2\qn@width height \internote\hss}}%
+%\def\pause{\hbox{\raise 5\internote\phpause}}%
+%\def\hpause{\hbox{\raise 4\internote\phpause}}%
+\let\zha\zhu
+\def\minternote{-\internote}%
+\def\ffff{{\ppff {f}\kern -0.1ex{f}\kern -0.1ex{f}\kern -0.1ex{f}}}
+\def\testseq{}%
+
+\def\rtenl#1#2{\roff{\islurd{#1}{#2}}}
+\def\rtenu#1#2{\roff{\isluru{#1}{#2}}}
+
+\def\diamg{\ynq}
+\def\diamw{\dnq}
+
+\def\zdiamg{\yznq}
+\def\zdiamw{\dznq}
+
+\def\carrg{\squ}
+\def\zcarrg{\zsqu}
+\def\carpg{\lsqu}
+\def\zcarpg{\zlsqu}
+\def\carqg{\rsqu}
+\def\zcarqg{\zrsqu}
+
+\def\yu{\yqu}
+\def\yup{\yqup}
+\def\yupp{\yqupp}
+\def\yuppp{\yquppp}
+\def\yl{\yql}
+\def\ylp{\yqlp}
+\def\ylpp{\yqlpp}
+\def\ylppp{\yqlppp}
+
+\def\yh{\yqb}
+\def\yb{\yqb}
+
+\def\zy{\yzq}
+\def\zyp{\yzqp}
+\def\zypp{\yzqpp}
+\def\zyppp{\yzqppp}
+
+\def\du{\dqu}
+\def\dup{\dqup}
+\def\dupp{\dqupp}
+\def\duppp{\dquppp}
+
+\def\dl{\dql}
+\def\dlp{\dqlp}
+\def\dlpp{\dqlpp}
+\def\dlppp{\dqlppp}
+
+\def\dh{\dqb}
+\def\db{\dqb}
+
+\def\zd{\dzq}
+\def\zdp{\dzqp}
+\def\zdpp{\dzqpp}
+\def\zdppp{\dzqppp}
+
+\def\xu{\xqu}
+\def\xup{\x@symbol\@qup}
+\def\xupp{\x@symbol\@qupp}
+\def\xl{\xql}
+\def\xlp{\x@symbol\@qlp}
+\def\xlpp{\x@symbol\@qlpp}
+
+\let\xb\xqb
+\let\xh\xqb
+
+\def\zx{\xzq}
+\def\zxp{\x@symbol\@zqp}
+\def\zxpp{\x@symbol\@zqpp}
+
+\def\xcccu{\x@symbol\@cccu}
+\def\xccccu{\x@symbol\@ccccu}
+\def\xcccl{\x@symbol\@cccl}
+\def\xccccl{\x@symbol\@ccccl}
+
+\def\xclp{\x@symbol\@clp}
+\def\xcup{\x@symbol\@cup}
+\def\xclpp{\x@symbol\@clpp}
+\def\xcupp{\x@symbol\@cupp}
+
+\def\oxu{\oxqu}
+\def\oxup{\ox@symbol\@qup}
+\def\oxupp{\ox@symbol\@qupp}
+\def\oxl{\oxql}
+\def\oxlp{\ox@symbol\@qlp}
+\def\oxlpp{\ox@symbol\@qlpp}
+
+\def\oxb\oxqb
+\let\oxh\oxqb
+
+\def\ozx{\oxzq}
+\def\ozxp{\ox@symbol\@zqp}
+\def\ozxpp{\ox@symbol\@zqpp}
+
+\def\oxcccu{\ox@symbol\@cccu}
+\def\oxccccu{\ox@symbol\@ccccu}
+\def\oxcccl{\ox@symbol\@cccl}
+\def\oxccccl{\ox@symbol\@ccccl}
+
+\def\oxclp{\ox@symbol\@clp}
+\def\oxcup{\ox@symbol\@cup}
+\def\oxclpp{\ox@symbol\@clpp}
+\def\oxcupp{\ox@symbol\@cupp}
+
+\def\ku{\kqu}
+\def\kup{\k@symbol\@qup}
+\def\kupp{\k@symbol\@qupp}
+\def\kl{\kql}
+\def\klp{\k@symbol\@qlp}
+\def\klpp{\k@symbol\@qlpp}
+
+\let\kb\kqb
+\let\kh\kqb
+
+\def\zk{\kzq}
+\def\zkp{\k@symbol\@zqp}
+\def\zkpp{\k@symbol\@zqpp}
+
+\def\kcccu{\k@symbol\@cccu}
+\def\kccccu{\k@symbol\@ccccu}
+\def\kcccl{\k@symbol\@cccl}
+\def\kccccl{\k@symbol\@ccccl}
+
+\def\kclp{\k@symbol\@clp}
+\def\kcup{\k@symbol\@cup}
+\def\kclpp{\k@symbol\@clpp}
+\def\kcupp{\k@symbol\@cupp}
+
+%%% text, lyrics
+
+\def\midtwotext{\let\@Ti\hss \let\@Tii\hss \C@midcpt}
+\def\rmidtwotext{\let\@Ti\empty \let\@Tii\hss \C@midcpt}
+\def\zmidtwotext{\zmidstaff}
+\def\lmidtwotext{\let\@Ti\hss \let\@Tii\empty \C@midcpt}
+
+\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
+ \fi}
+
+% for what ?
+
+\def\sforz#1{{\advance\transpose by -2\usf{#1}}}
+\def\pz#1{{\advance\transpose by -2\upz{#1}}}
+\def\ppz{\uppz}
+\def\st#1{{\advance\transpose by -2\ust{#1}}}
+
+% octlines
+
+\def\barfill{\leaders\hbox{ --}\hfill}%
+\def\octnvrule{\vrule width \z@ height 3\p@ depth 3\p@}%
+\def\octvrule{\vrule width \lthick height 3\p@ depth 3\p@}%
+\def\octsup#1#2{\zcharnote{#1}{\hbox to #2\noteskip
+{\llap{\rm 8}\barfill\octnvrule}}}%
+\def\Octsup#1#2{\zcharnote{#1}{\hbox to #2{\rm 8\barfill\octnvrule}}}%
+ %\check
+ %\def\octfin#1#2{\zcharnote{#1}{\hbox to #2\noteskip{\llap{\rm 8}\barfill
+ %--\octvrule}}}%
+ \let\octfin\octfinup
+\def\Octfin#1#2{\zcharnote{#1}{\hbox to #2{\rm 8\barfill
+--\octvrule}}}%
+\def\octline#1{\zcharnote{#1}{\hbox to \line@width{\llap{\rm 8}\barfill
+\octnvrule\hskip 12\Internote}}}%
+\def\Octline#1{\zcharnote{#1}{\hbox to \line@width{\rm 8\barfill
+\octnvrule\hskip 8\Internote}}}%
+ %\check
+
+\def\octlineup{\n@v\@xxiii\C@ol}
+\def\octlinedown{\n@v\@xxv \C@ol}
+\def\C@ol#1{\zcharnote{#1}{\getcurpos\y@eol\advance\y@-\y@v
+ \hbox\@to\y@{\octnumber\mxsps\xleaders\hbox{\char\n@v}\hfill}}}
+
+% now different meaning !!!
+
+\def\trilleC#1{\hbox to #1{\leaders\hbox{\musixchar69}\hfill}}%
+\let\trille\trilleC
+\def\TrilleC#1{\hbox to #1{\it tr\leaders\hbox{\musixchar69}\hfill}}%
+\let\Trille\TrilleC
+
+\def\ntrille#1#2{\zcharnote{#1}{\trille{#2\elemskip}}}%
+\def\nTrille#1#2{\zcharnote{#1}{\Trille{#2\elemskip}}}%
+\def\xtrille#1#2{\zcharnote{#1}{\trille{#2}}}%
+\def\xTrille#1#2{\zcharnote{#1}{\Trille{#2}}}%
+
+% finding which class of fonts is normally used (cmxxx, dmxxx, dcxxx,...)
+
+\def\@wsa#1#2+{#1}
+\def\@wsb#1#2#3+{#2}
+\rm
+\edef\fonthdg{\expandafter\@wsa\fontname\the\font+}
+\edef\fonthdge{\expandafter\@wsb\fontname\the\font+}
+
+% new coda is centered above a barrule
+
+\def\coda{\n@iv85\@Char}
+
+% special wish
+
+\let\octline\octlineup
+
+% old spacings
+
+\def\normal{\elemskip=4\Internote \def\scalenoteskip{1.00}%
+ \def\notes{\vnotes1.0\elemskip}% double croches
+ \def\notesp{\vnotes1.18\elemskip}% double croches
+ \def\Notes{\vnotes1.4\elemskip}% croches
+ \def\Notesp{\vnotes1.66\elemskip}% croches
+ \def\NOtes{\vnotes2.0\elemskip}% croches pointees
+ \def\NOtesp{\vnotes2.36\elemskip}% croches pointees
+ \def\NOTes{\vnotes2.8\elemskip}% noires
+ \def\NOTesp{\vnotes3.32\elemskip}% noires
+ \def\NOTEs{\vnotes4.0\elemskip}%
+ \def\NOTEsp{\vnotes4.72\elemskip}%
+ \def\NOTES{\vnotes5.6\elemskip}}
+
+% \large could cause trouble, if user changes \scalenoteskip on his own,
+% but this is *HIS* problem
+
+\ifx\large\undefined \def\large{\normal\def\scalenoteskip{1.2}}\fi
+
+\def\etroit{\normal
+ \def\Notes{\vnotes1.3\elemskip}%
+ \def\NOtes{\vnotes1.8\elemskip}%
+ \def\NOTes{\vnotes2.6\elemskip}%
+ \def\NOTEs{\vnotes3.6\elemskip}%
+ \def\NOTES{\vnotes5.2\elemskip}}
+
+% correct the shifting of arpeggio to musictex's appearance,
+% a little bit tricky, but works
+
+\let\arpeggio@X\arpeggio
+\def\arpeggio#1#2{\roffset{.2}{\arpeggio@X{#1}{#2}}}
+\def\larpeggio#1#2{\loffset{.6}{\arpeggio@X{#1}{#2}}} % .6=\smallvalue - 0.2
+
+% correct (nearly) the distance between note and accidental
+
+\accshift=-.1\qn@width
+
+% 'translate' old metertoks (works only if they are used as
+% \metertoksi={...}, not for \metertoksi{...}
+
+\def\metertoksi#1#2{\if =#1\else\C@warn \fi
+ \let\Writ@meters\writ@meters \m@ti={#2}}
+\def\metertoksii#1#2{\if =#1\else\C@warn \fi
+ \let\Writ@meters\writ@meters \m@tii={#2}}
+\def\metertoksiii#1#2{\if =#1\else\C@warn \fi
+ \let\Writ@meters\writ@meters \m@tiii={#2}}
+\def\metertoksiv#1#2{\if =#1\else\C@warn \fi
+ \let\Writ@meters\writ@meters \m@tiv={#2}}
+\def\metertoksv#1#2{\if =#1\else\C@warn \fi
+ \let\Writ@meters\writ@meters \m@tv={#2}}
+\def\metertoksvi#1#2{\if =#1\else\C@warn \fi
+ \let\Writ@meters\writ@meters \m@tvi={#2}}
+
+\def\C@warn{\errmessage{You MUST use '=' behind \noexpand\metertoks}\end}
+
+\let\signi\a@si
+\let\signii\a@sii
+\let\signiii\a@siii
+\let\signiv\a@siv
+\let\signv\a@sv
+\let\signvi\a@svi
+
+\let\cleftoksi\a@ci
+\let\cleftoksii\a@cii
+\let\cleftoksiii\a@ciii
+\let\cleftoksiv\a@civ
+\let\cleftoksv\a@cv
+\let\cleftoksvi\a@cvi
+
+% to be used to make heavy bars at staff left
+
+\newskip\nullthick
+\let\lowersonginstrum\maxdimen
+\let\uppersonginstrum\z@
+\newdimen\Interportee % distance between staffs of the same instrument (excl)
+
+\def\xgetn@i#1\relax{\n@viii\z@ \n@i\maxdimen % par defaut
+ \edef\t@ruc{\f@tok #1\relax\af@tok}%
+ \edef\s@uite{\s@tok #1\empty\af@tok}%
+%% pas lettre
+ \ifcat a\t@ruc \n@i\expandafter`\t@ruc\relax
+%% ramener au E (position zero en clef de sol, ut@ref=0)
+ \ifnum\n@i>96\advance\n@i-101%
+ \else\advance\n@i-\@lxxxiii % ramener au S= E + 14
+ \fi
+ \advance\n@i\ut@ref \advance\n@i\ut@ref \advance\n@i\transpose
+ \edef\ss@uite{\noexpand\n@fon{\s@uite}}%
+%% cas active character dont chiffre
+ \else
+ \let\ss@uite\empty
+ \let\alt@suite\empty
+ \ifcat 1\t@ruc
+ \if =\t@ruc \let\@TI\Xna \C@GET \fi
+ \if *\t@ruc \sk \C@Get \fi
+ \if .\t@ruc \let\@TI\pt \C@GET \fi
+ \if >\t@ruc \let\@TI\Xdsh \C@GET \fi
+ \if <\t@ruc \let\@TI\Xdfl \C@GET \fi
+ \if !\t@ruc \transpose\normaltranspose \C@Get \fi
+ \if '\t@ruc \advance\transpose\s@v@n \C@Get \fi
+ \if `\t@ruc \advance\transpose-\s@v@n \C@Get \fi
+ \ifnum\n@viii<\maxdimen \n@i#1\fi
+ \else
+ \if ^\t@ruc \let\@TI\Xsh \C@GET \fi
+ \if _\t@ruc \let\@TI\Xfl \C@GET \fi
+ \fi\alt@suite
+ \fi}
+
+% MusicTeX's settings
+
+\afterruleskip=10pt % plus glue
+\beforeruleskip=2pt % plus glue
+\nostemcut
+
+\let\nbinstruments\maxinstruments
+\normalnotesize
+\normal % to get \notes correctly defined
+\resetlayout
+\let\nbinstruments\@ne
+
+\def\breath{\errmessage{\noexpand\breath\space not implemented in MusiXTeX,
+ use \noexpand\zbreath\space or \noexpand\cbreath!}}
+
+\endcatcodesmusic
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixcrd.tex b/macros/musixtex/tex/musixcrd.tex
new file mode 100644
index 0000000000..2701d104ee
--- /dev/null
+++ b/macros/musixtex/tex/musixcrd.tex
@@ -0,0 +1,272 @@
+%%
+%% This is file `musixcrd.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% musixcrd.dtx
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from musixcrd.tex.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file musixcrd.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% musixcrd - typsetting chord symbols with %%
+%% musixtex %%
+%% main source file contains code, doc, and examples %%
+%% $Id: musixcrd.dtx,v 1.7 2004/11/02 13:13:41 hennig Exp $ %%
+%% copyright 2004 , Robert Hennig %%
+%% this code is licensed in terms of the %%
+%% GNU Public License %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifx\makeatletter\undefined\def\makeatletter{\catcode`\@=11\relax}\fi
+\ifx\makeatother\undefined\def\makeatother{\catcode`\@=12\relax}\fi
+
+\makeatletter% ^^A allows to use @ as ordinary letter
+\def\crddefaultheight{10}
+\def\crdtranspose{0}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\crd@append#1\to#2{%
+ \toks0=\expandafter{#1}\toks2=\expandafter{#2}%
+ \edef#2{\the\toks2 \the\toks0}}
+\def\crd@prepend#1\by#2{%
+ \toks0=\expandafter{#1}\toks2=\expandafter{#2}%
+ \edef#1{\the\toks2 \the\toks0}}
+\def\crd@movetoken#1\to#2{%
+ \ifx#1\empty\else\expandafter\crd@moveoff#1\crd@moveoff#1#2\fi}%
+\def\crd@moveoff#1#2\crd@moveoff#3#4{\def#3{#2}\crd@prepend#4\by#1}
+\newif\ifcrd@parsematched% true if parse matched
+\newcount\crd@parsedepth% internal register
+
+\def\crd@parse#1\for#2{% parse tokens #1 for occurence of items of table #2
+ \crd@parsedepth=1 % default if not defined
+ \expandafter\ifx\csname#2depth\endcsname\relax\else%
+ \crd@parsedepth=\csname#2depth\endcsname%
+ \fi%
+ \def\stack{}%\def\crd@parseresult{}
+ \crd@parsematchedfalse% initialisation
+ \crd@parser#1\for#2% call the recursive part
+}
+\def\crd@parser#1\for#2{% recursive part of parser
+ \ifx#1\empty\else% is list filled ?
+ \ifnum\crd@parsedepth>0 % and do we have to read more chars into stack
+ \advance\crd@parsedepth by-1 %
+ \crd@movetoken#1\to\stack%
+ \crd@parser#1\for#2% recursive call
+ \ifcrd@parsematched\else% if still not matched
+ \expandafter\ifx\csname#2\stack\endcsname\relax% does item match
+ \crd@movetoken\stack\to#1% no match, put char back to source
+ \else% match
+ \csname#2\stack\endcsname%
+ \crd@parsematchedtrue% signal success
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+}
+\newcount\crd@vshift%
+\newcount\crd@hshift%
+\def\crd@number{crd@number}%
+\def\crd@numberdepth{2}%
+\expandafter\def\csname\crd@number0\endcsname{\crd@numberval=0 }%
+\expandafter\def\csname\crd@number1\endcsname{\crd@numberval=1 }%
+\expandafter\def\csname\crd@number2\endcsname{\crd@numberval=2 }%
+\expandafter\def\csname\crd@number3\endcsname{\crd@numberval=3 }%
+\expandafter\def\csname\crd@number4\endcsname{\crd@numberval=4 }%
+\expandafter\def\csname\crd@number5\endcsname{\crd@numberval=5 }%
+\expandafter\def\csname\crd@number6\endcsname{\crd@numberval=6 }%
+\expandafter\def\csname\crd@number7\endcsname{\crd@numberval=7 }%
+\expandafter\def\csname\crd@number8\endcsname{\crd@numberval=8 }%
+\expandafter\def\csname\crd@number9\endcsname{\crd@numberval=9 }%
+\expandafter\def\csname\crd@number1-\endcsname{\crd@numberval=-1 }%
+\expandafter\def\csname\crd@number2-\endcsname{\crd@numberval=-2 }%
+\expandafter\def\csname\crd@number3-\endcsname{\crd@numberval=-3 }%
+\expandafter\def\csname\crd@number4-\endcsname{\crd@numberval=-4 }%
+\expandafter\def\csname\crd@number5-\endcsname{\crd@numberval=-5 }%
+\expandafter\def\csname\crd@number6-\endcsname{\crd@numberval=-6 }%
+\expandafter\def\csname\crd@number7-\endcsname{\crd@numberval=-7 }%
+\expandafter\def\csname\crd@number8-\endcsname{\crd@numberval=-8 }%
+\expandafter\def\csname\crd@number9-\endcsname{\crd@numberval=-9 }%
+\newcount\crd@quint% register used to represent notes in the circle of
+\def\crd@quintval{crd@quintval}%
+\def\crd@quintvalA{\crd@quint=3 }% A
+\def\crd@quintvalB{\crd@quint=5 }% B
+\def\crd@quintvalC{\crd@quint=0 }% C
+\def\crd@quintvalD{\crd@quint=2 }% D
+\def\crd@quintvalE{\crd@quint=4 }% E
+\def\crd@quintvalF{\crd@quint=-1 }% F
+\def\crd@quintvalG{\crd@quint=1 }% G
+\def\crd@quintmod{crd@quintmod}
+\def\crd@quintmoddepth{2}
+\def\crd@quintmods{\advance\crd@quint by7 }% sharp
+\def\crd@quintmodf{\advance\crd@quint by-7 }% flat
+\def\crd@quintmodsd{\advance\crd@quint by14 }% double sharp
+\def\crd@quintmodfd{\advance\crd@quint by-14 }% double flat
+\def\crd@note{crd@note}
+\expandafter\def\csname\crd@note3\endcsname{A}
+\expandafter\def\csname\crd@note5\endcsname{B}
+\expandafter\def\csname\crd@note0\endcsname{C}
+\expandafter\def\csname\crd@note2\endcsname{D}
+\expandafter\def\csname\crd@note4\endcsname{E}
+\expandafter\def\csname\crd@note-1\endcsname{F}
+\expandafter\def\csname\crd@note1\endcsname{G}
+\def\crd@notelow{-1} % lowest quint without accidental
+\def\crd@notehigh{5} % highest quint without accidental
+\def\crd@sharp{\sharp}
+\def\crd@flat{\flat}
+\def\crd@doublesharp{\sharp\sharp}
+\def\crd@doubleflat{\flat\flat}
+\def\crd@parsenote#1#2{% parse input results: #1
+ \def#1{}\def#2{}%
+ \crd@parse\crd@input\for\crd@quintval%
+ \ifcrd@parsematched% we got an valid note
+ \crd@parse\crd@input\for\crd@quintmod%
+ \advance\crd@quint by\crdtranspose \relax% transposition, space is needed!
+ \crd@enharmonic%
+ \ifnum\crd@quint>\crd@notehigh % sharps ?
+ \advance\crd@quint by-7 %
+ \ifnum\crd@quint>\crd@notehigh % double sharp ?
+ \advance\crd@quint by-7 %
+ \ifnum\crd@quint>\crd@notehigh % too much sharps !
+ \relax ERROR:too much sharps%
+ \else\edef#2{\crd@doublesharp}\fi%
+ \else\edef#2{\crd@sharp}\fi%
+ \fi%
+ \ifnum\crd@quint<\crd@notelow % flats ?
+ \advance\crd@quint by7 %
+ \ifnum\crd@quint<\crd@notelow % double flat ?
+ \advance\crd@quint by7 %
+ \ifnum\crd@quint<\crd@notelow % too much flats !
+ \relax ERROR:too much flats%
+ \else\edef#2{\crd@doubleflat}\fi%
+ \else\edef#2{\crd@flat}\fi%
+ \fi%
+ \expandafter\ifx\csname\crd@note\number\crd@quint\endcsname\relax%
+ ERROR:notename for (\number\crd@quint) is not defined.
+ \fi%
+ \edef#1{\csname\crd@note\number\crd@quint\endcsname}% set note
+ \fi%
+}
+\def\crd@enharmonic{}%
+\def\crd@qualinit{%
+ \def\crd@lo{}% lower extensions
+ \def\crd@up{}% upper extensioins
+ \def\crd@alt{}% alterations
+}
+\def\crd@qual{crd@qual}%
+\def\crd@qualdepth{2}
+\def\crd@qualm{\crd@append{\crd@smalltype m}\to\crd@lo}% minor
+\def\crd@qualM{\crd@append{\crd@capitaltype M}\to\crd@lo}% major7
+\expandafter\def\csname\crd@qual5+\endcsname% aug. 5
+{\crd@append{+}\to\crd@lo}
+\expandafter\def\csname\crd@qual6\endcsname% 6
+{\crd@append{\crd@numbertype6}\to\crd@up}
+\expandafter\def\csname\crd@qual7\endcsname% dominant 7
+{\crd@append{\crd@numbertype7}\to\crd@up}
+\def\crd@quald{\crd@append{\crd@dim}\to\crd@up}% diminished
+\def\crd@qualh{\crd@append{\crd@hdim}\to\crd@up}% half diminished
+\expandafter\def\csname\crd@qual9-\endcsname% -9
+{\crd@append{\crd@numbertype\crd@numberflat9}\to\crd@alt}
+\expandafter\def\csname\crd@qual9+\endcsname% +9
+{\crd@append{\crd@numbertype\crd@numbersharp9}\to\crd@alt}
+\def\crd@skipcrdnote{crd@skipcrdnote}
+\expandafter\def\csname\crd@skipcrdnote/\endcsname{}
+\def\crd@parsecrd{%
+ \crd@vshift=0 %
+ \let\crd@numberval=\crd@vshift%
+ \crd@parse\crd@input\for\crd@number%
+ \crd@hshift=0 %
+ \let\crd@numberval=\crd@hshift%
+ \crd@parse\crd@input\for\crd@number%
+ \def\crd@crdnote{}% chord note
+ \def\crd@crdacc{}% chord note accidental
+ \def\crd@bassnote{}% bass note
+ \def\crd@bassacc{}% bass note accidental
+ \crd@qualinit% initialize qualifiers
+ \let\crd@flat=\crd@noteflat%
+ \let\crd@doubleflat=\crd@notedoubleflat%
+ \let\crd@sharp=\crd@notesharp%
+ \let\crd@doublesharp=\crd@notedoublesharp%
+ \crd@parsenote\crd@crdnote\crd@crdacc% read chord note
+ \loop\crd@parse\crd@input\for\crd@qual% read qualifiers
+ \ifcrd@parsematched\repeat%
+ \crd@parse\crd@input\for\crd@skipcrdnote% skip eventually
+ \let\crd@flat=\crd@bassflat%
+ \let\crd@doubleflat=\crd@bassdoubleflat%
+ \let\crd@sharp=\crd@basssharp%
+ \let\crd@doublesharp=\crd@bassdoublesharp%
+ \crd@parsenote\crd@bassnote\crd@bassacc% read bass note
+ \crd@formatcrd\hfil% call rendering
+}
+\def\crd@crddelim{crd@crddelim}%
+\expandafter\def\csname\crd@crddelim,\endcsname{}%
+\def\crd@parsecrds{%
+ \crd@parsecrd%
+ \crd@parse\crd@input\for\crd@crddelim%
+ \ifcrd@parsematched\crd@parsecrds\fi%
+}
+\def\c#1 {\def\crd@input{#1}\crd@output\crd@parsecrds}
+\def\crd@fontstylea{%
+ \font\crd@eightrm=cmr8
+ \font\crd@eightit=cmmi8
+ \font\crd@seventeenrm=cmr17
+ \font\crd@fourteenrm=cmr14
+ \font\crd@twelverm=cmr12
+ \font\crd@ninerm=cmr9
+ \font\crd@smallninerm=cmr9 scaled 900
+ \font\crd@bigninerm=cmr9 scaled 1100
+ \let\crd@notetype=\crd@seventeenrm
+ \def\crd@noteflat{\raise0.6ex\hbox{\kern-0.085em\musictwenty2}}
+ \def\crd@notedoubleflat{\raise0.6ex\hbox{\kern-0.085em\musictwenty3}}
+ \def\crd@notesharp{\raise0.8ex\hbox{\musictwenty4}}
+ \def\crd@notedoublesharp{\raise0.8ex\hbox{\musictwenty5}}
+ \let\crd@basstype=\crd@fourteenrm
+ \def\crd@bassflat{\raise.5ex\hbox{\musicsixteen2}}
+ \def\crd@bassdoubleflat{\raise0.6ex\hbox{\kern-0.085em\musicsixteen3}}
+ \def\crd@basssharp{\raise1ex\hbox{\musicsixteen4}}
+ \def\crd@bassdoublesharp{\raise0.8ex\hbox{\musicsixteen5}}
+ \let\crd@numbertype=\crd@ninerm
+ \def\crd@numberflat{\raise.5ex\hbox{\musiceleven2}}
+ \def\crd@numbersharp{\raise1ex\hbox{\musiceleven4}}
+ \def\crd@numberminus{\crd@ninerm-}
+ \def\crd@numberplus{\crd@ninerm+}
+ \let\crd@capitaltype=\crd@smallninerm % capitals
+ \let\crd@smalltype=\crd@bigninerm % small
+ \def\crd@hdim{\crd@eightit$\circ$\kern-4.4pt\raise.9pt\hbox{\crd@eightrm/}}
+ \def\crd@dim{\crd@eightit$\circ$}
+}
+\def\crd@formatcrda{%
+ \hbox{\kern\crd@hshift\elemskip\raise\crd@vshift\internote\hbox{%
+ {\crd@notetype\crd@crdnote\crd@crdacc}%
+ \vbox{%
+ \hbox{%
+ \crd@up%
+ \ifx\crd@alt\empty\else\crd@numbertype(\crd@alt\crd@numbertype)\fi%
+ }%
+ \nointerlineskip\vskip1pt%
+ \hbox{\vphantom{\crd@capitaltype M}\crd@lo}}%
+ \ifx\crd@bassnote\empty\else%
+ {\crd@basstype/%
+ \lower0.5ex\hbox{\kern-0.17em \crd@bassnote\crd@bassacc}}%
+ \fi%\
+ }}
+}
+\let\crd@formatcrd=\crd@formatcrda
+\crd@fontstylea
+\def\crd@musixOutput#1{\hbox{\zchar{\crddefaultheight}{\hbox to\elemskip{#1\hss}}}}
+\let\crd@output=\crd@musixOutput
+\makeatother
+\endinput
+%%
+%% End of file `musixcrd.tex'.
diff --git a/macros/musixtex/tex/musixdat.tex b/macros/musixtex/tex/musixdat.tex
new file mode 100644
index 0000000000..16541a6e5c
--- /dev/null
+++ b/macros/musixtex/tex/musixdat.tex
@@ -0,0 +1,59 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+\immediate\write16{MusiXDATes 0.36\space<1 March 1995>}%
+
+\ifx\undefined\dategerman \else \endinput \fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+%% This is 'stolen' from GERMAN.TEX or GERMAN.STY, Vers. 2.4a, 12 Apr 1991
+
+% Dates
+% -----
+
+\def\month@german{\ifcase\month \or
+ Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
+ Juli\or August\or September\or Oktober\or November\or Dezember\fi}
+\def\dategerman{\def\today{\number\day.~\month@german
+ \space\number\year}}
+\def\dateaustrian{\def\today{\number\day.~\ifnum 1=\month
+ J\"anner\else \month@german\fi \space\number\year}}
+\def\month@english{\ifcase\month \or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi}
+\def\dateUSenglish{\def\today{\month@english
+ \space\number\day, \number\year}}
+\def\dateenglish{\def\today{\number\day \ifcase\day \or
+ st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or % 1..10
+ th\or th\or th\or th\or th\or th\or th\or th\or th\or th\or % 11..20
+ st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or % 21..30
+ st\fi
+ ~\month@english \space\number\year}}
+\def\datefrench{\def\today{\number\day \ifnum1=\day \/$^{\rm er}$\fi
+ \space\ifcase\month \or
+ janvier\or f\'evrier\or mars\or avril\or mai\or juin\or
+ juillet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi
+ \space\number\year}}
+
+\def\aujourdhui{\datefrench\today}
+
+\dateUSenglish% or whatever you prefer
+
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixdbr.tex b/macros/musixtex/tex/musixdbr.tex
new file mode 100644
index 0000000000..2ad82ca662
--- /dev/null
+++ b/macros/musixtex/tex/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 <MMolekwa@rrs.co.za>
+
+\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/macros/musixtex/tex/musixdia.tex b/macros/musixtex/tex/musixdia.tex
new file mode 100644
index 0000000000..05839eea01
--- /dev/null
+++ b/macros/musixtex/tex/musixdia.tex
@@ -0,0 +1,110 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+
+\immediate\write16{MusiXDIAmond T.40\space<12 September 1995>}%
+
+\ifx\undefined\dqu \else \endinput \fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+%%% notes with a unfilled diamond head, for gregorian and flagolet notes ...
+
+\def\d@symbol{\def\q@u{\musixfont\&}}
+
+\def\dnq{\d@symbol\@nq}
+\def\dznq{\advancefalse\dnq}
+
+\def\dqu{\d@symbol\@qu}
+\def\dqup{\d@symbol\@qup}
+\def\dqupp{\d@symbol\@qupp}
+%\def\dquppp{\d@symbol\@quppp}
+
+\def\dql{\d@symbol\@ql}
+\def\dqlp{\d@symbol\@qlp}
+\def\dqlpp{\d@symbol\@qlpp}
+%\def\dqlppp{\d@symbol\@qlppp}
+
+\def\dqb{\d@symbol\@qb}
+
+\def\dzq{\d@symbol\@zq}
+\def\dzqp{\d@symbol\@zqp}
+\def\dzqpp{\d@symbol\@zqpp}
+%\def\dzqppp{\d@symbol\@zqppp}
+
+\def\dcu{\d@symbol\@cu}
+\def\dccu{\d@symbol\@ccu}
+\def\dcccu{\d@symbol\@cccu}
+\def\dccccu{\d@symbol\@ccccu}
+\def\dcl{\d@symbol\@cl}
+\def\dccl{\d@symbol\@ccl}
+\def\dcccl{\d@symbol\@cccl}
+\def\dccccl{\d@symbol\@ccccl}
+
+\def\dcup{\d@symbol\@cup}
+\def\dcupp{\d@symbol\@cupp}
+%\def\dcuppp{\d@symbol\@cuppp}
+
+\def\dclp{\d@symbol\@clp}
+\def\dclpp{\d@symbol\@clpp}
+%\def\dclppp{\d@symbol\@clppp}
+
+%%% notes with a filled diamond head, for gregorian notes ...
+
+\def\y@symbol{\def\q@u{\musixfont\%}}
+
+\def\ynq{\y@symbol\@nq}
+\def\yznq{\advancefalse\ynq}
+\def\zynq{\advancefalse\ynq}
+
+\def\yqu{\y@symbol\@qu}
+\def\yqup{\y@symbol\@qup}
+\def\yqupp{\y@symbol\@qupp}
+%\def\yquppp{\y@symbol\@quppp}
+
+\def\yql{\y@symbol\@ql}
+\def\yqlp{\y@symbol\@qlp}
+\def\yqlpp{\y@symbol\@qlpp}
+%\def\yqlppp{\y@symbol\@qlppp}
+
+\def\yqb{\y@symbol\@qb}
+
+\def\yzq{\y@symbol\@zq}
+\def\yzqp{\y@symbol\@zqp}
+\def\yzqpp{\y@symbol\@zqpp}
+%\def\yzqppp{\y@symbol\@zqppp}
+
+\def\ycu{\y@symbol\@cu}
+\def\yccu{\y@symbol\@ccu}
+\def\ycccu{\y@symbol\@cccu}
+\def\yccccu{\y@symbol\@ccccu}
+\def\ycl{\y@symbol\@cl}
+\def\yccl{\y@symbol\@ccl}
+\def\ycccl{\y@symbol\@cccl}
+\def\yccccl{\y@symbol\@ccccl}
+
+\def\ycup{\y@symbol\@cup}
+\def\ycupp{\y@symbol\@cupp}
+%\def\ycuppp{\y@symbol\@cuppp}
+
+\def\yclp{\y@symbol\@clp}
+\def\yclpp{\y@symbol\@clpp}
+%\def\yclppp{\y@symbol\@clppp}
+
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixec.tex b/macros/musixtex/tex/musixec.tex
new file mode 100644
index 0000000000..e213f30fb1
--- /dev/null
+++ b/macros/musixtex/tex/musixec.tex
@@ -0,0 +1,169 @@
+% musixec.tex : EC font definitions for MusiXTeX
+%
+% usage:
+%
+% \input musixtex
+% \input musixec
+% ...
+%
+% MusiXec.tex 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, or (at your option)
+% any later version.
+%
+% MusiXppl.tex 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+% Copyright 2015-2017 Bob Tennent rdt@cs.queensu.ca
+%
+\ifx\undefined\startpiece\errmessage{Input musixtex.tex before musixec.tex}\fi
+\immediate\write16{MusiXec\space<2017/02/10>}
+%
+
+\longECfontnamestrue
+\def\fontid{ec}
+
+% 7pt
+\font\sevenrm=ecrm0700
+\font\sevenbf=ecbx0700
+\font\sevenit=ecti0800 at 7pt
+\font\sevenbi=ecbi0700
+\font\sevensc=ecsc0700
+%
+% 8pt
+\font\eightrm=ecrm0800
+\font\eightbf=ecbx0800
+\font\eightit=ecti0800
+\font\eightbi=ecbi0800
+\font\eightsc=ecsc0800
+%
+% 9pt
+\font\ninerm=ecrm0900
+\font\ninebf=ecbx0900
+\font\nineit=ecti0900
+\font\ninebi=ecbi0900
+\font\ninesc=ecsc0900
+%
+% 10pt
+\font\tenrm=ecrm1000
+\font\tenbf=ecbx1000
+\font\tenit=ecti1000
+\font\tenbi=ecbi1000
+\font\tensc=ecsc1000
+%
+% 11pt
+\font\elevenrm=ecrm1095
+\font\elevenbf=ecbx1095
+\font\elevenit=ecti1095
+\font\elevenbi=ecbi1095
+\font\elevensc=ecsc1095
+%
+% 12pt
+\font\twelverm=ecrm1200
+\font\twelvebf=ecbx1200
+\font\twelveit=ecti1200
+\font\twelvebi=ecbi1200
+\font\twelvesc=ecsc1200
+%
+% 14pt
+\font\frtrm=ecrm1440
+\font\frtbf=ecbx1440
+\font\frtit=ecti1440
+\font\frtbi=ecbi1440
+\font\frtsc=ecsc1440
+%
+% 17pt
+\font\svtrm=ecrm1728
+\font\svtbf=ecbx1728
+\font\svtit=ecti1728
+\font\svtbi=ecbi1728
+\font\svtsc=ecsc1728
+%
+% 20pt
+\font\twtyrm=ecrm2074
+\font\twtybf=ecbx2074
+\font\twtyit=ecti2074
+\font\twtybi=ecbi2074
+\font\twtysc=ecsc2074
+%
+% 25pt
+\font\twfvrm=ecrm2488
+\font\twfvbf=ecbx2488
+\font\twfvit=ecti2488
+\font\twfvbi=ecbi2488
+\font\twfvsc=ecsc2488
+%
+%
+%
+\font\ppfftwelve=ecbi0800
+\font\ppffsixteen=ecbi1000
+\font\ppfftwenty=ecbi1200
+\font\ppfftwentyfour=ecbi1440
+\font\ppfftwentynine=ecbi1728
+%
+%
+% tt fonts needed by musixsty
+%
+\font\eighttt=ectt0800
+\font\ninett=ectt0900
+\font\tentt=ectt1000
+\font\twelvett=ectt1200
+\font\frttt=ectt1440
+\font\svttt=ectt1728
+\font\twtytt=ectt2074
+\font\twfvtt=ectt2488
+%
+% sl fonts needed by musixsty
+%
+\font\eightsl=ecsl0800
+\font\ninesl=ecsl0900
+\font\tensl=ecsl1000
+\font\twelvesl=ecsl1200
+\font\frtsl=ecsl1440
+\font\svtsl=ecsl1728
+\font\twtysl=ecsl2074
+\font\twfvsl=ecsl2488
+
+%
+% Redefine accented characters for 8-bit font
+%
+
+\ifx\documentclass\undefined
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+\def\ProvidesFile#1[#2]{}
+\def\DeclareFontEncoding#1#2#3{}
+\def\DeclareTextAccent#1#2#3{%
+\def#1##1{%
+\expandafter\ifx\csname T1\string#1-\string##1\endcsname\relax
+{\accent#1 ##1}%
+\else
+\csname T1\string#1-\string##1\expandafter\endcsname
+\fi}}
+\def\DeclareTextCommand#1#2{\xdtcmd}%not today
+\def\xdtcmd#1#{\xxdtcmd}%not today
+\def\xxdtcmd#1{}%not today
+\def\DeclareTextCompositeCommand#1#2#3#4{}%not today
+\def\DeclareTextSymbol#1#2#3{%
+\def#1{\char#3\relax}}
+\def\DeclareTextComposite#1#2#3#4{%
+\expandafter\def\csname T1\string#1-\string#3\endcsname{\char#4\relax}}
+
+\input t1enc.def
+
+% \c requires special treatment
+\def\c#1{\leavevmode\ifx c#1\char231 \else\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent11 #1%
+ \else{\ooalign{\unhbox\z@\crcr
+ \hidewidth\char11\hidewidth}}\fi\fi}
+\catcode`\@=\catcodeat
+\fi
+
+
+\normtype
+\endinput
diff --git a/macros/musixtex/tex/musixeng.tex b/macros/musixtex/tex/musixeng.tex
new file mode 100644
index 0000000000..e9e3d0d8b9
--- /dev/null
+++ b/macros/musixtex/tex/musixeng.tex
@@ -0,0 +1,42 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+
+% suggested by Ross Mitchell
+
+\immediate\write16{MusiX ENGlish rests T.404\space<08 May 2018>}%
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+\let\Qwr\PAUSe
+\let\Dwr\PAuse
+\let\liftwr\liftpause
+\let\wrp\pausep
+\let\wr@\pause
+\let\lifthr\lifthpause
+\let\hrp\hpausep
+\let\hr\hpause
+\let\qr\qp
+\let\er\ds % \ds\oup no longer available
+\let\eer\qs
+\let\eeer\hs
+\let\eeeer\qqs
+\def\wr{\pause}
+
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixesf.tex b/macros/musixtex/tex/musixesf.tex
new file mode 100644
index 0000000000..0fa6fd0829
--- /dev/null
+++ b/macros/musixtex/tex/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 <CQX05646 at nifty dot com>
+%% 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/ <efont\atmark ring.gr.jp>
+%% 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/macros/musixtex/tex/musixevo.tex b/macros/musixtex/tex/musixevo.tex
new file mode 100644
index 0000000000..dd6c1e5ffc
--- /dev/null
+++ b/macros/musixtex/tex/musixevo.tex
@@ -0,0 +1,19 @@
+\immediate\write16{MusiXEVenOdd T.53\space<1 April 1996>}%
+
+% enables
+
+\makeatletter
+\def\outmorceau{\shipout\hbox{\null\ifodd\pageno\kern 2.5mm
+ \else\kern -2.5mm
+ \fi
+ \vbox{\vbox to \vsize{\vss\pagecontents\vss}\line{%
+\ifodd\pageno\sl \titremorceau\ (\s@hortauthor)
+\ifcopyright\rm$\copyright$\fi\hss \number\pageno
+\else\rm\number\pageno\hss\sl \titremorceau\ (\s@hortauthor)
+\ifcopyright\rm$\copyright$\fi\fi}}}%
+ \global\advance\count0 by 1\relax
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi}%
+
+\output{\outmorceau}
+\makeatother
+\endinput
diff --git a/macros/musixtex/tex/musixext.tex b/macros/musixtex/tex/musixext.tex
new file mode 100644
index 0000000000..d6ac3b9c4b
--- /dev/null
+++ b/macros/musixtex/tex/musixext.tex
@@ -0,0 +1,26 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+%
+% musixext.tex
+%
+\immediate\write16{MusiXext T.118 <2015-07-25>}%
+%
+% (nothing to do. - T.118 or later provides \slide and \raggedstoppiece
+%
+\endinput
diff --git a/macros/musixtex/tex/musixfll.tex b/macros/musixtex/tex/musixfll.tex
new file mode 100644
index 0000000000..7cb9e44fae
--- /dev/null
+++ b/macros/musixtex/tex/musixfll.tex
@@ -0,0 +1,44 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+
+\ifx\undefined\longledgerlines \else \endinput \fi
+
+\immediate\write16{MusiXFormerLedgerLines T.74\space<06 April 1997>}%
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+\let\h@lineick\h@linei
+\def\h@lineidt{%
+ \y@ii\n@v\internote
+ \y@iii\y@ii
+ \advance\y@ii\hlthick
+ \advance\y@iii-\hlthick
+ \y@iv\y@v
+ \advance\y@iv\h@lf\qn@width
+ \kernm.25\qn@width
+ \vrule\@height\y@ii\@depth-\y@iii\@width\y@iv
+ \kernm\y@iv\kern.25\qn@width}
+\def\longledgerlines{\global\let\h@linei\h@lineidt}
+\def\autoledgerlines{\global\let\h@linei\h@lineick}
+\longledgerlines
+
+\catcode`\@=\catcodeat
+
+\endinput
+
diff --git a/macros/musixtex/tex/musixgre.tex b/macros/musixtex/tex/musixgre.tex
new file mode 100644
index 0000000000..a7272fb30c
--- /dev/null
+++ b/macros/musixtex/tex/musixgre.tex
@@ -0,0 +1,351 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+\immediate\write16{MusiXGREgorian T.67\space<3 January 1997>}%
+
+\ifx\undefined\gregorianCclef \else \endinput \fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+\catcodesmusic
+
+\font\xgregeleven=xgreg11
+\font\xgregthirteen=xgreg13
+\font\xgregsixteen=xgreg16
+\font\xgregtwenty=xgreg20
+\font\xgregtwentyfour=xgreg24
+\font\xgregtwentynine=xgreg29
+
+\let\xgregnorfont\xgregtwenty
+
+\def\xgregkeyfont{%
+ \ifdim\internote<\p@seven6\Internote \xgregtinyfont
+ \else
+ \ifdim\internote<.95\Internote \xgregsmallfont
+ \else
+ \ifdim\internote<1.19\Internote \xgregnorfont
+ \else
+ \ifdim\internote<1.43\Internote \xgreglargefont
+ \else
+ \xgregLargefont
+ \fi
+ \fi
+ \fi
+ \fi}
+
+\def\xgregchar{\xgregfont\char}
+\def\xgregkeychar{\xgregkeyfont\char}
+
+
+% \[z]carrg=\[z]squ, \[z]carpg=\[z]lsqu, \[z]carqg=\[z]rsqu
+
+\def\gregorianCclef{\xgregkeychar98}
+\def\gregorianFclef{\xgregkeychar122}
+
+\def\squ#1{\getn@i#1\relax\let\n@fon\squ \def\n@sym{\xgregchar5}\g@diamg}
+\def\r@small@squ#1{\getn@i#1\relax\let\n@fon\r@small@squ
+ \def\n@sym{\xgregchar0\llap{\xgregchar12\xgregchar18}}\g@diamg}
+\def\punctumauctup#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar9}\g@diamg}
+\def\punctumauctdown#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar8}\g@diamg}
+\def\punctumdeminutum#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar4}\g@diamg}
+\def\shavedsqu#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar17}\g@diamg}
+\let\punctum\squ
+\def\diapunc#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar1}\g@diamg}
+\def\diapuncauctdown#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar2}\g@diamg}
+\def\apostropha#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar3}\g@diamg}
+\def\apostrophaaucta#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar11}\g@diamg}
+\def\oriscus#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar10}\g@diamg}
+\def\usqu#1{\getn@i#1\relax\let\n@fon\squ
+ \def\n@sym{\xgregchar13}\g@diamg}
+\def\lsqu#1{\getn@i#1\relax\let\n@fon\lsqu
+ \def\n@sym{\xgregchar6}\g@diamg}
+\def\rsqu#1{\getn@i#1\relax\let\n@fon\rsqu
+ \def\n@sym{\xgregchar7}\g@diamg}
+\let\virga\rsqu
+\def\quilisma#1{\getn@i#1\relax\let\n@fon\quilisma
+ \def\n@sym{\xgregchar125}\g@diamg}
+\def\shavedquilisma#1{\getn@i#1\relax\let\n@fon\shavedquilisma
+ \def\n@sym{\xgregchar126}\g@diamg}
+
+
+
+\def\zsqu{\advancefalse\squ}
+\let\zpunctum\zsqu
+\def\zusqu{\advancefalse\usqu}
+\def\zlsqu{\advancefalse\lsqu}
+\def\zrsqu{\advancefalse\rsqu}
+\let\zvirga\zrsqu
+\def\zoriscus{\advancefalse\oriscus}
+\def\zdiapunc{\advancefalse\diapunc}
+\def\zapostropha{\advancefalse\apostropha}
+\def\zquilisma{\advancefalse\quilisma}
+\def\zshavedquilisma{\advancefalse\shavedquilisma}
+
+\def\g@diamg{\y@v.71\qn@width \let\st@m\resetst@m \writ@note}
+
+\def\groff{\roffset{.71}}
+\def\dgroff{\roffset{1.42}}
+
+\def\getthen@one@two#1#2{\getn@i{#1}\relax\edef\then@one{\the\n@i}%
+ \getn@i{#2}\relax\edef\then@two{\the\n@i}%
+ \n@ii=\then@one\relax
+ \advance\n@i -\n@ii\relax
+ \edef\the@two@minus@one{\the\n@i}%
+ \n@i=-\n@i
+ \edef\the@one@minus@two{\the\n@i}%
+}%
+\def\getthen@one@three#1#2#3{\getthen@one@two{#1}{#2}\relax
+ \getn@i{#3}\relax\edef\then@three{\the\n@i}%
+ \n@ii=\then@two\relax
+ \advance\n@i -\n@ii\relax
+ \edef\the@three@minus@two{\the\n@i}%
+ \n@i=-\n@i
+ \edef\the@two@minus@three{\the\n@i}%
+}%
+
+\def\bivirga#1#2{\zrsqu{#1}\roff{\rsqu{#2}}}
+
+\def\trivirga#1#2#3{\zrsqu{#1}\roff{\zrsqu{#2}}\roffset2{\rsqu{#3}}}
+
+\def\bistropha#1#2{\zsqu{#1}\roff{\squ{#2}}}
+
+\def\tristropha#1#2#3{\zsqu{#1}\roff{\zsqu{#2}}\roffset2{\squ{#3}}}
+
+\def\trigonus#1#2#3{\zdiapunc{#1}\groff{\zdiapunc{#2}}\dgroff{\diapunc{#3}}}
+
+\def\clivis#1#2{\getthen@one@two{#1}{#2}\relax
+\zlsqu{#1}{\xgregchar0}\zcharnote{#2}{\vrule\@depth\z@ \@height \the@one@minus@two\internote}\squ{#2}}
+
+\def\clivisdeminut#1#2{\getthen@one@two{#1}{#2}\relax
+\zlsqu{#1}\zcharnote{#2}{\xgregchar0\vrule\@depth\z@ \@height
+\the@one@minus@two\internote}\r@small@squ{#2}}
+
+\def\clivisauctup#1#2{\getthen@one@two{#1}{#2}\relax
+\zlsqu{#1}{\xgregchar0}\zcharnote{#2}{\vrule\@depth\z@ \@height \the@one@minus@two\internote}\punctumauctup{#2}}
+
+\def\clivisauctdown#1#2{\getthen@one@two{#1}{#2}\relax
+\zlsqu{#1}{\xgregchar0}\zcharnote{#2}{\vrule\@depth\z@ \@height \the@one@minus@two\internote}\punctumauctdown{#2}}
+
+\def\lclivis#1#2{\zsqu{#1}\groff{\lsqu{#2}}}
+
+\def\podatus#1#2{\getthen@one@two{#1}{#2}\relax
+ \zcharnote{#1}{\ifnum\the@two@minus@one<2\relax
+ \xgregchar16%
+ \else
+ \xgregchar15%
+ \fi
+ \vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+\ifnum\the@two@minus@one<2\relax
+ \shavedsqu{#2}%
+ \else
+ \squ{#2}%
+ \fi
+}
+
+\def\podatusdeminut#1#2{\getthen@one@two{#1}{#2}\relax
+ \zcharnote{#1}{\ifnum\the@two@minus@one<2\relax
+ \xgregchar16%
+ \else
+ \xgregchar15%
+ \fi
+ \vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ \r@small@squ{#2}%
+}
+
+\def\lpodatus#1#2{\zusqu{#1}\groff{\rsqu{#2}}}
+
+\def\podatusinitiodebilis#1#2{\getthen@one@two{#1}{#2}\relax
+ \zcharnote{#1}{\xgregchar12\xgregchar18%
+ \vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ {\xgregchar18}\squ{#2}%
+}
+
+\def\podatusauctup#1#2{\getthen@one@two{#1}{#2}\relax
+ \zcharnote{#1}{\xgregchar5\xgregchar0%
+ \vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ {\xgregchar0}\punctumauctup{#2}%
+}
+
+\def\podatusauctdown#1#2{\getthen@one@two{#1}{#2}\relax
+ \zcharnote{#1}{\xgregchar5\xgregchar0%
+ \vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ {\xgregchar0}\punctumauctdown{#2}%
+}
+
+\def\scandicus#1#2#3{\getthen@one@three{#1}{#2}{#3}\relax
+ \advancefalse\podatus{#1}{#2}{\xgregchar0}%
+% \zcharnote{#2}{\vrule\@depth\z@ \@height\the@three@minus@two\internote}%
+ \rsqu{#3}}
+
+\def\scandicusdeminut#1#2#3{\getthen@one@two{#1}{#2}%
+ \zsqu{#1}{\xgregchar0}%
+% \zcharnote{#1}{\vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ \podatusdeminut{#2}{#3}}
+
+\def\scandicusauctdown#1#2#3{\getthen@one@three{#1}{#2}{#3}\relax
+ \zsqu{#1}{\xgregchar0}%
+ \zcharnote{#1}{\vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ \zsqu{#2}{\xgregchar0}%
+ \zcharnote{#2}{\vrule\@depth\z@ \@height\the@three@minus@two\internote}%
+ \punctumauctdown{#3}}
+
+\def\torculus#1#2#3{\getthen@one@three{#1}{#2}{#3}\zsqu{#1}{\xgregchar0}%
+ \zcharnote{#1}{\vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ \zsqu{#2}{\xgregchar0}%
+ \zcharnote{#3}{\vrule\@depth\z@ \@height\the@two@minus@three\internote}%
+ \squ{#3}}
+
+\def\torculusdeminut#1#2#3{\getthen@one@three{#1}{#2}{#3}\zsqu{#1}{\xgregchar0}%
+ \zcharnote{#1}{\vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ \zsqu{#2}%
+ \zcharnote{#3}{\xgregchar0\vrule\@depth\z@ \@height\the@two@minus@three\internote}%
+ \r@small@squ{#3}}
+
+\def\torculusauctdown#1#2#3{\getthen@one@three{#1}{#2}{#3}\zsqu{#1}{\xgregchar0}%
+ \zcharnote{#1}{\vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ \zsqu{#2}{\xgregchar0}%
+ \zcharnote{#3}{\vrule\@depth\z@ \@height\the@two@minus@three\internote}%
+ \punctumauctdown{#3}}
+
+\def\torculusinitiodebilis#1#2#3{\getthen@one@three{#1}{#2}{#3}%
+ \zcharnote{#1}{\xgregchar12\xgregchar18\vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ {\xgregchar18}\zsqu{#2}{\xgregchar0}%
+ \zcharnote{#3}{\vrule\@depth\z@ \@height\the@two@minus@three\internote}%
+ \squ{#3}}
+
+\def\torculusdebilis#1#2#3{\getthen@one@three{#1}{#2}{#3}%
+ \zcharnote{#1}{\xgregchar12\xgregchar18\vrule\@depth\z@ \@height\the@two@minus@one\internote}%
+ {\xgregchar18}\zsqu{#2}%
+ \zcharnote{#3}{\xgregchar0\vrule\@depth\z@ \@height\the@two@minus@three\internote}%
+ \r@small@squ{#3}}
+
+\def\climacus#1#2#3{\zrsqu{#1}\groff{\zdiapunc{#2}{\xgregchar0}\diapunc{#3}}}
+
+\def\climacusresupinus#1#2#3#4{\zrsqu{#1}\groff{\zdiapunc{#2}{\xgregchar0}\zdiapunc{#3}{\xgregchar0}\squ{#4}}}
+
+\def\climacusdeminut#1#2#3{\zrsqu{#1}\groff{\zdiapunc{#2}{\xgregchar0}\punctumdeminutum{#3}}}
+
+\def\climacusauctdown#1#2#3{\zrsqu{#1}\groff{\zdiapunc{#2}{\xgregchar0}\diapuncauctdown{#3}}}
+
+\def\lclimacus#1#2#3{\zlsqu{#1}\groff{\zdiapunc{#2}{\xgregchar0}\diapunc{#3}}}
+
+\def\pesquassus#1#2{\getthen@one@two{#1}{#2}\relax
+ \zoriscus{#1}{\xgregchar0}\zcharnote{#1}{\vrule\@depth\z@ \@height \the@two@minus@one\internote}\rsqu{#2}}
+
+\def\pesquassusauctdown#1#2{\getthen@one@two{#1}{#2}\relax
+ \zoriscus{#1}{\xgregchar0}\zcharnote{#1}{\vrule\@depth\z@ \@height \the@two@minus@one\internote}\punctumauctdown{#2}}
+
+\def\quilismapes#1#2{\getthen@one@two{#1}{#2}\relax
+ \ifnum\the@two@minus@one<2\relax
+ \zshavedquilisma{#1}% \message{ zshavedqui OK}%
+ \else
+ \zquilisma{#1}% \message{ zquilisma OK}%
+ \fi %\message{zqui OK}%
+ \zcharnote{#1}{\xgregchar0\vrule\@depth\z@ \@height \the@two@minus@one\internote}%
+ \ifnum\the@two@minus@one<2\relax
+ \shavedsqu{#2}%
+ \else
+ \squ{#2}%
+ \fi
+}
+\def\quilismapesauctdown#1#2{\getthen@one@two{#1}{#2}\relax
+ \zquilisma{#1}% \message{ zquilisma OK}%
+ \zcharnote{#1}{\xgregchar0\vrule\@depth\z@ \@height \the@two@minus@one\internote}%
+ {\xgregchar0}\punctumauctdown{#2}%
+}
+
+ %\check
+\def\hporrectus#1{\errmessage{\noexpand\hporrectus\space does not exist
+anymore, use \bporrectus with two args}}
+
+\def\porrectus#1#2{\errmessage{\noexpand\porrectus does not exist anymore, use
+ \noexpand\Porrectus}}
+
+\def\porrectusflexus#1#2{\errmessage{\noexpand\porrectusflexus does not exist anymore, use
+ \noexpand\Porrectusflexus}}
+
+ %\check
+\def\bporrectus#1#2{\getthen@one@two{#1}{#2}\relax
+ \ifnum\the@one@minus@two=1\relax
+ \def\n@sym{\xgregchar121}\relax
+ \else\ifnum\the@one@minus@two=2\relax
+ \def\n@sym{\xgregchar120}\relax
+ \else\ifnum\the@one@minus@two=3\relax
+ \def\n@sym{\xgregchar119}\relax
+ \else\ifnum\the@one@minus@two=4\relax
+ \def\n@sym{\xgregchar118}\relax
+ \else\errmessage{Porrectus 2nd arg must be 1st minus 1 to 4}\relax
+ \fi
+ \fi
+ \fi
+ \fi
+ \getn@i#1\relax\let\n@fon\squ \g@diamg
+}
+
+%\check
+
+\def\Porrectusflexus#1#2#3#4{%
+ \advancefalse\bporrectus{#1}{#2}{\xgregchar0\xgregchar0\xgregchar0}%
+ \getthen@one@three{#2}{#3}{#4}%
+ \zcharnote{#2}{\vrule \@height\the@two@minus@one\internote\@depth\z@}%
+ \zsqu{#3}%
+ {\xgregchar0}\zcharnote{#4}{\vrule\@depth\z@ \@height \the@two@minus@three\internote}\squ{#4}}
+
+%\check
+
+\def\Porrectus#1#2#3{\getthen@one@three{#1}{#2}{#3}\relax
+ \advancefalse\bporrectus{#1}{#2}{\xgregchar0\xgregchar0}%
+ \zcharnote{#2}{\xgregchar0\vrule\@height\the@three@minus@two\internote\@depth\z@}%
+ \ifnum\the@three@minus@two<2\relax
+ \shavedsqu{#3}%
+ \else
+ \squ{#3}%
+ \fi
+}
+
+\def\Porrectusdeminut#1#2#3{\getthen@one@three{#1}{#2}{#3}\relax
+ \advancefalse\bporrectus{#1}{#2}{\xgregchar0\xgregchar0}%
+ \zcharnote{#2}{\xgregchar0\vrule\@height\the@three@minus@two\internote\@depth\z@}\r@small@squ{#3}%
+}
+
+\def\Porrectusauctdown#1#2#3{\getthen@one@three{#1}{#2}{#3}\relax
+ \advancefalse\bporrectus{#1}{#2}{\xgregchar0\xgregchar0\xgregchar0}%
+ \zcharnote{#2}{\vrule\@height\the@three@minus@two\internote\@depth\z@}\punctumauctdown{#3}%
+}
+
+\def\salicus#1#2#3{\zsqu{#1}\groff{\pesquassus{#2}{#3}}}
+%\check
+
+\def\salicusflexus#1#2#3#4{\zsqu{#1}{\xgregchar0}\torculus{#2}{#3}{#4}}
+
+\def\salicusauctdown#1#2#3{\zsqu{#1}\groff{\pesquassusauctdown{#2}{#3}}}
+%\check
+
+\let\xgregfont\xgregnorfont
+
+\endcatcodesmusic
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixgui.tex b/macros/musixtex/tex/musixgui.tex
new file mode 100644
index 0000000000..103360b269
--- /dev/null
+++ b/macros/musixtex/tex/musixgui.tex
@@ -0,0 +1,41 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+\immediate\write16{MusiXGUItar 0.36\space<1 March 1995>}%
+
+\ifx\undefined\guitar \else \endinput \fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+\newskip\guitar@dim \guitar@dim=-.6\qn@width\relax
+
+% to raise the chords (steps of internote)
+\def\raiseguitar#1{\edef\r@gu{#1}}
+\let\r@gu\z@
+
+\def\d@c#1{\if x#1\tw@nty \else\if o#1\char19\else\char28\fi\fi}
+\def\guitar#1#2#3#4#5#6#7#8{\zchar\r@gu{\raise\Interligne\lrlap{#1}%
+ \mxsps\lrlap\sixt@@n\lrlap{\d@c#3\d@c#4\d@c#5\d@c#6\d@c#7\d@c#8}%
+ \lower\Internote\lrlap{\eightbf#2\kern\s@v@n\guitar@dim}}}
+\def\gbarre#1{\zchar\r@gu{\n@v#1\advance\n@v\m@ne
+ \raise\n@v\guitar@dim\lrlap{\mxsps\char18}}}
+\def\gdot#1#2{\zchar\r@gu{\n@v#2\advance\n@v\m@ne\kern\si@\guitar@dim
+ \kernm#1\guitar@dim\raise\n@v\guitar@dim\rlap{\mxsps\char17}}}
+
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixhor.tex b/macros/musixtex/tex/musixhor.tex
new file mode 100644
index 0000000000..fbc73393e1
--- /dev/null
+++ b/macros/musixtex/tex/musixhor.tex
@@ -0,0 +1,41 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+
+\ifx\undefined\Tenpoint
+ \input musixsty.tex
+\fi
+
+\immediate\write16{MusiXtextSTYle-horizontal T.98\space<21 October 1999>}%
+
+\vsize=185mm
+\hsize=275mm
+\hoffset=297mm
+\advance\hoffset -\hsize
+\divide\hoffset 2\relax
+\advance\hoffset -2.54cm
+\voffset -3mm
+\tenpoint
+\def\horizontalscore{\relax}
+%%%%%%%%%%%%%%%%%%%%%%%%% local adjust to be tuned %%%%%%%%%%%%%%%%%%%%%%%%%%
+\advance\voffset -5mm
+\hoffset=-1.54cm
+%%%%%%%%%%%%%%%%%%%%%%%%% local adjust to be tuned %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput
+
diff --git a/macros/musixtex/tex/musixhou.tex b/macros/musixtex/tex/musixhou.tex
new file mode 100644
index 0000000000..d0eb65d23b
--- /dev/null
+++ b/macros/musixtex/tex/musixhou.tex
@@ -0,0 +1,58 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+
+\immediate\write16{MusiXHOUsestyles T.64\space<8 October 1996>}%
+
+\ifx\undefined\Metron \else \endinput \fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+% match the mid of lower chars (only for \tenrm)
+
+\def\writ@names{\n@loop
+ \setbox\toks@box\llap{\vbox{\hbox\@to\parindent{%
+ \hss\csname instrument\romannumeral\noinstrum@nt\endcsname
+ \hss}\kern\h@lf ex}~~}%
+ \altportee\altitude \Comp@High\advance\y@v-\ht\toks@box
+ \advance\altportee\h@lf\y@v \writ@box \repeat}
+
+% smaller metron
+
+\def\Metron#1{{\tinynotesize\stemlength\thr@@\eightrm (\zqu 0~~~= #1)}}
+
+%%% dynamics
+\iflongDCfontnames
+ \font\frtnbxit=\fontid bi1440
+\else\iflongECfontnames
+ \font\frtnbxit=\fontid bi1440
+ \else
+ \font\frtnbxit=\fontid bxti10 scaled \magstep2
+ \fi
+\fi
+\def\f{\frtnbxit f}
+\def\ff{\f\f@kern f}
+\def\fff{\ff\f@kern f}
+\def\mf{\twelveit m\p@kern\f@kern\f}
+\def\mp@{\twelveit m\p@kern\p}
+\def\p{\frtnbxit p}
+\def\pp{\p\p@kern p}
+\def\ppp{\pp\p@kern p}
+
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixhv.tex b/macros/musixtex/tex/musixhv.tex
new file mode 100644
index 0000000000..9c24763330
--- /dev/null
+++ b/macros/musixtex/tex/musixhv.tex
@@ -0,0 +1,180 @@
+% musixhv.tex : Helvetica font definitions for MusiXTeX
+%
+% usage:
+%
+% \input musixtex
+% \input musixhv
+% ...
+%
+% MusiXhv.tex 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, or (at your option)
+% any later version.
+%
+% MusiXhv.tex 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+% Copyright 2015-2017 Bob Tennent rdt@cs.queensu.ca
+%
+\immediate\write16{MusiXhv\space<2017/02/10>}
+\ifx\undefined\startpiece\errmessage{Input musixtex.tex before musixhv.tex}\fi
+%
+% 7pt "Roman" (sans serif), bold, "italic" (oblique), "bold-italic" (bold-oblique), and small-cap
+\font\sevenrm=phvr8t at 7pt
+\font\sevenbf=phvb8t at 7pt
+\font\sevenit=phvro8t at 7pt
+\font\sevenbi=phvbo8t at 7pt
+\font\sevensc=phvrc8t at 7pt
+%
+% 8pt
+\font\eightrm=phvr8t at 8pt
+\font\eightbf=phvb8t at 8pt
+\font\eightbi=phvbo8t at 8pt
+\font\eightsc=phvrc8t at 8pt
+\font\eightit=phvro8t at 8pt
+%
+% 9pt
+\font\ninerm=phvr8t at 9pt
+\font\ninebf=phvb8t at 9pt
+\font\nineit=phvro8t at 9pt
+\font\ninebi=phvbo8t at 9pt
+\font\ninesc=phvrc8t at 9pt
+%
+% 10pt
+\font\tenrm=phvr8t at 10pt
+\font\tenbf=phvb8t at 10pt
+\font\tenit=phvro8t at 10pt
+\font\tenbi=phvbo8t at 10pt
+\font\tensc=phvrc8t at 10pt
+%
+% 11pt
+\font\elevenrm=phvr8t at 11pt
+\font\elevenbf=phvb8t at 11pt
+\font\elevenit=phvro8t at 11pt
+\font\elevenbi=phvbo8t at 11pt
+\font\elevensc=phvrc8t at 11pt
+%
+% 12pt
+\font\twelverm=phvr8t scaled \magstep1
+\font\twelvebf=phvb8t scaled \magstep1
+\font\twelveit=phvro8t scaled \magstep1
+\font\twelvebi=phvbo8t scaled \magstep1
+\font\twelvesc=phvrc8t scaled \magstep1
+%
+% 14pt
+\font\frtrm=phvr8t scaled \magstep2
+\font\frtbf=phvb8t scaled \magstep2
+\font\frtit=phvro8t scaled \magstep2
+\font\frtbi=phvbo8t scaled \magstep2
+\font\frtsc=phvrc8t scaled \magstep2
+%
+% 17pt
+\font\svtrm=phvr8t scaled \magstep3
+\font\svtbf=phvb8t scaled \magstep3
+\font\svtit=phvro8t scaled \magstep3
+\font\svtbi=phvbo8t scaled \magstep3
+\font\svtsc=phvrc8t scaled \magstep3
+%
+% 20pt
+\font\twtyrm=phvr8t scaled \magstep4
+\font\twtybf=phvb8t scaled \magstep4
+\font\twtyit=phvro8t scaled \magstep4
+\font\twtybi=phvbo8t scaled \magstep4
+\font\twtysc=phvrc8t scaled \magstep4
+%
+% 25pt
+\font\twfvrm=phvr8t scaled \magstep5
+\font\twfvbf=phvb8t scaled \magstep5
+\font\twfvit=phvro8t scaled \magstep5
+\font\twfvbi=phvbo8t scaled \magstep5
+\font\twfvsc=phvrc8t scaled \magstep5
+%
+% large fonts for titles
+% (If you prefer bold, use \bf)
+%
+\def\bigtype{\bigfont\rm}
+\def\Bigtype{\Bigfont\rm}
+\def\BIgtype{\BIgfont\rm}
+\def\BIGtype{\BIGfont\rm}
+%
+%
+\font\ppfftwelve=phvbo8t at 8pt
+\font\ppffsixteen=phvbo8t at 10pt
+\font\ppfftwenty=phvbo8t at 12pt
+\font\ppfftwentyfour=phvbo8t at 14pt
+\font\ppfftwentynine=phvbo8t at 17pt
+%
+\def\f{{\ppff f}}
+\def\ff{{\ppff ff}}
+\def\fp{{\ppff fp}}
+\def\fff{{\ppff fff}}
+\def\ffff{{\ppff ffff}}
+\def\mf{{\ppff mf}}
+\def\p{{\ppff p}}
+\def\pp{{\ppff pp}}
+\def\ppp{{\ppff ppp}}
+\def\pppp{{\ppff pppp}}
+
+% sl fonts needed by musixsty
+%
+\font\eightsl=phvro8t at 8pt
+\font\ninesl=phvro8t at 9pt
+\font\tensl=phvro8t at 10pt
+\font\twelvesl=phvro8t scaled \magstep1
+\font\frtsl=phvro8t scaled \magstep2
+\font\svtsl=phvro8t scaled \magstep3
+\font\twtysl=phvro8t scaled \magstep4
+\font\twfvsl=phvro8t scaled \magstep5
+%
+%
+\edef\catcodeat{\the\catcode`\@}
+\catcode`\@=11
+%
+\def\sF{{\ppff s\p@kern f}}
+\def\sfz{{\ppff s\p@kern f\f@kern z}}
+\def\sfzp{{\ppff s\p@kern f\f@kern z\p@kern p}}
+
+\def\mp@{{\ppff mp}}
+\let\mezzopiano\mp@
+\catcode`\@=\catcodeat
+
+%
+% Redefine accented characters for etex, suggested by David Carlisle:
+%
+\ifx\documentclass\undefined
+\catcode`\@=11
+\def\ProvidesFile#1[#2]{}
+\def\DeclareFontEncoding#1#2#3{}
+\def\DeclareTextAccent#1#2#3{%
+\def#1##1{%
+\expandafter\ifx\csname T1\string#1-\string##1\endcsname\relax
+{\accent#1 ##1}%
+\else
+\csname T1\string#1-\string##1\expandafter\endcsname
+\fi}}
+\def\DeclareTextCommand#1#2{\xdtcmd}%not today
+\def\xdtcmd#1#{\xxdtcmd}%not today
+\def\xxdtcmd#1{}%not today
+\def\DeclareTextCompositeCommand#1#2#3#4{}%not today
+\def\DeclareTextSymbol#1#2#3{%
+\def#1{\char#3\relax}}
+\def\DeclareTextComposite#1#2#3#4{%
+\expandafter\def\csname T1\string#1-\string#3\endcsname{\char#4\relax}}
+
+\input t1enc.def
+
+\def\c#1{\leavevmode\ifx c#1\char231 \else\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent11 #1%
+ \else{\ooalign{\unhbox\z@\crcr
+ \hidewidth\char11\hidewidth}}\fi\fi}
+\catcode`\@=\catcodeat
+\fi
+
+\normtype
+\endinput
diff --git a/macros/musixtex/tex/musixinv.tex b/macros/musixtex/tex/musixinv.tex
new file mode 100644
index 0000000000..4a8d6ae864
--- /dev/null
+++ b/macros/musixtex/tex/musixinv.tex
@@ -0,0 +1,2 @@
+% still a dummy
+\endinput
diff --git a/macros/musixtex/tex/musixlit.tex b/macros/musixtex/tex/musixlit.tex
new file mode 100644
index 0000000000..f55fb8f826
--- /dev/null
+++ b/macros/musixtex/tex/musixlit.tex
@@ -0,0 +1,87 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+
+\immediate\write16{MusiXLITurgical 0.38\space<17 Dec 2016>}%
+
+\ifx\undefined\oldGclef \else \endinput \fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+\def\oldGclef{\keychar103}
+
+\def\cqu{\def\q@u{\musixchar99}\@qu}
+\def\cql{\def\q@u{\musixfont\@c}\@ql}
+\def\chu{\def\q@u{\musixchar101}\@qu}
+\def\chl{\def\q@u{\musixchar102}\@ql}
+
+\def\cnqu{\def\q@u{\musixchar99}\@nq}
+\def\cnql{\def\q@u{\musixfont\@c}\@nq}
+\def\cnhu{\def\q@u{\musixchar101}\@nq}
+\def\cnhl{\def\q@u{\musixchar102}\@nq}
+\def\cqb{\def\q@u{\musixchar99}\@qb} % RDT 2016-12-17
+\def\zcqb{\advancefalse\cqb} % RDT 2016-12-17
+
+
+% Moved to musixtex.tex. RDT 2015-12-23
+%\def\Hpause#1#2{\zcharnote{#1}{\def\s@r{%
+% \vrule\@width.6\p@\@height1\h@lf\internote\@depth1\h@lf\internote}%
+% \s@r
+% \vrule\@width#2\noteskip\@height\h@lf\internote\@depth\h@lf\internote
+% \s@r}}
+
+\def\Hlonga#1#2{\zcharnote{#1}{\def\s@r{%
+ \vrule\@width.6\p@\@height1\h@lf\internote\@depth1\h@lf\internote}%
+ \s@r
+ \raise\h@lf\internote\rlap{\vrule\@width#2\noteskip
+ \@height 0.3pt\@depth 0.3pt}%
+ \raise-\h@lf\internote\hbox{\vrule\@width#2\noteskip
+ \@height 0.3pt\@depth 0.3pt}%
+ \s@r}}
+
+% separated short vrules over every staff (fits only for 1,2,3,5 Lines)
+
+\def\rul@SEP#1{\n@loop\short@rule\repeat\addspace#1}
+\def\short@rule{{\p@loop\y@\altportee\advance\y@\tw@\internote\raise\y@%
+ \rlap{\vrule\@width\lthick\@height\f@ur\internote}\count@portee\repeat}}
+\def\shortbarrules{\let\writ@rule\rul@SEP }
+
+% separated short vrules between every staff (fits only for 1,2,3,5 Lines)
+
+\def\rul@int#1{\n@loop\inter@rule\repeat\addspace#1}
+\def\inter@rule{{%
+ \y@iv\altitude \y@v\y@iv
+ \ifnum\st@ffs>\@ne \@ri \Comp@High\advance\y@v\altitude
+ \else \ifnum\st@ffs>\z@ \advance\y@v\@ight\internote \fi\fi
+ \advance\noinstrum@nt\@ne \s@l@ctinstr
+ \ifnum\st@ffs=\z@ \advance\noinstrum@nt\@ne\s@l@ctinstr \fi
+ \ifnum\nbinstruments<\noinstrum@nt
+ \y@iii\y@iv \y@ii\y@iii \advance\y@ii-\y@v \Put@inter@rule
+ \else
+ \y@iii\altitude \y@ii\y@iii \advance\y@ii-\y@v \Put@inter@rule
+ \fi}}
+\def\@ri{\n@ii\st@ffs \advance\st@ffs\m@ne
+ \C@Inter \y@ii\stem@skip
+ \p@loop \y@iii\altportee \advance\y@iii\interportee
+ \Put@inter@rule \advance\noport@@\@ne \repeat
+ \st@ffs\n@ii}
+\def\Put@inter@rule{\raise\y@iii\rlap{\vrule\@width\lthick\@depth\y@ii}}
+\def\interbarrules{\let\writ@rule\rul@int }
+
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixlyr.tex b/macros/musixtex/tex/musixlyr.tex
new file mode 100644
index 0000000000..fc9aaaf9b1
--- /dev/null
+++ b/macros/musixtex/tex/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\write16{MusiXLYRics 2.1c\space<June 10, 2003>}
+\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<nr> 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}% <o>ben
+\let\orig@i@bl\i@bl \def\i@bl{\balk@nlage u\orig@i@bl}% <u>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/macros/musixtex/tex/musixmad.tex b/macros/musixtex/tex/musixmad.tex
new file mode 100644
index 0000000000..6d29d3cd84
--- /dev/null
+++ b/macros/musixtex/tex/musixmad.tex
@@ -0,0 +1,30 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+%
+% musixmad.tex : allocate registers for more additional instruments
+%
+\immediate\write16{MusiXMore ADditional instruments T.115 <19 Nov 2010>}%
+%
+%
+% setup the maximum element numbers
+\setmaxinstruments{12}%
+\setmaxgroups{4}%
+\setmaxslurs\maxinstruments
+%
+\endinput
diff --git a/macros/musixtex/tex/musixper.tex b/macros/musixtex/tex/musixper.tex
new file mode 100644
index 0000000000..47ad54e644
--- /dev/null
+++ b/macros/musixtex/tex/musixper.tex
@@ -0,0 +1,195 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+\ifx\undefined\drumclef \else \endinput \fi
+
+\immediate\write16{MusiXPERcussion T.60\space<27 September 2010>}%
+
+\ifx\undefined\dqb
+ \input musixdia
+\fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+% if you need pointed percussion notes, say '\p[p][p]t n\xqu n' or '\xqu{.n}'
+% if you need them more often define them by your one
+
+\def\drumclef{\raise2\internote\hbox{\keychar77}}
+
+%%% notes with a circled diagonal cross head, for closed hihat ...
+
+\def\dc@symbol{\def\q@u{\musixchar113}}
+
+\def\dcqu{\dc@symbol\@qu}
+\def\dcql{\dc@symbol\@ql}
+
+\def\dcqb{\dc@symbol\@qb}
+
+\def\dczq{\dc@symbol\@zq}
+
+\def\dccu{\dc@symbol\@cu}
+\def\dcccu{\dc@symbol\@ccu}
+%\def\dccccu{\dc@symbol\@cccu}
+%\def\dcccccu{\dc@symbol\@ccccu}
+\def\dccl{\dc@symbol\@cl}
+\def\dcccl{\dc@symbol\@ccl}
+%\def\dccccl{\dc@symbol\@cccl}
+%\def\dcccccl{\dc@symbol\@ccccl}
+
+%%% notes with a diagonal cross half circle head, for half open hihat ...
+
+\def\dh@symbol{\def\q@u{\musixchar112}}
+
+\def\dhqu{\dh@symbol\@qu}
+\def\dhql{\dh@symbol\@ql}
+
+\def\dhqb{\dh@symbol\@qb}
+
+\def\dhzq{\dh@symbol\@zq}
+
+\def\dhcu{\dh@symbol\@cu}
+\def\dhccu{\dh@symbol\@ccu}
+%\def\dhcccu{\dh@symbol\@cccu}
+%\def\dhccccu{\dh@symbol\@ccccu}
+\def\dhcl{\dh@symbol\@cl}
+\def\dhccl{\dh@symbol\@ccl}
+%\def\dhcccl{\dh@symbol\@cccl}
+%\def\dhccccl{\dh@symbol\@ccccl}
+
+%%% notes with a diagonal cross head, for open hihat ...
+
+\def\do@symbol{\def\q@u{\musixchar111}}
+
+\def\doqu{\do@symbol\@qu}
+\def\doql{\do@symbol\@ql}
+
+\def\doqb{\do@symbol\@qb}
+
+\def\dozq{\do@symbol\@zq}
+
+\def\docu{\do@symbol\@cu}
+\def\doccu{\do@symbol\@ccu}
+%\def\docccu{\do@symbol\@cccu}
+%\def\doccccu{\do@symbol\@ccccu}
+\def\docl{\do@symbol\@cl}
+\def\doccl{\do@symbol\@ccl}
+%\def\docccl{\do@symbol\@cccl}
+%\def\doccccl{\do@symbol\@ccccl}
+
+%%% notes with a doublesharp-head
+
+\def\x@symbol{\def\q@u{\musixchar114}}
+
+\def\xqu{\x@symbol\@qu}
+\def\xql{\x@symbol\@ql}
+
+\def\xqb{\x@symbol\@qb}
+
+\def\xzq{\x@symbol\@zq}
+
+\def\xcu{\x@symbol\@cu}
+\def\xccu{\x@symbol\@ccu}
+%\def\xcccu{\x@symbol\@cccu}
+%\def\xccccu{\x@symbol\@ccccu}
+\def\xcl{\x@symbol\@cl}
+\def\xccl{\x@symbol\@ccl}
+%\def\xcccl{\x@symbol\@cccl}
+%\def\xccccl{\x@symbol\@ccccl}
+
+%%% notes with a circled doublesharp-head
+
+\def\ox@symbol{\def\q@u{\musixfont\@cxv}}
+
+\def\oxqu{\ox@symbol\@qu}
+\def\oxql{\ox@symbol\@ql}
+
+\def\oxqb{\ox@symbol\@qb}
+
+\def\oxzq{\ox@symbol\@zq}
+
+\def\oxcu{\ox@symbol\@cu}
+\def\oxccu{\ox@symbol\@ccu}
+%\def\oxcccu{\ox@symbol\@cccu}
+%\def\oxccccu{\ox@symbol\@ccccu}
+\def\oxcl{\ox@symbol\@cl}
+\def\oxccl{\ox@symbol\@ccl}
+%\def\oxcccl{\ox@symbol\@cccl}
+%\def\oxccccl{\ox@symbol\@ccccl}
+
+%%% notes with a RhOmbus head, for shaker ...
+
+\def\r@symbol{\def\q@u{\musixchar118}}
+
+\def\roqu{\r@symbol\@qu}
+\def\roql{\r@symbol\@ql}
+
+\def\roqb{\r@symbol\@qb}
+
+\def\rozq{\r@symbol\@zq}
+
+\def\rocu{\r@symbol\@cu}
+\def\roccu{\r@symbol\@ccu}
+%\def\rocccu{\r@symbol\@cccu}
+%\def\roccccu{\r@symbol\@ccccu}
+\def\rocl{\r@symbol\@cl}
+\def\roccl{\r@symbol\@ccl}
+%\def\rocccl{\r@symbol\@cccl}
+%\def\roccccl{\r@symbol\@ccccl}
+
+%%% notes with a TrianGle head, for rattle ...
+
+\def\t@symbol{\def\q@u{\musixchar116}}
+
+\def\tgqu{\t@symbol\@qu}
+\def\tgql{\t@symbol\@ql}
+
+\def\tgqb{\t@symbol\@qb}
+
+\def\tgzq{\t@symbol\@zq}
+
+\def\tgcu{\t@symbol\@cu}
+\def\tgccu{\t@symbol\@ccu}
+%\def\tgcccu{\t@symbol\@cccu}
+%\def\tgccccu{\t@symbol\@ccccu}
+\def\tgcl{\t@symbol\@cl}
+\def\tgccl{\t@symbol\@ccl}
+%\def\tgcccl{\t@symbol\@cccl}
+%\def\tgccccl{\t@symbol\@ccccl}
+
+%%% notes with a + head, for bongos ...
+
+\def\k@symbol{\def\q@u{\musixchar117}}
+
+\def\kqu{\k@symbol\@qu}
+\def\kql{\k@symbol\@ql}
+
+\def\kqb{\k@symbol\@qb}
+
+\def\kzq{\k@symbol\@zq}
+
+\def\kcu{\k@symbol\@cu}
+\def\kccu{\k@symbol\@ccu}
+%\def\kcccu{\k@symbol\@cccu}
+%\def\kccccu{\k@symbol\@ccccu}
+\def\kcl{\k@symbol\@cl}
+\def\kccl{\k@symbol\@ccl}
+%\def\kcccl{\k@symbol\@cccl}
+%\def\kccccl{\k@symbol\@ccccl}
+
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/musixplt.tex b/macros/musixtex/tex/musixplt.tex
new file mode 100644
index 0000000000..3e0b36aae1
--- /dev/null
+++ b/macros/musixtex/tex/musixplt.tex
@@ -0,0 +1,184 @@
+% musixplt.tex : Palatino font definitions for MusiXTeX
+%
+% usage:
+%
+% \input musixtex
+% \input musixplt
+% ...
+%
+% MusiXplt.tex 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, or (at your option)
+% any later version.
+%
+% MusiXplt.tex 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+% Copyright 2015-2017 Bob Tennent rdt@cs.queensu.ca
+%
+\immediate\write16{MusiXplt\space<2017/02/10>}
+\ifx\undefined\startpiece\errmessage{Input musixtex.tex before musixplt.tex}\fi
+%
+% 7pt roman, bold, italic, bold italic, slanted and small-cap
+\font\sevenrm=pplr8t at 7pt
+\font\sevenbf=pplb8t at 7pt
+\font\sevenit=pplri8t at 7pt
+\font\sevenbi=pplbi8t at 7pt
+\font\sevensc=pplrc9d at 7pt
+%
+% 8pt roman, bold, italic, bold italic, slanted and small-cap
+\font\eightrm=pplr8t at 8pt
+\font\eightbf=pplb8t at 8pt
+\font\eightit=pplri8t at 8pt
+\font\eightbi=pplbi8t at 8pt
+\font\eightsc=pplrc9d at 8pt
+%
+% 9pt
+\font\ninerm=pplr8t at 9pt
+\font\ninebf=pplb8t at 9pt
+\font\nineit=pplri8t at 9pt
+\font\ninebi=pplbi8t at 9pt
+\font\ninesc=pplrc9d at 9pt
+%
+% 10pt
+\font\tenrm=pplr8t at 10pt
+\font\tenbf=pplb8t at 10pt
+\font\tenit=pplri8t at 10pt
+\font\tenbi=pplbi8t at 10pt
+\font\tensc=pplrc9d at 10pt
+%
+% 11pt
+\font\elevenrm=pplr8t scaled \magstephalf
+\font\elevenbf=pplb8t scaled \magstephalf
+\font\elevenit=pplri8t scaled \magstephalf
+\font\elevenbi=pplbi8t scaled \magstephalf
+\font\elevensc=pplrc9d scaled \magstephalf
+%
+% 12pt
+\font\twelverm=pplr8t scaled \magstep1
+\font\twelvebf=pplb8t scaled \magstep1
+\font\twelveit=pplri8t scaled \magstep1
+\font\twelvebi=pplbi8t scaled \magstep1
+\font\twelvesc=pplrc9d scaled \magstep1
+%
+% 14pt
+\font\frtrm=pplr8t scaled \magstep2
+\font\frtbf=pplb8t scaled \magstep2
+\font\frtit=pplri8t scaled \magstep2
+\font\frtbi=pplbi8t scaled \magstep2
+\font\frtsc=pplrc9d scaled \magstep2
+%
+% 17pt
+\font\svtrm=pplr8t scaled \magstep3
+\font\svtbf=pplb8t scaled \magstep3
+\font\svtit=pplri8t scaled \magstep3
+\font\svtbi=pplbi8t scaled \magstep3
+\font\svtsc=pplrc9d scaled \magstep3
+%
+% 20pt
+\font\twtyrm=pplr8t scaled \magstep4
+\font\twtybf=pplb8t scaled \magstep4
+\font\twtyit=pplri8t scaled \magstep4
+\font\twtybi=pplbi8t scaled \magstep4
+\font\twtysc=pplrc9d scaled \magstep4
+%
+% 25pt
+\font\twfvrm=pplr8t scaled \magstep5
+\font\twfvbf=pplb8t scaled \magstep5
+\font\twfvit=pplri8t scaled \magstep5
+\font\twfvbi=pplbi8t scaled \magstep5
+\font\twfvsc=pplrc9d scaled \magstep5
+%
+%
+% large fonts for titles
+% (If you prefer bold, use \bf)
+% (If you prefer roman, use \rm)
+%
+\def\bigtype{\bigfont\sc}
+\def\Bigtype{\Bigfont\sc}
+\def\BIgtype{\BIgfont\sc}
+\def\BIGtype{\BIGfont\sc}
+%
+\font\ppfftwelve=pplbi8t at 8pt
+\font\ppffsixteen=pplbi8t at 10pt
+\font\ppfftwenty=pplbi8t at 12pt
+\font\ppfftwentyfour=pplbi8t at 14pt
+\font\ppfftwentynine=pplbi8t at 17pt
+%
+\def\f{{\ppff f}}
+\def\ff{{\ppff ff}}
+\def\fp{{\ppff fp}}
+\def\fff{{\ppff fff}}
+\def\ffff{{\ppff ffff}}
+\def\mf{{\ppff mf}}
+\def\p{{\ppff p}}
+\def\pp{{\ppff pp}}
+\def\ppp{{\ppff ppp}}
+\def\pppp{{\ppff pppp}}
+%
+%
+% sl fonts needed by musixsty
+%
+\font\eightsl=pplro8t at 8pt
+\font\ninesl=pplro8t at 9pt
+\font\tensl=pplro8t at 10pt
+\font\twelvesl=pplro8t scaled \magstep1
+\font\frtsl=pplro8t scaled \magstep2
+\font\svtsl=pplro8t scaled \magstep3
+\font\twtysl=pplro8t scaled \magstep4
+\font\twfvsl=pplro8t scaled \magstep5
+%
+%
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+%
+\def\sF{{\ppff s\p@kern f}}
+\def\sfz{{\ppff s\p@kern f\f@kern z}}
+\def\sfzp{{\ppff s\p@kern f\f@kern z\p@kern p}}
+
+\def\mp@{{\ppff mp}}
+\let\mezzopiano\mp@
+
+\catcode`\@=\catcodeat
+
+%
+% Redefine accented characters for 8-bit font, suggested by David Carlisle:
+%
+
+\ifx\documentclass\undefined
+\catcode`\@=11
+\def\ProvidesFile#1[#2]{}
+\def\DeclareFontEncoding#1#2#3{}
+\def\DeclareTextAccent#1#2#3{%
+\def#1##1{%
+\expandafter\ifx\csname T1\string#1-\string##1\endcsname\relax
+{\accent#1 ##1}%
+\else
+\csname T1\string#1-\string##1\expandafter\endcsname
+\fi}}
+\def\DeclareTextCommand#1#2{\xdtcmd}%not today
+\def\xdtcmd#1#{\xxdtcmd}%not today
+\def\xxdtcmd#1{}%not today
+\def\DeclareTextCompositeCommand#1#2#3#4{}%not today
+\def\DeclareTextSymbol#1#2#3{%
+\def#1{\char#3\relax}}
+\def\DeclareTextComposite#1#2#3#4{%
+\expandafter\def\csname T1\string#1-\string#3\endcsname{\char#4\relax}}
+
+\input t1enc.def
+
+% \c needs special treatment
+\def\c#1{\leavevmode\ifx c#1\char231 \else\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent11 #1%
+ \else{\ooalign{\unhbox\z@\crcr
+ \hidewidth\char11\hidewidth}}\fi\fi}
+\catcode`\@=\catcodeat
+\fi
+
+\normtype
+\endinput
diff --git a/macros/musixtex/tex/musixpoi.tex b/macros/musixtex/tex/musixpoi.tex
new file mode 100644
index 0000000000..dcf33f4f95
--- /dev/null
+++ b/macros/musixtex/tex/musixpoi.tex
@@ -0,0 +1,67 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+
+%\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 % 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}% 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}% 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}
+\def\@cccupp{\n@vii42\let\st@m\up@flag \g@qpp}
+\def\@ccccupp{\n@vii43\let\st@m\up@flag \g@qpp}
+\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}% 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}
+\def\zcclpp{\advancefalse\cclpp}
+\def\cccup{\q@symbol\@cccup}
+\def\zcccup{\advancefalse\cccup}
+\def\ccclp{\q@symbol\@ccclp}
+\def\zccclp{\advancefalse\ccclp}
+\def\cccupp{\q@symbol\@cccupp}
+\def\zcccupp{\advancefalse\cccupp}
+\def\ccclpp{\q@symbol\@ccclpp}
+\def\zccclpp{\advancefalse\ccclpp}
+\def\ccccup{\q@symbol\@ccccup}
+\def\zccccup{\advancefalse\ccccup}
+\def\cccclp{\q@symbol\@cccclp}
+\def\zcccclp{\advancefalse\cccclp}
+\def\ccccupp{\q@symbol\@ccccupp}
+\def\zccccupp{\advancefalse\ccccupp}
+\def\cccclpp{\q@symbol\@cccclpp}
+\def\zcccclpp{\advancefalse\cccclpp}
+
+\catcode`\@=\catcodeat
+\endinput
+
diff --git a/macros/musixtex/tex/musixppff.tex b/macros/musixtex/tex/musixppff.tex
new file mode 100644
index 0000000000..6d06e70b42
--- /dev/null
+++ b/macros/musixtex/tex/musixppff.tex
@@ -0,0 +1,169 @@
+%% musippff.tex This is an extension library for Musix\Tex which
+%% replaces the macros used for dynamic marks to use a mini-font xppff10
+%%
+%% Author:
+%% Hiroaki MORIMOTO <CQX05646\atmark nifty.com>
+%% Tokyo, Japan
+%% URL: http://homepage1.nifty.com/kuuku/pub/musixtex/index-e.html
+%%
+%% usage:
+%% \input musixtex
+%% \input musixppff
+%% ...
+%%
+%%
+\immediate\write16{MusiXppff \noexpand\ppff font replacement <2017/02/10>}%
+\ifx\undefined\startpiece\errmessage{Input musixtex.tex before musixppff.tex}\fi
+
+\font\xppfftwelve=xppff10 at 8pt
+\font\xppffsixteen=xppff10
+\font\xppfftwenty=xppff10 scaled \magstep1
+\font\xppfftwentyfour=xppff10 scaled \magstep2
+\font\xppfftwentynine=xppff10 scaled \magstep3
+\font\tinyxppff=xppff10 at 8pt
+\font\smallxppff=xppff10
+\font\normxppff=xppff10 scaled \magstep1
+\font\medxppff=xppff10 scaled \magstep2
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+\def\xppff{%
+\ifdim\internote<\p@seven6\Internote \tinyxppff
+\else\ifdim\internote<.95\Internote \smallxppff
+\else\ifdim\internote<1.19\Internote \normxppff
+\else\medxppff\fi\fi\fi}
+
+
+\def\f{{\xppff f}}%
+\def\ff{{\xppff ff}}%
+\def\fp{{\xppff fp}}%
+\def\sF{{\xppff sf}}%
+\def\fff{{\xppff fff}}%
+\def\ffff{{\xppff ffff}}%
+\def\mf{{\xppff mf}}%
+\def\p{{\xppff p}}%
+\def\pp{{\xppff pp}}%
+\def\ppp{{\xppff ppp}}%
+\def\pppp{{\xppff pppp}}%
+\def\sfz{{\xppff sfz}}%
+\def\sfzp{{\xppff sfzp}}%
+\def\mp@{{\xppff mp}}%
+\let\mezzopiano\mp@
+
+%
+\def\tinydyn{\let\ppff\tinyppff\let\xppff\tinyxppff}%
+\def\smalldyn{\let\ppff\smallppff\let\xppff\smallxppff}%
+\def\normdyn{\let\ppff\normppff\let\xppff\normxppff}%
+\def\meddyn{\let\ppff\medppff\let\xppff\medxppff}%
+
+\def\comput@fonts{%
+ \ifnum\musicsize=\sixt@@n
+ \let\musicLargefont\musictwentyfour
+ \let\musiclargefont\musictwenty
+ \let\musicnorfont\musicsixteen
+ \let\musicsmallfont\musicthirteen
+ \let\musictinyfont\musiceleven
+ \let\xgregLargefont\xgregtwentyfour
+ \let\xgreglargefont\xgregtwenty
+ \let\xgregnorfont\xgregsixteen
+ \let\xgregsmallfont\xgregthirteen
+ \let\xgregtinyfont\xgregeleven
+ \let\slurd\slurdsixteen \let\sluru\slurusixteen
+ \let\hslurd\hslurdsixteen \let\hsluru\hslurusixteen
+ \let\meternorfont\tenbf \let\metersmallfont\eightbf % version 1.16 RDT
+ \let\meterbigfont\twelvebf \let\meterlargefont\frtbf
+ \let\meterLargefont\svtbf
+ \let\tinyppff\ppfftwelve % version 1.17 RDT
+ \let\smallppff\ppfftwelve
+ \let\normppff\ppffsixteen
+ \let\medppff\ppfftwenty
+ \let\tinyxppff\xppfftwelve % version 1.17 RDT
+ \let\smallxppff\xppfftwelve
+ \let\normxppff\xppffsixteen
+ \let\medxppff\xppfftwenty
+ \else\ifnum\musicsize=\@xxiv
+ \let\musicLargefont\musictwentynine
+ \let\musiclargefont\musictwentynine
+ \let\musicnorfont\musictwentyfour
+ \let\musicsmallfont\musictwenty
+ \let\musictinyfont\musicsixteen
+ \let\xgregLargefont\xgregtwentynine
+ \let\xgreglargefont\xgregtwentynine
+ \let\xgregnorfont\xgregtwentyfour
+ \let\xgregsmallfont\xgregtwenty
+ \let\xgregtinyfont\xgregsixteen
+ \let\sluru\slurutwenty \let\slurd\slurdtwenty
+ \let\hsluru\hslurutwenty \let\hslurd\hslurdtwenty
+ \let\meternorfont\frtbf \let\metersmallfont\twelvebf % version 1.18 RDT
+ \let\meterbigfont\svtbf \let\meterlargefont\twtybf
+ \let\meterlargefont\twfvbf
+ \let\tinyppff\ppffsixteen
+ \let\smallppff\ppfftwenty
+ \let\normppff\ppfftwentyfour
+ \let\medppff\ppfftwentynine
+ \let\tinyxppff\xppffsixteen
+ \let\smallxppff\xppfftwenty
+ \let\normxppff\xppfftwentyfour
+ \let\medxppff\xppfftwentynine
+ \else\ifnum\musicsize=\@xxix
+ \let\musicLargefont\musictwentynine
+ \let\musiclargefont\musictwentynine
+ \let\musicnorfont\musictwentynine
+ \let\musicsmallfont\musictwentyfour
+ \let\musictinyfont\musictwenty
+ \let\xgregLargefont\xgregtwentynine
+ \let\xgreglargefont\xgregtwentynine
+ \let\xgregnorfont\xgregtwentynine
+ \let\xgregsmallfont\xgregtwentyfour
+ \let\xgregtinyfont\xgregtwenty
+ \let\sluru\slurutwenty \let\slurd\slurdtwenty
+ \let\hsluru\hslurutwenty \let\hslurd\hslurdtwenty
+ \let\slurud\slurutwentyd \let\slurdd\slurdtwentyd % +ickd
+ \let\hslurud\hslurutwentyd \let\hslurdd\hslurdtwentyd %+ickd
+ \let\meternorfont\svtbf \let\metersmallfont\frtbf % version 1.18 RDT
+ \let\meterbigfont\twtybf \let\meterlargefont\twfvbf
+ \let\meterLargefont\twfvbf
+ \let\tinyppff\ppfftwenty
+ \let\smallppff\ppfftwentyfour
+ \let\normppff\ppfftwentynine
+ \let\medppff\ppfftwentynine
+ \let\tinyxppff\xppfftwenty
+ \let\smallxppff\xppfftwentyfour
+ \let\normxppff\xppfftwentynine
+ \let\medxppff\xppfftwentynine
+\else
+ \ifnum\musicsize=\tw@nty
+ \else\ifnum\musicsize=\z@
+ \else\errmessage{\noexpand\musicsize=\the\musicsize\space not supported,
+ set to default of 20}%
+ \fi
+ \fi\musicsize\tw@nty
+ \let\musicLargefont\musictwentynine
+ \let\musiclargefont\musictwentyfour
+ \let\musicnorfont\musictwenty
+ \let\musicsmallfont\musicsixteen
+ \let\musictinyfont\musicthirteen
+ \let\xgreglargefont\xgregtwentyfour
+ \let\xgregLargefont\xgregtwentynine
+ \let\xgregnorfont\xgregtwenty
+ \let\xgregsmallfont\xgregsixteen
+ \let\xgregtinyfont\xgregthirteen
+ \let\sluru\slurutwenty \let\slurd\slurdtwenty
+ \let\hsluru\hslurutwenty \let\hslurd\hslurdtwenty
+ \let\meternorfont\twelvebf \let\metersmallfont\tenbf % version 1.18 RDT
+ \let\meterbigfont\frtbf \let\meterlargefont\svtbf
+ \let\meterLargefont\twtybf
+ \let\tinyppff\ppfftwelve
+ \let\smallppff\ppffsixteen
+ \let\normppff\ppfftwenty
+ \let\medppff\ppfftwentyfour
+ \let\tinyxppff\xppfftwelve
+ \let\smallxppff\xppffsixteen
+ \let\normxppff\xppfftwenty
+ \let\medxppff\xppfftwentyfour
+\fi\fi\fi}%
+
+\catcode`\@=\catcodeat
+
+\endinput
+
diff --git a/macros/musixtex/tex/musixps.tex b/macros/musixtex/tex/musixps.tex
new file mode 100644
index 0000000000..e2033e2b07
--- /dev/null
+++ b/macros/musixtex/tex/musixps.tex
@@ -0,0 +1,963 @@
+%% PostScript slurs, ties and crescendos
+% Coded by Stanislav Kneifl
+
+\ifx\undefined\startpiece\errmessage{Input musixtex.tex before musixps.tex}\fi
+\ifx\undefined\liftcresc\else\endinput\fi
+
+\immediate\write16{MusiXPS PostScript slurs, ties and crescendos 0.93 (17.2.2015)}%
+
+\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) psxGD N /S#1brk S#1hgt (\the\internote) psxGD
+ \ifslopebrkslurs 3 \else 1 \fi\if@up 1 \else -1 \fi M M A N /S#1lift 0 N
+ /S#1alt (\the\altportee) psxGDAR 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) psxGDAR SB /S#1x1 ED
+ (\the\y@i) psxGD (\the\y@iii) psxGD SB 4 psxAR M A /S#1y1 ED
+ (\the\internote) psxGD (\the\th@shgt) psxGD (\the\y@i) psxGD
+ 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) psxGDAR SB /S#1x1 ED
+ S#1hgt S#1lift (\the\internote) psxGD M A 4 psxAR M
+ (\the\y@i) psxGDAR SB SB /S#1y1 ED
+ (\the\internote) psxGD S#1hgt (\the\y@i) psxGD
+ 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) psxGD S#1hgt (\the\y@i) psxGD
+ #2 (\the\internote) psxGD M S#1dir M A
+ S#1x1 S#1y1 CP (\the\y@ii) psxGDAR S#1dir M SB
+ #4 S#1dir M #5 \psslurmaxhgt\space S#1dash S#1adj 90 DS
+ /ay1 ay1 (\the\ht\z@) psxGDAR -10 psxAR 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) psxGD 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) psxGD 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) psxGDAR 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) psxGDAR 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) psxGDAR N
+ CP /T#2y1 ED /T#2x1 ED /T#2hgt (\the\y@i) psxGD 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) psxGD (\the\th@shgt) psxGD DP
+ CP S (\the\y@ii) psxGDAR SB S (\the\th@shgt)
+ psxGDAR 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) psxGD T#1hgt psxGD DP
+ CP S (\the\y@ii) psxGDAR SB S T#1hgt psxGDAR 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) psxGD 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) psxGD
+ (\the\y@i) psxGD (\the\y@ii) psxGD CP (\the\y@i) psxGDAR swub
+ CP exch (\the\y@v) psxGDAR add exch (\the\y@ii) psxGDAR 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) psxGDAR add def /ay1 ay1 (\the\y@ii) psxGDAR sub
+ (\the\ht\z@) psxGDAR 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) psxGD N
+ in (\the\y@ii) psxGD (\the\y@iii) psxGD CP S (\the\y@i) psxGD
+ 4 psxAR M SB S (\the\y@ii) psxGDAR SB
+ CP (\the\y@iii) psxGDAR 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) psxGD 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) psxGDAR SB in 10 psxAR M A S
+ S\the\n@iv hgt S\the\n@iv lift in M A 4 psxAR M SB
+ S\the\n@iv alt 4 psxAR M SB CP S\the\n@iv brk
+ S\the\n@iv alt A 4 psxAR 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) psxGD
+ 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 psxAR 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) psxGDAR SB S (\the\th@salt) psxGDAR 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) psxGDAR SB (\the\internote) psxGD 10 psxAR M A S
+ C\the\n@iv alt psxGDAR 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) psxGD (\the\th@shgt) psxGD DP CP S (\the\y@i) psxGDAR 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) psxGD T\the\n@iv hgt DP CP S (\the\y@i)
+ psxGDAR SB (\the\internote) psxGD 10 psxAR M A S
+ T\the\n@iv alt T\the\n@iv hgt A 4 psxAR 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) psxGD 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 single 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 a
+check, whether the curve passes close the staff line and if so, adjustment
+of 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 do), or
+use the bitmapped slurs.
+
+
+
+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.93 (17.2.2015)
+ changed definitions of AR, GDAR and GD to avoid collisions in certain PS files
+
+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/macros/musixtex/tex/musixref.tex b/macros/musixtex/tex/musixref.tex
new file mode 100644
index 0000000000..dd7c9b92d8
--- /dev/null
+++ b/macros/musixtex/tex/musixref.tex
@@ -0,0 +1,305 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+
+%format musix
+
+% version compatible with T103 12 Aug. 2001 D. Taupin
+
+%II 59.9
+
+\input musixtex
+%\input musixcpt
+\input musixhou
+\input musixper
+\input musixlit
+\input musixgre
+\input musixext
+
+\parindent 0mm
+\nopagenumbers\nobarnumbers
+
+\ifx\MusiXTeX\indefined\def\MusiXTeX{MusiX\TeX}\fi
+%\centerline{\cmbxbig\MusiXTeX---Reference}\medskip
+\centerline{\Bigfont\MusiXTeX---Reference}\medskip
+\centerline{\bigfont Pitches}\medskip
+\tt
+\def\bs{\char92}
+\setclef1{6000}
+\afterruleskip2pt
+\startmuflex\startpiece
+%
+% Pitches
+%
+\addspace\afterruleskip
+\notes\wh{`ABCDEFG!ABCDEFGHIJKLMNabcde}\off{-26\noteskip}%
+ \zchar{14}{\llap`A}\sk
+ \zchar{14}{\llap`B}\sk
+ \zchar{14}{\llap`C}\sk
+ \zchar{14}{\llap`D}\sk
+ \zchar{14}{\llap`E}\sk
+ \zchar{14}{\llap`F}\sk
+ \zchar{14}{\llap`G}\sk
+ \zchar{14}A\sk
+ \zchar{14}B\sk
+ \zchar{14}C\sk
+ \zchar{14}D\sk
+ \zchar{14}E\sk
+ \zchar{14}F\sk
+ \zchar{14}G\sk
+ \zchar{-5}{\llap'A}\zchar{14}H\sk
+ \zchar{-5}{\llap'B}\zchar{14}I\sk
+ \zchar{-5}{\llap'C}\zchar{14}J\sk
+ \zchar{-5}{\llap'D}\zchar{14}K\sk
+ \zchar{-5}{\llap'E}\zchar{14}L\sk
+ \zchar{-5}{\llap'F}\zchar{14}M\sk
+ \zchar{-5}{\llap'G}\zchar{14}N\sk
+ \zchar{14}a\sk
+ \zchar{14}b\sk
+ \zchar{14}c\sk
+ \zchar{14}d\sk
+ \zchar{14}e\sk\en
+\stoppiece\vskip-3\Interligne\setclef1{0000}\contpiece
+\notes\wh{abcdefghijklmnopqrstuvwxyz}\off{-26\noteskip}%
+ \zchar{-8}a\sk
+ \zchar{-8}b\sk
+ \zchar{-8}c\sk
+ \zchar{-8}d\sk
+ \zchar{-8}e\sk
+ \zchar{-8}f\sk
+ \zchar{-8}g\sk
+ \zchar{-8}h\zchar{-4}{\llap'a}\sk
+ \zchar{-8}i\zchar{-4}{\llap'b}\sk
+ \zchar{-8}j\zchar{-4}{\llap'c}\sk
+ \zchar{-8}k\zchar{-4}{\llap'd}\sk
+ \zchar{-8}l\zchar{-4}{\llap'e}\sk
+ \zchar{-8}m\zchar{-4}{\llap'f}\sk
+ \zchar{-8}n\zchar{-4}{\llap'g}\sk
+ \zchar{-8}o\zchar{-4}{\llap{'\kern-2pt'}a}\sk
+ \zchar{-8}p\zchar{-4}{\llap{'\kern-2pt'}b}\sk
+ \zchar{-8}q\zchar{-4}{\llap{'\kern-2pt'}c}\sk
+ \zchar{-8}r\zchar{-4}{\llap{'\kern-2pt'}d}\sk
+ \zchar{-8}s\zchar{-4}{\llap{'\kern-2pt'}e}\sk
+ \zchar{-8}t\zchar{-4}{\llap{'\kern-2pt'}f}\sk
+ \zchar{-8}u\zchar{-4}{\llap{'\kern-2pt'}g}\sk
+ \zchar{-8}v\zchar{-4}{\llap{'\kern-2pt'\kern-2pt'}a}\sk
+ \zchar{-8}w\zchar{-4}{\llap{'\kern-2pt'\kern-2pt'}b}\sk
+ \zchar{-8}x\zchar{-4}{\llap{'\kern-2pt'\kern-2pt'}c}\sk
+ \zchar{-8}y\zchar{-4}{\llap{'\kern-2pt'\kern-2pt'}d}\sk
+ \zchar{-8}z\zchar{-4}{\llap{'\kern-2pt'\kern-2pt'}e}\sk\en
+\stoppiece
+\medskip\centerline{\bigfont Notes, Accidentals, Accents, Clefs and Rests}
+\medskip
+%
+% Notes& Accidentals
+%
+\contpiece
+\Notes
+ \zchar{-4}{Accidentals:}%
+ \zchar9{\bs zmaxima}\zmaxima i\sk
+ \zchar{12}{\bs zlonga}\zlonga i\sk
+ \zchar9{\bs zbreve}\zbreve i\sk
+ \zchar{12}{\bs zwq}\zwq i\sk
+ \zchar{12}{\bs wh}\wh i%
+ \zchar{12}{\bs hu}\zchar{-4}>\hu{>f}%
+ \zchar{12}{\bs hl}\loff{\zchar{-4}{\bs cdsh}}\cdsh l\hl l%
+ \zchar{12}{\bs qu}\zchar{-4}\^\qu{^f}%
+ \zchar{12}{\bs ql}\loff{\zchar{-4}{\bs csh}}\csh l\ql l%
+ \zchar{12}{\bs cu}\zchar{-4}=\cu{=f}%
+ \zchar{12}{\bs cl}\loff{\zchar{-4}{\bs cna}}\cna l\cl l%
+ \zchar{12}{\bs ccu}\zchar{-4}\_\ccu{_f}%
+ \zchar{12}{\bs ccl}\loff{\zchar{-4}{\bs cfl}}\cfl l\ccl l%
+ \zchar{12}{\bs cccu}\zchar{-4}<\cccu{<f}%
+ \zchar{12}{\bs cccl}\loff{\zchar{-4}{\bs cdfl}}\cdfl l\cccl l%
+\multnoteskip{1.2}%
+ \zchar{12}{\bs ccccu}\ccccu f%
+ \zchar{12}{\bs ccccl}\ccccl l%
+\multnoteskip{.8}%
+ \zchar{12}{\bs grcu}\grcu f%
+ \zchar{12}{\bs grcl}\grcl l\en
+\stoppiece\medskip
+%
+% various noteheads
+%
+\contpiece
+\Notes
+\multnoteskip{1.1}%
+ \zchar{10}{\bs dqu$^{123}$}%
+ \zchar{-3}{\eightrm 1 musixdia.tex~~2 musixper.tex~~3 musixgre.tex%
+ ~~4 musixlit.tex~~5 musixext.tex}\dqu g%
+ \zchar{10}{\bs yqu$^{123}$}\yqu g%
+\multnoteskip{.9}%
+ \zchar{10}{\bs dcqu$^2$}\dcqu g%
+ \zchar{10}{\bs dhqu$^2$}\dhqu g%
+ \zchar{10}{\bs doqu$^2$}\doqu g%
+ \zchar{10}{\bs xqu$^2$}\xqu g%
+ \zchar{10}{\bs oxqu$^2$}\oxqu g%
+ \zchar{10}{\bs roqu$^2$}\roqu g%
+ \zchar{10}{\bs tgqu$^2$}\tgqu f%
+ \zchar{10}{\bs kqu$^2$}\kqu f%
+ \zchar{10}{\bs squ$^3$}\squ g%
+ \zchar{10}{\bs lsqu$^3$}\lsqu j%
+ \zchar{10}{\bs rsqu$^3$}\rsqu k%
+ \zchar{10}{\bs cqu$^4$}\cqu g%
+ \zchar{10}{\bs cql$^4$}\cql k%
+ \zchar{10}{\bs chu$^4$}\chu g%
+ \zchar{10}{\bs chl$^4$}\chl k\en
+%
+% Pointed Notes and Accents
+%
+\stoppiece\medskip\contpiece
+\Notes
+ \zchar{-5}{\eightrm Accent on beam with prefix {\it b} and beamrefnumber
+ instead pitch}%
+ \zchar{13}{\bs lpz}\lpz f\qu f%
+ \zchar{13}{\bs upz}\upz l\ql l%
+ \zchar{13}{\bs lsf}\lsf f\qu f%
+ \zchar{13}{\bs usf}\usf l\ql l%
+ \zchar{13}{\bs lst}\lst f\qu f%
+ \zchar{13}{\bs ust}\ust l\ql l%
+ \zchar{13}{\bs lppz}\lppz f\qu f%
+ \zchar{13}{\bs uppz}\uppz l\ql l%
+ \zchar{13}{\bs lsfz}\lsfz f\qu f%
+ \zchar{13}{\bs usfz}\usfz l\ql l%
+ \zchar{13}{\bs lpzst}\lpzst f\qu f%
+ \zchar{13}{\bs upzst}\upzst l\ql l%
+ \zchar{16}{\bs downbow}\zchar9\downbow\ql l%
+ \zchar{13}{\bs upbow}\zchar9\upbow\ql l%
+ \zchar{16}{\bs flageolett}\flageolett l\ql l%
+ \zchar{13}{\bs whp}\whp i%
+ \zchar{13}{\bs qupp}\qupp h\en
+\stoppiece\medskip
+%
+% clefs
+%
+\let\clefdesoli\empty \nostartrule \contpiece
+\NOtes
+ \zchar{13}{\bs trebleclef}\zchar0\trebleclef\sk
+ \zchar9{\bs altoclef}\zchar0\altoclef\sk
+ \zchar{13}{\bs bassclef}\zchar0\bassclef\sk
+ \zchar9{\bs smalltrebleclef}\zchar0\smalltrebleclef\sk
+ \zchar{13}{\bs smallaltoclef}\zchar0\smallaltoclef\sk
+ \zchar9{\bs smallbassclef}\zchar0\smallbassclef\sk
+ \zchar{13}{\bs drumclef$^2$}\zchar0\drumclef\sk
+ \zchar9{\bs gregorianCclef$^3$}\zchar0\gregorianCclef\sk
+ \zchar{13}{\bs gregorianFclef$^3$}\zchar0\gregorianFclef\sk
+ \zchar9{\bs oldGclef$^4$}\zchar0\oldGclef\sk\en
+\zstoppiece\smallskip
+%
+% Rests
+%
+\let\clefdesoli\trebleclef \startrule\contpiece
+\NOtes
+\multnoteskip{.5}%
+ \zchar{13}{\bs qqs}\qqs
+ \zchar{13}{\bs hs}\hs
+ \zchar{13}{\bs qs}\qs
+ \zchar{13}{\bs ds}\ds
+ \zchar{13}{\bs qp}\qp
+\multnoteskip2%
+ \zchar{13}{\bs hpause}\hpause
+ \zchar{13}{\bs hpausep}\hpausep
+ \zchar{9}{\bs lifthpause}\roff{\lifthpause5}\sk
+ \zchar{13}{\bs pause}\pause
+ \zchar{13}{\bs pausep}\pausep
+ \zchar{9}{\bs liftpause}\roff{\liftpause4}\sk
+ \zchar{13}{\bs PAuse}\PAuse
+ \zchar{13}{\bs PAUSe}\PAUSe
+ \zchar{13}{\bs Hpause$^4$}\Hpause i{.8}\sk\en
+\stoppiece\centerline{\bigfont Other Symbols}\medskip
+%
+% Other Symbols
+%
+\contpiece
+\NOtes
+ \zchar{14}{\bs Trille}\zchar{-4}{\bs allabreve}\Trille n1%
+ \zchar0\allabreve\sk
+ \zchar{14}{\bs trille}\zchar{-4}{\bs meterC}\trille n1\zchar0\meterC\sk
+ \zchar{14}{\bs shake}\zchar{-4}{\bs reverseC}\shake n\zchar0\reverseC\sk
+ \zchar{14}{\bs Shake}\zchar{-4}{\bs meterplus}\Shake n%
+ \zchar0{\meterfrac{3\meterplus2\meterplus3}8}\off{.66\noteskip}%
+ \zchar{14}{\bs mordent}\mordent n\sk
+ \zchar{14}{\bs Mordent}\zchar{-4}{\bs duevolte}\Mordent n\duevolte\sk
+\multnoteskip{.66}%
+ \zchar{14}{\bs turn}\turn n\sk
+\multnoteskip{1.25}%
+ \zchar{14}{\bs backturn}\zchar{-4}{\bs l[r]par}\backturn n%
+ \lpar f\rpar f{\stemlength4\qu f}%
+ \zchar{14}{\bs Shakel}\Shakel n\sk
+ \zchar{14}{\bs Shakesw}\Shakesw n\sk
+ \zchar{14}{\bs Shakene}\Shakene n\sk
+ \zchar{14}{\bs Shakenw}\Shakenw n\sk\en
+\stoppiece\medskip
+%
+% again
+%
+\contpiece
+\NOtes\zchar9{\bs metron}\zchar{13}{\metron\qu{99}}\sk\en
+\setvoltabox1\bar
+\NOtes\loffset2{\zchar{17}{\bs setvoltabox}}\en
+\setvolta2\setendvolta\rightrepeat
+\NOtes\loff{\zchar{17}{\bs setvolta}}\loff{\zchar{20}{\bs setendvolta}}\en
+\doublebar
+\notes\zchar{17}{\kern-\afterruleskip\bs coda}\coda n\en\bar
+\notes\zchar{17}{\kern-\afterruleskip\bs Coda}\Coda n\en
+\NOtes
+ \zchar{17}{\bs segno}\segno n\sk
+ \zchar{17}{\kern-3\Interligne\bs Segno}\Segno\hsk
+ \zchar{17}{\bs caesura}\sk\caesura
+ \zchar{17}{\bs cbreath}\cbreath\sk
+\multnoteskip{.66}%
+ \zchar{17}{\bs PED}\PED\sk
+ \zchar{17}{\bs sPED}\sPED\sk
+ \zchar{17}{\bs DEP}\DEP\sk
+ \zchar{17}{\bs sDEP}\sDEP\sk\en
+\stoppiece\medskip
+%
+% and again ...
+%
+\contpiece
+\Notes
+ \zchar{17}{\bs fermataup}\fermataup l%
+ \zchar{-8}{\bs fermatadown}\fermatadown f{\stemlength3\ql i}%
+ \zchar{13}{\bs Fermataup}\Fermataup l%
+ \zchar{-4}{\kern8pt\bs Fermatadown}\Fermatadown f\wh i%
+ \loff{\zchar{17}{\bs arpeggio d5}}\arpeggio d5\sk
+\multnoteskip{.66}%
+ \loff{\zchar{13}{\bs bracket}}\bracket e{10}\zq n\ql e\en
+\notes\stemlength3%
+ \zchar{17}{\bs uptrio}\uptrio{11}16\ql l\ql n\bsk\bsk
+ \zchar{-8}{\bs downtrio}\downtrio{-5}17\qu c\qu e\en
+\Notes
+ \zchar{17}{\bs octfinup}\octfinup n{.8}%
+ \zchar{-4}{\bs octfindown}\octfindown K{.8}\sk\hsk
+ \zchar{17}{\bs slide$^5$}%
+ \slide i58\slide i57\slide i56\slide i55\slide i54%
+ \slide i53\slide i52\slide i51\slide i5{-1}%
+ \slide i5{-2}\slide i5{-3}\slide i5{-4}\slide i5{-5}%
+ \slide i5{-6}\slide i5{-7}\slide i5{-8}\sk\en
+\leftrepeat
+\Notes
+ \loffset2{\zchar{-4}{\bs leftrepeat}}%
+ \boxitsep=2pt\zchar{17}{\bs boxit A}\zchar9{\boxit A}\en
+\leftrightrepeat
+\Notes
+ \loffset2{\zchar{-8}{\bs leftrightrepeat}}%
+ \zchar{17}{\bs circleit B}\uptext{\circleit B}\en
+\rightrepeat
+\NOtes
+ \loffset2{\zchar{-4}{\bs rightrepeat}}\en
+\endpiece\endmuflex\eject\end
diff --git a/macros/musixtex/tex/musixslu.tex b/macros/musixtex/tex/musixslu.tex
new file mode 100644
index 0000000000..86a69982f4
--- /dev/null
+++ b/macros/musixtex/tex/musixslu.tex
@@ -0,0 +1,4 @@
+\errmessage{Musixslu.tex does not exist. Remove any reference to musixslu.tex
+or \noexpand\input musixslu in your source files!}
+\endinput
+
diff --git a/macros/musixtex/tex/musixsqr.tex b/macros/musixtex/tex/musixsqr.tex
new file mode 100644
index 0000000000..4a480cca56
--- /dev/null
+++ b/macros/musixtex/tex/musixsqr.tex
@@ -0,0 +1,3 @@
+\errmessage{musixsqr.tex has been removed. Use the
+\noexpand\geometricskipscale\space command.}
+\endinput
diff --git a/macros/musixtex/tex/musixste.tex b/macros/musixtex/tex/musixste.tex
new file mode 100644
index 0000000000..7741e4b974
--- /dev/null
+++ b/macros/musixtex/tex/musixste.tex
@@ -0,0 +1,35 @@
+
+\def\explainstr#1{% #1 = 0 standard explanation; #1 = 1 TeX-ish expl.
+\ifnum #1>0 \def\bslstr##1{$\backslash$##1} \else\def\bslstr##1{} \fi
+$$\vbox{
+\halign{ ## \quad & ## & ## \hfill & ## \hfill & ## \hfill & ## \hfill \cr
+\ifnum #1=1 & & Explication des signes & Explanation of the signs & Zeichenerkl\"arung & Jelek magyar\'azata \cr \fi
+\ifnum #1=0 & & {\bf Explication des signes} & {\bf Explanation of the signs} & {\bf Zeichenerkl\"arung} & {\bf Jelek magyar\'azata} \cr \fi
+\cr
+ \AB & \bslstr{AB} & Tirez l'archet & down-bow & Abstrich & Lefel\'e \cr
+\ifnum #1>0 \downbow & \bslstr{downbow} & Tirez l'archet & down-bow & Abstrich & Lefel\'e \cr \fi
+ \AUF & \bslstr{AUF} & Poussez l'archet & up-bow & Aufstrich & F\"olfel\'e \cr
+\ifnum #1>0 \upbow & \bslstr{upbow} & Poussez l'archet & up-bow & Aufstrich & F\"olfel\'e \cr \fi
+\cr
+ \SP & \bslstr{SP} & A la pointe & at the top & An der Spitze & Cs\'ucsn\'al \cr
+ \FR & \bslstr{FR} & Au talon & at the nut & Am Frosch & K\'ap\'an\'al \cr
+\cr
+ \GB & \bslstr{GB} & Tout l'archet & whole bow & Ganzer Bogen & Eg\'esz von\'oval \cr
+\ifnum #1>0 \Gb & \bslstr{Gb} & Tout l'archet & whole bow & Ganzer Bogen & Eg\'esz von\'oval \cr \fi
+ \UH & \bslstr{UH} & La moiti\'e inf\'erieure ... & lower half & Untere H\"alfte & A von\'o als\'o fele \cr
+\ifnum #1>0 \Uh & \bslstr{Uh} & La moiti\'e inf\'erieure ... & lower half & Untere H\"alfte & A von\'o als\'o fele \cr \fi
+ \OH & \bslstr{OH} & La moiti\'e sup\'erieure ... & upper half & Obere H\"alfte & A von\'o fels\H{o} fele \cr
+\ifnum #1>0 \Oh & \bslstr{Oh} & La moiti\'e sup\'erieure ... & upper half & Obere H\"alfte & A von\'o fels\H{o} fele \cr \fi
+ \MI & \bslstr{MI} & Au milieu ... & middle & In der Mitte & K\"oz\'epen \cr
+\ifnum #1>0 \Mi & \bslstr{Mi} & Au milieu ... & middle & In der Mitte & K\"oz\'epen \cr \fi
+ \UD & \bslstr{UD} & Le premier tiers ... & lower third & Unteres Drittel & A von\'o als\'o harmada \cr
+\ifnum #1>0 \Ud & \bslstr{Ud} & Le premier tiers ... & lower third & Unteres Drittel & A von\'o als\'o harmada \cr \fi
+ \OD & \bslstr{OD} & Le troisi\`eme tiers ... & upper third & Oberes Drittel & A von\'o fels\H{o} harmada \cr
+\ifnum #1>0 \Od & \bslstr{Od} & Le troisi\`eme tiers ... & upper third & Oberes Drittel & A von\'o fels\H{o} harmada \cr \fi
+ & & \hfill ... de l'archet \cr
+\cr
+ \Pizz & \bslstr{Pizz} & Pincez avec la main & left hand pizzicato & Pizzicato der linken & piccikat\'o bal k\'ezzel \cr
+ & & gauche & & Hand \cr
+ \Tr & \bslstr{Tr} & (ou trille) & (or trille) & (oder Triller) & (vagy trilla) \cr
+}}$$}
+
diff --git a/macros/musixtex/tex/musixstf.tex b/macros/musixtex/tex/musixstf.tex
new file mode 100644
index 0000000000..a73cf021ff
--- /dev/null
+++ b/macros/musixtex/tex/musixstf.tex
@@ -0,0 +1,28 @@
+% musixstr.ref
+
+\input musixstr
+\input musixste
+
+\parindent0pt\nopagenumbers
+
+\def\T#1{\zcharnote g{#1}\qa d}
+\def\Sk#1{\off{0.#1\noteskip}}
+
+\centerline{\bigfont MusiXSTRings}\smallskip
+
+\nostartrule\def\nbinstruments{1}\generalsignature{0}
+\startmuflex\startpiece\transpose=7%
+\NOtes\Sk5%
+ \T{\downbow}\T{\AB}\T{\upbow}\T{\AUF}%
+ \T{\SP}\T{\FR}\T{\GB}\T{\Gb}\T{\UH}\T{\Uh}\T{\OH}%
+ \T{\Oh}\T{\MI}\T{\Mi}\T{\UD}\T{\Ud}\T{\OD}\T{\Od}%
+ \T{\Pizz}\T{\Tr}\en
+\stoppiece\endmuflex
+
+\bigskip{\bf$\backslash$explainstr1}\smallskip\explainstr1
+\bigskip{\bf$\backslash$explainstr0}\smallskip\explainstr0
+
+\vfill\eject
+
+\bye
+
diff --git a/macros/musixtex/tex/musixstr.tex b/macros/musixtex/tex/musixstr.tex
new file mode 100644
index 0000000000..ac23af18f4
--- /dev/null
+++ b/macros/musixtex/tex/musixstr.tex
@@ -0,0 +1,47 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+\immediate\write16{MUsiXSTRingaccents T.57\space<6 September 1996>}%
+
+% accents for strings by Werner Icking (Werner.Icking@gmd.de)
+
+\let\AB\downbow
+\let\AUF\upbow
+\def\SP{$\mathrel\triangleleft\joinrel\mid$}
+\def\FR{$\mapstochar\mathrel=\joinrel\mid$}
+\def\GB{$\longleftrightarrow$}
+\def\Gb{$\leftrightarrow$}
+\def\UH{$\longleftarrow$}
+\def\Uh{$\leftarrow$}
+\def\OH{$\longrightarrow$}
+\def\Oh{$\rightarrow$}
+\def\MI{$\mapstochar\relbar\joinrel\relbar\joinrel\mapstochar$}
+\def\Mi{$\mapstochar\relbar\joinrel\mapstochar$}
+\def\UD{$\longleftarrow\joinrel\mapstochar$}
+\def\Ud{$\leftarrow\joinrel\mapstochar$}
+\def\OD{$\mapstochar\longrightarrow$}
+\def\Od{$\mapstochar\rightarrow$}
+
+
+
+
+\def\Pizz{\kern-.3pt{\sevenrm+}}
+\let\Tr\Pizz
+
+\endinput
+
diff --git a/macros/musixtex/tex/musixsty.tex b/macros/musixtex/tex/musixsty.tex
new file mode 100644
index 0000000000..794a7ce336
--- /dev/null
+++ b/macros/musixtex/tex/musixsty.tex
@@ -0,0 +1,388 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+\ifx\undefined\Tenpoint \else \endinput\fi
+
+\immediate\write16{MusiXtextSTYle T.123\space<04 March 2016>}%
+
+% modified by RDT to be independent of Computer Modern (other than Math fonts)
+% RDT: added \headline{..} in \maketitle
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+\edef\catcode@gt{\the\catcode`\>}\catcode`\>=12
+\edef\catcode@lt{\the\catcode`\<}\catcode`\<=12
+
+% non musical procedures used in typesetting the non-musical
+% texts together with musictex
+
+% eight point math fonts
+
+\font\eighti=cmmi8 \skewchar\eighti='177
+\font\eightsy=cmsy8 \skewchar\eightsy='60
+%
+% nine point math fonts
+%
+\font\ninei=cmmi9 \skewchar\ninei='177
+\font\ninesy=cmsy9 \skewchar\ninesy='60
+%
+% eleven point math fonts (RDT: not used?)
+%
+\font\eleveni=cmmi10 scaled \magstephalf \skewchar\eleveni='177
+\font\elevensy=cmsy10 scaled \magstephalf \skewchar\elevensy='60
+%
+% twelve point math fonts
+%
+\font\twelvei=cmmi12 \skewchar\twelvei='177
+\font\twelvesy=cmsy10 scaled \magstep1 \skewchar\twelvesy='60
+%
+% fourteen point math fonts
+%
+\font\frti=cmmi12 scaled \magstep1 \skewchar\frti='177
+\font\frtsy=cmsy10 scaled \magstep2 \skewchar\frtsy='60
+%
+% seventeen point math fonts
+%
+\font\svti=cmmi12 scaled \magstep2 \skewchar\svti='177
+\font\svtsy=cmsy10 scaled \magstep3 \skewchar\svtsy='60
+%
+% twenty point math fonts
+%
+\font\twtyi=cmmi12 scaled \magstep3 \skewchar\twtyi='177
+\font\twtysy=cmsy10 scaled \magstep4\skewchar\twtysy='60
+%
+% twenty five point math fonts
+%
+\font\twfvi=cmmi12 scaled \magstep4 \skewchar\twfvi='177
+\font\twfvsy=cmsy10 scaled \magstep5 \skewchar\twfvsy='60
+%
+%
+% SEVERAL DIFFERENT POINT SIZES
+%
+\def\Twfvpoint{\normalbaselineskip=30pt
+ \def\rm{\fam0\twfvrm}%
+ \def\it{\fam\itfam\twfvit}%
+ \def\sl{\fam\slfam\twfvsl}%
+ \def\bf{\fam\bffam\twfvbf}%
+ \def\smc{\twfvrm}%
+ \def\mit{\fam 1}%
+ \def\cal{\fam 2}%
+ \textfont0=\twfvrm \scriptfont0=\twtyrm \scriptscriptfont0=\svtrm
+ \textfont1=\twfvi \scriptfont1=\twtyi \scriptscriptfont1=\svti
+ \textfont2=\twfvsy \scriptfont2=\twtysy \scriptscriptfont2=\svtsy
+ \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
+ \textfont\itfam=\twfvit \scriptfont\itfam=\twtyit
+ \textfont\slfam=\twfvsl \scriptfont\slfam=\twtysl
+ \textfont\bffam=\twfvbf \scriptfont\bffam=\twtybf
+ \scriptscriptfont\bffam=\twtybf
+ \setbox\strutbox=\hbox{\vrule height 22pt depth 8pt width 0pt}%
+ \def\tt{\twfvtt}\normalbaselines\rm
+}
+\def\twfvpoint{\Twfvpoint}
+%
+\def\Twtypoint{\normalbaselineskip=25pt
+ \def\rm{\fam0\twtyrm}%
+ \def\it{\fam\itfam\twtyit}%
+ \def\sl{\fam\slfam\twtysl}%
+ \def\bf{\fam\bffam\twtybf}%
+ \def\smc{\twtyrm}%
+ \def\mit{\fam 1}%
+ \def\cal{\fam 2}%
+ \textfont0=\twtyrm \scriptfont0=\svtrm \scriptscriptfont0=\frtrm
+ \textfont1=\twtyi \scriptfont1=\svti \scriptscriptfont1=\frti
+ \textfont2=\twtysy \scriptfont2=\svtsy \scriptscriptfont2=\frtsy
+ \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
+ \textfont\itfam=\twtyit \scriptfont\itfam=\svtit
+ \textfont\slfam=\twtysl \scriptfont\slfam=\svtsl
+ \textfont\bffam=\twtybf \scriptfont\bffam=\svtbf
+ \scriptscriptfont\bffam=\svtbf
+ \setbox\strutbox=\hbox{\vrule height 18pt depth 7pt width 0pt}%
+ \def\tt{\twtytt}\normalbaselines\rm}
+\def\twtypoint{\Twtypoint}
+%
+\def\Svtpoint{\normalbaselineskip=21pt
+ \def\rm{\fam0\svtrm}%
+ \def\it{\fam\itfam\svtit}%
+ \def\sl{\fam\slfam\svtsl}%
+ \def\bf{\fam\bffam\svtbf}%
+ \def\smc{\svtrm}%
+ \def\mit{\fam 1}%
+ \def\cal{\fam 2}%
+ \textfont0=\svtrm \scriptfont0=\frtrm \scriptscriptfont0=\twelverm
+ \textfont1=\svti \scriptfont1=\frti \scriptscriptfont1=\twelvei
+ \textfont2=\svtsy \scriptfont2=\frtsy \scriptscriptfont2=\twelvesy
+ \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
+ \textfont\itfam=\svtit \scriptfont\itfam=\frtit
+ \textfont\slfam=\svtsl \scriptfont\slfam=\frtsl
+ \textfont\bffam=\svtbf \scriptfont\bffam=\frtbf
+ \scriptscriptfont\bffam=\frtbf
+ \setbox\strutbox=\hbox{\vrule height 14.5pt depth 6.5pt width 0pt}%
+ \def\tt{\svttt}\normalbaselines\rm}
+\def\svtpoint{\Svtpoint}
+%
+\def\Frtpoint{\normalbaselineskip=17pt
+ \def\rm{\fam0\frtrm}%
+ \def\it{\fam\itfam\frtit}%
+ \def\sl{\fam\slfam\frtsl}%
+ \def\bf{\fam\bffam\frtbf}%
+ \def\smc{\frtrm}%
+ \def\mit{\fam 1}%
+ \def\cal{\fam 2}%
+ \textfont0=\frtrm \scriptfont0=\twelverm \scriptscriptfont0=\eightrm
+ \textfont1=\frti \scriptfont1=\twelvei \scriptscriptfont1=\eighti
+ \textfont2=\frtsy \scriptfont2=\twelvesy \scriptscriptfont2=\eightsy
+ \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
+ \textfont\itfam=\frtit \scriptfont\itfam=\twelveit
+ \textfont\slfam=\frtsl \scriptfont\slfam=\twelvesl
+ \textfont\bffam=\frtbf \scriptfont\bffam=\twelvebf
+ \scriptscriptfont\bffam=\twelvebf
+ \setbox\strutbox=\hbox{\vrule height 12pt depth 5pt width 0pt}%
+ \def\tt{\frttt}\normalbaselines\rm}
+\def\frtpoint{\Frtpoint}
+%
+\def\Twlpoint{\normalbaselineskip=14pt
+ \def\rm{\fam0\twelverm}%
+ \def\it{\fam\itfam\twelveit}%
+ \def\sl{\fam\slfam\twelvesl}%
+ \def\bf{\fam\bffam\twelvebf}%
+ \def\smc{\twelverm}%
+ \def\mit{\fam 1}%
+ \def\cal{\fam 2}%
+ \textfont0=\twelverm \scriptfont0=\tenrm \scriptscriptfont0=\eightrm
+ \textfont1=\twelvei \scriptfont1=\teni \scriptscriptfont1=\eighti
+ \textfont2=\twelvesy \scriptfont2=\tensy \scriptscriptfont2=\eightsy
+ \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
+ \textfont\itfam=\twelveit \scriptfont\itfam=\tenit
+ \textfont\slfam=\twelvesl \scriptfont\slfam=\tensl
+ \textfont\bffam=\twelvebf \scriptfont\bffam=\tenbf
+ \scriptscriptfont\bffam=\tenbf
+ \setbox\strutbox=\hbox{\vrule height 10pt depth 4pt width 0pt}%
+ \def\tt{\twelvett}\normalbaselines\rm}
+\def\twlpoint{\Twlpoint}
+\def\twelvepoint{\Twlpoint}
+%
+\def\Tenpoint{\normalbaselineskip\tw@lv@\p@
+ \def\rm{\fam\z@\tenrm}%
+ \def\it{\fam\itfam\tenit}%
+ \def\sl{\fam\slfam\tensl}%
+ \def\bf{\fam\bffam\tenbf}%
+ \let\smc\tenrm
+ \def\mit{\fam\@ne}%
+ \def\cal{\fam\tw@}%
+ \textfont0\tenrm \scriptfont0\eightrm \scriptscriptfont0\eightrm
+ \textfont1\teni \scriptfont1\eighti \scriptscriptfont1\eighti
+ \textfont2\tensy \scriptfont2\eightsy \scriptscriptfont2\eightsy
+ \textfont3\tenex \scriptfont3\tenex \scriptscriptfont3\tenex
+ \textfont\itfam\tenit \scriptfont\itfam=\eightit
+ \textfont\slfam\tensl \scriptfont\slfam=\eightsl
+ \textfont\bffam\tenbf \scriptfont\bffam\eightbf
+ \scriptscriptfont\bffam\eightbf
+ \setbox\strutbox\hbox{\vrule\@height8\h@lf\p@\@depth3\h@lf\p@\@width\z@}%
+ \let\tt\tentt \normalbaselines\rm}
+\let\tenpoint\Tenpoint
+
+\def\Eightpoint{\normalbaselineskip\t@n\p@
+ \def\rm{\fam\z@\eightrm}%
+ \def\it{\fam\itfam\eightit}%
+ \def\sl{\fam\slfam\eightsl}%
+ \def\bf{\fam\bffam\eightbf}%
+ \def\tt{\eighttt}
+ \def\mit{\fam\@ne}%
+ \def\cal{\fam\tw@}%
+ \textfont0\eightrm \scriptfont0\eightrm \scriptscriptfont0\eightrm
+ \textfont1\eighti \scriptfont1\eighti \scriptscriptfont1\eighti
+ \textfont2\eightsy \scriptfont2\eightsy \scriptscriptfont2\eightsy
+ \textfont3\tenex \scriptfont3\tenex \scriptscriptfont3\tenex
+ \textfont\itfam\eightit
+ \textfont\slfam\eightsl
+ \textfont\bffam\eightbf \scriptfont\bffam\eightbf
+ \scriptscriptfont\bffam\eightbf
+ \setbox\strutbox\hbox{\vrule\@height\s@v@n\p@\@depth\thr@@\p@\@width\z@}%
+ \normalbaselines\rm}
+\def\eightpoint{\Eightpoint}
+%
+\def\Ninepoint{\normalbaselineskip=10pt
+ \def\rm{\fam0\ninerm}%
+ \def\it{\fam\itfam\nineit}%
+ \def\sl{\fam\slfam\ninesl}%
+ \def\bf{\fam\bffam\ninebf}%
+ \def\mit{\fam 1}%
+ \def\cal{\fam 2}%
+ \textfont0=\ninerm \scriptfont0=\ninerm \scriptscriptfont0=\ninerm
+ \textfont1=\ninei \scriptfont1=\ninei \scriptscriptfont1=\ninei
+ \textfont2=\ninesy \scriptfont2=\ninesy \scriptscriptfont2=\ninesy
+ \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
+ \textfont\itfam=\nineit \scriptfont\itfam=\nineit
+ \textfont\slfam=\ninesl \scriptfont\slfam=\ninesl
+ \textfont\bffam=\ninebf \scriptfont\bffam=\ninebf
+ \scriptscriptfont\bffam=\ninebf
+ \setbox\strutbox=\hbox{\vrule height 7pt depth 3pt width 0pt}%
+ \def\tt{\ninettt}\normalbaselines\rm}
+\def\ninepoint{\Ninepoint}
+
+% GENERAL FOOTNOTES
+
+\newcount\footmarkcount
+
+\def\resetfootnote{\global\footmarkcount\z@ }
+\def\footmarknumber{\raise\smallvalue ex\hbox{%
+ \eightpoint\rm\the\footmarkcount}}
+
+\def\Footnote#1{\global\advance\footmarkcount\@ne
+ \footnote{\footmarknumber}{#1}}
+
+% \TeX book footnote
+% En cas de panique: couper en deux (une seule note autorisee)
+
+\def\markfootnote{{\advance\footmarkcount\@ne \footmarknumber}}
+
+\def\realfootnote#1{\global\advance\footmarkcount\@ne
+ \vfootnote{{\footmarknumber}#1}}
+
+% to enable inserting different \hsize (two columns case)
+\let\footnotehsize\empty
+
+\def\vfootnote#1{\insert\footins\bgroup\parskip\z@\eightpoint
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox \advance\splittopskip\p@
+ \splitmaxdepth\dp\strutbox \floatingpenalty20000
+ \leftskip\z@ \rightskip\z@
+ \spaceskip\z@ \xspaceskip\z@
+ \eightpoint\footnotehsize\noindent{#1}\footstrut\futurelet\next\fo@t}
+
+\def\footnoterule{\vskip-\thr@@\p@\hrule\@width2truein \vskip 2.6\p@}
+
+\def\aujourdhui{\space\number\day\space%
+ \ifcase\month\or janvier\or f\'evrier\or mars\or avril\or mai\or juin\or
+ juillet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi
+ \space\number\year}
+\def\today{\space%
+ \ifcase\month\or January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day,\space\number\year}
+\def\cenboxit#1{\centerline{\boxit{#1}}}
+\def\Item{\medskip\item}
+
+\newdimen\theslant
+\def\fup#1{\raise 0.8ex\hbox{\theslant=\fontdimen1\the\font\kernm.03em\kern \theslant\the\scriptfont\fam #1}}
+
+\def\umero{\fup{o}}
+\def\ieme{\fup{e}}
+\def\ier{\fup{er}}
+\let\titremorceau\empty
+\def\title#1{\def\titremorceau{#1}}
+\def\shorttitle{\title}
+\def\subtitle#1{\def\subt@itremorceau{#1}}
+\let\headt@itremorceau\undefined
+\def\headtitle#1{\def\headt@itremorceau{#1}}
+\def\fulltitle{\headtitle}
+\let\othert@itremorceau\empty
+\def\othermention#1{\def\othert@itremorceau{#1}}
+
+\let\headl@ne\undefined
+\def\headline#1{\def\headl@ne{#1}}
+
+\let\s@hortauthor\empty
+\def\shortauthor#1{\def\s@hortauthor{(#1)}}
+
+\def\fullauthor#1{\def\f@ullauthor{#1}}
+\def\author{\fullauthor}
+
+\newif\ifcopyright
+
+\def\outmorceau{\shipout\vbox{\vbox to \vsize{\vss\pagecontents\vss}\line{%
+\ifodd\pageno\sl \titremorceau\ \s@hortauthor
+\ifcopyright\rm$\copyright$\fi\hss \number\pageno
+\else\rm\number\pageno\hss\sl \titremorceau\ \s@hortauthor
+\ifcopyright\rm$\copyright$\fi\fi}}%
+ \global\advance\count0 by 1\relax
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi}%
+
+\output{\outmorceau}
+
+\def\maketitle{%
+\ifx\headl@ne\undefined\else\line{\headl@ne}\bigskip\fi% for version 123 RDT
+\centerline{\BIGfont \ifx\headt@itremorceau\undefined
+ \titremorceau\else\headt@itremorceau\fi}
+\medskip
+\ifx\subt@itremorceau\undefined\else
+ \centerline{\sl \subt@itremorceau}
+\medskip
+\fi
+
+
+\hbox to \hsize{\vtop{\def\\{\hss\egroup\hbox to 0.5\hsize\bgroup\relax}\relax
+ \hbox to 0.5\hsize
+ \bgroup\othert@itremorceau\hss
+ \egroup
+ }\hss
+ \vtop{\def\\{\egroup\hbox to 0.5\hsize\bgroup\relax\hss}\relax
+ \hbox to 0.5\hsize
+ \bgroup\hss\f@ullauthor
+ \egroup
+ }}
+\bigskip
+}
+
+
+\def\rectoverso#1{%
+\def\outmorceau{\shipout\hbox{\null\ifodd\pageno\kern #1\relax
+ \else\kern -#1\relax
+ \fi
+ \vbox{\vbox to \vsize{\vss\pagecontents\vss}\line{%
+\ifodd\pageno\sl \titremorceau\ \s@hortauthor
+\ifcopyright\rm$\copyright$\fi\hss \number\pageno
+\else\rm\number\pageno\hss\sl \titremorceau\ \s@hortauthor
+\ifcopyright\rm$\copyright$\fi\fi}}}%
+ \global\advance\count0 by 1\relax
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi}%
+
+\output{\outmorceau}}
+
+
+
+\catcode`\>=\catcode@gt
+\catcode`\<=\catcode@lt
+\catcode`\@=\catcodeat
+
+%%% A4 (210mm x 297mm):
+\hsize=190mm %%% adjust to increase/decrease printer margins
+\vsize=270mm %%% adjust to increase/decrease printer margins
+\hoffset=210mm\advance\hoffset-\hsize\divide\hoffset2
+\advance\hoffset-1.0in % TeX convention
+\voffset=297mm\advance\voffset-\vsize\divide\voffset2
+\advance\voffset-1.0in % TeX convention
+
+%%% letter-size (8.5in x 11.0in):
+%\hsize=7.5in %%% adjust to increase/decrease printer margins
+%\vsize=10.0in %%% adjust to increase/decrease printer margins
+%\hoffset=8.5in\advance\hoffset-\hsize\divide\hoffset2
+%\advance\hoffset-1.0in % TeX convention
+%\voffset=11.0in\advance\voffset-\vsize\divide\voffset2
+%\advance\voffset-1.0in % TeX convention
+
+%%% To determine the *minimal* margins supported by your
+%%% printer and check for printer mis-alignment, process
+%%% testpage.tex with LaTeX and print the result.
+
+\tenpoint
+
+%%%%%%% adjust here for a non-centering printer %%%%%%%%
+%\advance\hoffset 0mm
+%\advance\voffset 0mm
+
+\endinput
diff --git a/macros/musixtex/tex/musixtex.tex b/macros/musixtex/tex/musixtex.tex
new file mode 100644
index 0000000000..55382f5dfe
--- /dev/null
+++ b/macros/musixtex/tex/musixtex.tex
@@ -0,0 +1,5707 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+%
+\ifx\undefined\startpiece \else \endinput \fi
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+\ifx\makeatletter\undefined\def\makeatletter{\catcode`\@=11\relax}\fi
+\ifx\makeatother\undefined\def\makeatother{\catcode`\@=12\relax}\fi
+
+\def\mufl@x{0.83}%
+\def\mxmajorvernumber{1}
+\def\mxminorvernumber{29}
+\def\mxvernumber{\mxmajorvernumber\mxminorvernumber}% make it possible to compare with \ifnum
+\def\mxversuffix{}%
+\edef\mxversion{\mxmajorvernumber.\mxminorvernumber\mxversuffix}
+\def\mxdate{2018-08-04}
+
+\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}%
+\everyjob{\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}}%
+
+
+% version 1.29
+
+% defined \tabfnt, \tabcleffnt, \tabstringfnt, \tab etc. to support tablature
+
+% version 1.28
+
+% defined
+% \z[left|right|leftright]repeat, for use *within* a bar
+% \zz...repeat, to force to the end of a system
+% corrected definition of \C@Inter for \nblines < 4
+
+% version 1.27
+
+% introduced \meterN
+% eliminated \ds@oup
+% introduced \nqqb \nqqh \nqqqb \nqqqh abbreviations and
+% synonyms \nqql \nqqu \nqqql \nqqqu
+% introduced \hap, \happ analogous to \qap, \qapp
+% introduced \hbsk analogous to \hsk
+% introduced \bqsk, \bhsk, \btsk analogous to \qsk, \hqsk, \tqsk
+% introduced \xxtuplet
+
+% version 1.26
+
+% deleted spurious definition in \resetlayout and
+% spurious space in definition of \interfacteur...
+
+% version 1.25
+
+% included a "dummy" tuplet.tex in the distribution
+% added \ignorespaces in musixltx.tex
+% defined \qap, \qapp, \tqsk
+
+% version 1.24
+
+% preserve changes to \transpose in an hboxed tremolo command
+% test that musixtex.tex has already been loaded in some extensions:
+% musixps, musixec, musixhv, musixplt, musixtmr, musixppff
+% changed from \it to \ppff in several places
+% support new command \setinterstaff{n}{m}
+% define \largenotesize, \Largenotesize
+% correct typos \twtybf[g] \svtbf[g]
+
+% version 1.23
+
+% added \xtr and \ptr ornaments
+% adjusted spacing of \tr
+% corrected definition of \C@Inter for \nblines > 6
+
+% version 1.22
+
+% bi and sc font definitions added; sl and tt definitions for musixsty moved
+% explicit font choices for \txtfont replaced by generic commands \smalltype\it etc.
+% \pdlud \halfwidthbigwedge and \raise-height font-dependent
+% \cbreath and \zbreath use \BIGtype rather than \BIGfont
+
+
+% version 1.21
+
+% RDT adjusted the offsets and/or vertical positions for some tremolos
+% RDT moved \lastbarpos\lin@pos after calls to \Writ@meters
+% to correct \centerbar positioning
+% RDT copied the definition of \Hpause from musixlit.tex
+% RDT introduced \Changeclefs, \cHpause and \centerHpause
+% RDT replaced \smalltype\it by \txtfont in octave clef commands
+% RDT moved definitions of \txtfont into \comput@fonts
+% RDT added support for piano-pedal bracket notation
+
+% version 1.20
+
+% RDT re-defined tremolo commands to allow for numerical pitches;
+% use of \raise and \hbox suggested by Jean-Pierre Colon
+
+% version 1.19:
+
+% RDT corrected typos in the definition of \comput@fonts
+% affecting ppff fonts for \Largemusicsize
+% RDT introduced definitions for tremolo commands \trml, \trmu, etc.
+% RDT turned off lyrics for \metron and \metronequiv notes
+
+% version 1.18:
+
+% RDT added definitions of \raggedstoppiece and \slide from musixext.tex
+% RDT increased the length of beam stems (adapted from J.-P. Coulon)
+
+% version 1.17:
+
+% RDT re-defined \txtfont for non-normal staff sizes
+% RDT defined \tinyppff and \ppfftwelve, and re-defined \ppff to be staffsize dependent
+% RDT introduced \tqqb \tqqh \tqqqb \tqqqh abbreviations
+% and synonyms \tqql \tqqu \tqqql \tqqqu
+% RDT introduced ornaments \tr, \trt
+% RDT re-defined \triolet to be consistent with musixdoc (prints \txt, not nec. 3)
+% RDT introduced \cpause etc. and corrected definitions of \centerpause etc.
+% RDT introduced double-dotted rests \qppp, \dspp, \qspp, etc.
+
+% version 1.16:
+
+% RDT corrected the definitions of \nnotes and \nnnotes
+
+% HM corrected the definitions for cautionary small accidentals
+
+% RDT added \check@staff ... \fi to \@qa h, \@mca, \hs, \qqs
+% so that \qa, \ca, \ha, etc. can be "hidden" using \setstaffs{n}{0}
+
+% RDT incorporated tuplet.tex (approved by George Sicherman)
+% and introduced \txtfont to allow changing size or style
+
+% RDT introduced
+% \qqsk, a one-quarter notehead skip
+% \tqu and \tql, synonyms for \tqh and \tqb
+% \ztqu and \ztql, synonyms for \ztqh and \ztqb
+% \hpp, \qpp, \dsp, \qsp, \hsp, \qqsp for pointed rests
+% \nnotes, \nnnotes: 1.6 and 1.28 \elemskip spacing
+% \zcn, \ccn, \lcn, synomyms for \zcharnote etc.
+
+% RDT incorporated curly.tex (approved by Mthimkhulu Molekwa)
+
+% RDT modernized the treatment of text fonts
+% meterfonts must be bf, even if titling fonts are rm or sc
+% added dynamic-mark macros \sfz \sfzp
+
+% version 1.15:
+
+% moved out:
+% - 1/128th beams -> musixbm
+% - triple pointed notes -> musixtri
+
+% and shrinked the memory consumption
+
+%++ickd 19Sep1997: with help of William P. Houser introduced dotted slurs.
+% Changes marked with +ickd for added single lines, -ickd for replaced
+%++ickd single lines, ++ickd...++ickd for added blocks
+
+%++simick 04Dec2000: Don Simons and Werner Icking made some improvements
+% to volta-processing and centerbar processing the changes are
+% marked with +simick for added single lines, -simick for
+%++simick replaced lines and ++simick...++simick for added blocks
+
+% Hiroaki, May2010, T.115: change register allocation codes into new ones
+% which enables >12 elements. Search the string "version 1.15" for details.
+%
+
+% TeXperts may want to change the next
+
+% PARAMETER DIFFERENT THAN PLAIN
+
+\showboxdepth=0
+\showboxbreadth=0
+
+\ifx\undefined\documentstyle % -> []plain.tex
+ \parindent0pt
+ \hoffset-15.4mm
+ \voffset-10mm
+ \hsize190mm
+ \vsize260mm
+\fi
+
+%%% from LaTeX
+% The following definitions save token space. E.g., using \@height
+% instead of height saves 5 tokens at the cost in time of one macro
+% expansion.
+
+\def\@height{height}
+\def\@depth{depth}
+\def\@width{width}
+
+%%% also removed 'by', '='
+
+\def\@to{to}
+\def\p@ne{.1}
+\def\qu@rt{.25}
+\def\h@lf{.5}
+\def\p@seven{.7}
+
+%%%from plain
+% To make the macros more efficient in time and space,
+% several constant values are declared here as control sequences
+% If they were changed, anything could happen; so they are private symbols
+
+%\chardef\active=13
+%\chardef\&=`\& -> 38
+%\chardef\#=`\# -> 35
+%\chardef\$=`\$ -> 36
+% Nomenclature: '@' means most times 'e' or seperator, sometimes 'o','a'
+
+\chardef\f@ur=4
+\chardef\fiv@=5
+\chardef\si@=6
+\chardef\s@v@n=7
+\chardef\@ight=8
+\chardef\nin@=9
+\chardef\t@n=10
+\chardef\@l@v@n=11
+\chardef\tw@lv@=12
+\chardef\fourt@@n=14
+\chardef\fiv@t@@n=15
+\chardef\tw@nty=20
+\chardef\@xxiii=23
+\chardef\@xxv=25
+\chardef\@xxiv=24
+\chardef\@xxvi=26
+\chardef\@xxvii=27
+\chardef\@xxix=29
+\chardef\@xxxii=32
+\chardef\@xl=40
+\chardef\@xli=41
+\chardef\@xlv=45
+\chardef\@l=50
+\chardef\@lii=52
+\chardef\@liv=54
+\chardef\@lxxxiii=83
+\chardef\@c=100
+\chardef\@cxv=115
+\chardef\@cxxviii=128
+
+\newif\ifcatcodesmusic
+
+\def\catcodesmusic{\ifcatcodesmusic\relax
+ \else
+ \edef\catcode@gt{\the\catcode`\>}\catcode`\>\tw@lv@
+ \edef\catcode@lt{\the\catcode`\<}\catcode`\<\tw@lv@
+ \edef\catcode@vert{\the\catcode`\|}\catcode`\|\active
+ \edef\catcode@and{\the\catcode`\&}\catcode`\&\active
+ \edef\catcode@excl{\the\catcode`\!}\catcode`\!\tw@lv@
+ \edef\catcode@star{\the\catcode`\*}\catcode`\*\tw@lv@
+ \edef\catcode@pt{\the\catcode`\.}\catcode`\.\tw@lv@
+ \edef\catcode@sc{\the\catcode`\:}\catcode`\:\tw@lv@
+ \let\@@bar\bar
+ \def\bar{\barre}%
+ \fi\catcodesmusictrue}
+
+\catcodesmusic
+
+% MusicTeX + MuFlex -> MusiXTeX
+\def\musixtex{MusiX\TeX}
+
+\def\kernm{\kern-}
+
+%...\let\@wloG=\wlog
+%...\def\wlog#1{}
+
+%%% account registers
+
+% \let\maxinstruments\si@ % [version 1.15] here disabled to avoid conflict
+
+% temporary registers
+
+\newcount\n@i
+\newcount\n@ii
+\newcount\n@iii
+\newcount\n@iv
+\newcount\n@v
+\newcount\n@vi
+\newcount\n@vii
+\newcount\n@viii
+\newcount\count@
+
+\newbox\toks@box
+\newbox\w@rkbox
+\newbox\n@otebox
+
+\newdimen\y@
+\newdimen\y@i
+\newdimen\y@ii
+\newdimen\y@iii
+\newdimen\y@iv
+\newdimen\y@v
+
+% [version 1.15] moved out to the new register allocation code -- start from here --
+% altitude
+% \newskip\k@ii
+% InterNote
+% \newdimen\i@ni
+\def\i@n{\z@} % safety in case of....
+% positions x et z de debut des poutres
+% \newdimen\b@xi \newdimen\b@zi
+% \newdimen\c@xi \newskip\c@zi
+% \newdimen\d@xi \newskip\d@zi
+% \newdimen\e@xi \newskip\e@zi
+% \newdimen\f@xi \newskip\f@zi
+% pentes des poutres ( entier de -9 a +9 )
+% multiplicite des poutres ( de -5 a +5 . 0= inactive )
+% \newcount\b@pi \newcount\b@ni
+% Number of Portees
+% \newcount\n@pi \n@pi\@ne
+% Actual Signs Old Signs
+% \newcount\a@si \newcount\o@si
+% ActualCleftoks
+% \newtoks\a@ci \a@ci={{\z@}{\z@}{\z@}{\z@}}
+% OldCleftoks
+% \newtoks\o@ci
+% MeterToks
+% \newtoks\m@ti
+% Altitude of choir groups
+% \newskip\g@bi
+% Height of choir groups
+% \newskip\g@hi
+
+% [version 1.15] moved out to the new register allocation code -- until here --
+% \let\maxgroups\thr@@ % maximum three groups of instruments or choirs [version 1.15] moved to later, using \setmaxgroups
+\newcount\group@no
+
+%%% [version 1.15] new register allocation code -- start from here --
+%
+% register allocation for use inside \loop...\if...\repeat
+% (only for plain, but no harm even in case of LaTeX)
+\edef\noexpand@newcount{\noexpand\newcount}%
+\edef\noexpand@newdimen{\noexpand\newdimen}%
+\edef\noexpand@newskip{\noexpand\newskip}%
+%\edef\noexpand@newmuskip{\noexpand\newmuskip}% not used
+%\edef\noexpand@newbox{\noexpand\newbox}% not used
+\edef\noexpand@newtoks{\noexpand\newtoks}%
+%\edef\noexpand@newmarks{\noexpand\newmarks}% not used
+%
+% a shortcut for register allocation routines
+\def\roman@c@{\romannumeral\count@}%
+%
+% some registers (i@n, b@x, b@z, c@x, d@x, e@x, s@x, s@Y)
+% should be allocated by \newdimen (for id 0...5) and \newskip (for id 6...11)
+% because T.114 and earlier did so and for the compatibility to Stanislav
+% Kneifl's musixps.tex 0.92a.
+% And again \newdimen (for id>11), because both \dimen and \skip are
+% applicable but \dimen uses less memory in case of >255 on e-TeX.
+\def\noexpand@newdimsk{%
+ \ifnum\count@<7 \let\@@newdimsk=\noexpand@newdimen
+ \else\ifnum\count@<13 \let\@@newdimsk=\noexpand@newskip
+ \else\let\@@newdimsk=\noexpand@newdimen
+ \fi\fi \@@newdimsk}%
+%
+% and some other registers (c@z, d@z, e@z, f@z, g@z)
+% should be allocated by \newskip (for id 0...11) and \newdimen (for id>11)
+% for the same reason of above.
+\def\noexpand@newskdim{%
+ \ifnum\count@<13 \let\@@newskdim=\noexpand@newskip
+ \else \let\@@newskdim=\noexpand@newdimen
+ \fi \@@newskdim}%
+%
+% registers for instrument
+\newdimen\interinstrument % moved from "distance between instruments" to here
+\def\setmaxinstruments#1{%
+ \ifnum#1>\@oldmaxinstruments
+ \chardef\maxinstruments=#1\relax
+ \ifnum#1>\@c
+ \errmessage{The maximum reference number of elements is limited to \the\@c}
+ \chardef\maxinstruments=\@c
+ \fi
+ \count@\@oldmaxinstruments\loop
+ \advance\count@ by\@ne
+ %
+ \expandafter \let \csname interinstrument\roman@c@\endcsname \interinstrument
+ \expandafter\def\csname interfacteur\roman@c@\endcsname{\interfacteur}% RDT 1.26
+ %
+ % altitude
+ \expandafter \noexpand@newskip \csname k@i\roman@c@\endcsname
+ %
+ % InterNote
+ \expandafter \noexpand@newdimsk \csname i@n\roman@c@\endcsname
+ %
+ % beam horizontal positions: x=start, z=end, 8th-64th beams
+ \expandafter \noexpand@newdimsk \csname b@x\roman@c@\endcsname
+ \expandafter \noexpand@newdimsk \csname b@z\roman@c@\endcsname
+ \expandafter \noexpand@newdimsk \csname c@x\roman@c@\endcsname
+ \expandafter \noexpand@newskdim \csname c@z\roman@c@\endcsname
+ \expandafter \noexpand@newdimsk \csname d@x\roman@c@\endcsname
+ \expandafter \noexpand@newskdim \csname d@z\roman@c@\endcsname
+ \expandafter \noexpand@newdimsk \csname e@x\roman@c@\endcsname
+ \expandafter \noexpand@newskdim \csname e@z\roman@c@\endcsname
+ %
+ % pentes des poutres ( entier de -9 a +9 ) (slopes of the beams)
+ % multiplicite des poutres ( de -5 a +5 . 0= inactive ) (multiplicity of the beams)
+ \expandafter \noexpand@newcount \csname b@p\roman@c@\endcsname
+ \expandafter \noexpand@newcount \csname b@n\roman@c@\endcsname
+ %
+ % Number of Portees
+ \expandafter \noexpand@newcount \csname n@p\roman@c@\endcsname
+ \csname n@p\roman@c@\endcsname\@ne
+ %
+ % Actual Signs
+ \expandafter \noexpand@newcount \csname a@s\roman@c@\endcsname
+ %
+ % Old Signs
+ \expandafter \noexpand@newcount \csname o@s\roman@c@\endcsname
+ %
+ % ActualCleftoks
+ \expandafter \noexpand@newtoks \csname a@c\roman@c@\endcsname
+ \csname a@c\roman@c@\endcsname={{\z@}{\z@}{\z@}{\z@}}%
+ %
+ % OldCleftoks
+ \expandafter \noexpand@newtoks \csname o@c\roman@c@\endcsname
+ %
+ % MeterToks
+ \expandafter \noexpand@newtoks \csname m@t\roman@c@\endcsname
+ %
+ % staffsize
+ \expandafter \let \csname staffspacing\roman@c@\endcsname \@ne
+ %
+ % text, lyrics, free positioning of chars
+ \expandafter \let \csname T@R\roman@c@\endcsname \z@
+ %
+ % preset clef symbols
+ \expandafter \let \csname treblec@s\roman@c@\endcsname \z@
+ \expandafter \let \csname altoc@s\roman@c@\endcsname \z@
+ \expandafter \let \csname bassc@s\roman@c@\endcsname \z@
+ %
+ % preset default staff lines as 5
+ \expandafter \let \csname n@l\roman@c@\endcsname \fiv@
+ %
+ \ifnum\count@<\maxinstruments\repeat
+ \expandafter\message\expandafter{maxinstruments=\the\maxinstruments}%
+ \chardef\@oldmaxinstruments=\maxinstruments\relax%
+ \normalnotesize\resetlayout
+ \fi
+}%
+%
+% registers for 128th beam
+\def\setmaxcxxviiibeams#1{%
+ \ifnum#1>\maxinstruments
+ \errmessage{The number of 128th beam must not exceed maxinstruments}%
+ \else
+ \ifnum#1>\@oldmaxcxxviiibeams
+ \chardef\maxcxxviiibeams=#1\relax
+ \ifnum#1>\@c
+ \errmessage{The maximum reference number of elements is limited to \the\@c}
+ \chardef\maxcxxviiibeams=\@c
+ \fi
+ \count@\@oldmaxcxxviiibeams \loop
+ \advance\count@ by\@ne
+ \expandafter \noexpand@newdimen \csname f@x\roman@c@\endcsname
+ \expandafter \noexpand@newskdim \csname f@z\roman@c@\endcsname
+ \ifnum\count@<\maxcxxviiibeams\repeat
+ \expandafter\message\expandafter{max128beams=\the\maxcxxviiibeams}%
+ \chardef\@oldmaxcxxviiibeams=\maxcxxviiibeams\relax%
+ \fi
+ \fi
+}%
+%
+% registers for 256th beam
+\def\setmaxcclvibeams#1{%
+ \ifnum#1>\maxcxxviiibeams
+ \errmessage{The number of 256th beam must not exceed the number of 128th beam}%
+ \else
+ \ifnum#1>\@oldmaxcclvibeams
+ \chardef\maxcclvibeams=#1\relax
+ \ifnum#1>\@c
+ \errmessage{The maximum reference number of elements is limited to \the\@c}
+ \chardef\maxcclvibeams=\@c
+ \fi
+ \count@\@oldmaxcclvibeams \loop
+ \advance\count@ by\@ne
+ \expandafter \noexpand@newdimen \csname g@x\roman@c@\endcsname
+ \expandafter \noexpand@newskdim \csname g@z\roman@c@\endcsname
+ \ifnum\count@<\maxcclvibeams\repeat
+ \expandafter\message\expandafter{max256beams=\the\maxcclvibeams}%
+ \chardef\@oldmaxcclvibeams=\maxcclvibeams\relax%
+ \fi
+ \fi
+}%
+%
+% registers for choir group
+\def\setmaxgroups#1{%
+ \ifnum#1>\@oldmaxgroups
+ \chardef\maxgroups=#1\relax
+ \ifnum#1>\@c
+ \errmessage{The maximum reference number of elements is limited to \the\@c}
+ \chardef\maxgroups=\@c
+ \fi
+ \count@\@oldmaxgroups \loop
+ \advance\count@ by\@ne
+ % Altitude
+ \expandafter \noexpand@newskip \csname g@b\roman@c@\endcsname
+ % Height
+ \expandafter \noexpand@newskip \csname g@h\roman@c@\endcsname
+ %
+ \expandafter \let \csname lowersonginstrum\roman@c@\endcsname \maxdimen
+ \expandafter \let \csname uppersonginstrum\roman@c@\endcsname \z@
+ \ifnum\count@<\maxgroups\repeat
+ \expandafter\message\expandafter{maxgroups=\the\maxgroups}%
+ \chardef\@oldmaxgroups=\maxgroups\relax%
+ \fi
+}%
+%
+% registers for slur
+\def\setmaxslurs#1{%
+ \ifnum#1>\@oldmaxslurs
+ \chardef\maxslurs=#1\relax
+ \ifnum#1>\@c
+ \errmessage{The maximum reference number of elements is limited to \the\@c}
+ \chardef\maxslurs=\@c
+ \fi
+ \count@\@oldmaxslurs \loop
+ \advance\count@ by\@ne
+ %
+ % horizontal start position of slur
+ \expandafter \noexpand@newdimsk \csname s@x\roman@c@\endcsname
+ %
+ % sense u,d and x (flag) for pending slurs
+ \expandafter \noexpand@newtoks \csname s@s\roman@c@\endcsname
+ \csname s@s\roman@c@\endcsname={x}%
+ %
+ % vertical offset of slur
+ \expandafter \noexpand@newdimsk \csname s@Y\roman@c@\endcsname
+ %
+ % altportee of slur
+ \expandafter \noexpand@newskip \csname s@a\roman@c@\endcsname
+ %
+ % vertical start position of slur [steps of internote]
+ \expandafter \noexpand@newcount \csname s@y\roman@c@\endcsname
+ %
+ % instrument number of that slur (to retrieve internote)
+ \expandafter \noexpand@newcount \csname s@N\roman@c@\endcsname
+ %
+ % vertical end position of slur [steps of internote], used from
+ % \breakslur. the value \maxdimen is used to decide, if
+ % \breakslur is used or not (flag)
+ \expandafter \noexpand@newcount \csname s@z\roman@c@\endcsname
+ \csname s@z\roman@c@\endcsname\maxdimen
+ %
+ %++ickd: dotted indicator for pending slurs
+ \expandafter \noexpand@newtoks \csname s@d\roman@c@\endcsname
+ %
+ \ifnum\count@<\maxslurs\repeat
+ \expandafter\message\expandafter{maxslurs=\the\maxslurs}%
+ \chardef\@oldmaxslurs=\maxslurs\relax%
+ \fi
+}%
+%
+% registers for trill (MusiXTeX-type trill only. Legacy \trillC and
+% \TrillC are out of the scope.)
+\def\setmaxtrills#1{%
+ \ifnum#1>\@oldmaxtrills
+ \chardef\maxtrills=#1\relax
+ \ifnum#1>\@c
+ \errmessage{The maximum reference number of elements is limited to \the\@c}
+ \chardef\maxtrills=\@c
+ \fi
+ \count@\@oldmaxtrills \loop
+ \advance\count@ by\@ne
+ % starting horizontal pos
+ \expandafter \noexpand@newskip \csname tr@x\roman@c@\endcsname
+ \csname tr@x\roman@c@\endcsname\maxdimen\relax
+ % heading of trill
+ \expandafter \noexpand@newtoks \csname tr@sw\roman@c@\endcsname
+ % height of trill
+ \expandafter \noexpand@newskip \csname tr@y\roman@c@\endcsname
+ \ifnum\count@<\maxtrills\repeat
+ \expandafter\message\expandafter{maxtrills=\the\maxtrills}%
+ \chardef\@oldmaxtrills=\maxtrills\relax%
+ \fi
+}%
+%
+% registers for octave line
+\def\setmaxoctlines#1{%
+ \ifnum#1>\@oldmaxoctlines
+ \chardef\maxoctlines=#1\relax
+ \ifnum#1>\@c
+ \errmessage{The maximum reference number of elements is limited to \the\@c}
+ \chardef\maxoctlines=\@c
+ \fi
+ \count@\@oldmaxoctlines \loop
+ \advance\count@ by\@ne
+ % starting horizontal pos
+ \expandafter \noexpand@newskip \csname o@x\roman@c@\endcsname
+ \csname o@x\roman@c@\endcsname\maxdimen\relax
+ % height of octline
+ \expandafter \noexpand@newskip \csname o@y\roman@c@\endcsname
+ % sense of octline
+ \expandafter \noexpand@newtoks \csname o@sw\roman@c@\endcsname
+ \ifnum\count@<\maxoctlines\repeat
+ \expandafter\message\expandafter{maxoctlines=\the\maxoctlines}%
+ \chardef\@oldmaxoctlines=\maxoctlines\relax%
+ \fi
+}%
+%
+\chardef\@oldmaxinstruments=\z@
+\chardef\@oldmaxcxxviiibeams=\z@
+\chardef\@oldmaxcclvibeams=\z@
+\chardef\@oldmaxgroups=\z@
+\chardef\@oldmaxslurs=\z@
+\chardef\@oldmaxtrills=\z@
+\chardef\@oldmaxoctlines=\z@
+%
+% actual setup (=register allocation) of the maximum element numbers
+% should be done after fonts definition.
+%
+%%% [version 1.15] new register allocation code -- until here --
+
+
+%%% fonts
+
+\newif\iflongDCfontnames
+\newif\iflongECfontnames
+\longDCfontnamesfalse % obsolete
+\longECfontnamesfalse % to use EC fonts, \input musixec
+\def\fontid{cm} % deprecated but used in pmx.tex
+
+%%
+% Small sans serif fonts % version 1.29 RDT
+%%
+
+\font\threess=phvr8t at 3pt
+\font\fourss=phvr8t at 4pt
+\font\fivess=phvr8t at 5pt
+\font\fivedc=phvb8t at 5pt
+\font\sixss=phvr8t at 6pt
+\font\sixdc=phvb8t at 6pt
+
+%%
+% Seven point fonts
+%%
+
+\font\sevenrm=cmr7
+\font\sevenbf=cmbx7
+\font\sevenit=cmti7
+\font\sevenbi=cmbxti10 at 7pt % version 1.22 RDT
+\font\sevensc=cmcsc10 at 7pt
+\font\sevenss=phvr8t at 7pt % version 1.29 RDT
+\font\sevendc=phvb8t at 7pt
+
+
+%%
+% Eight point fonts
+%%
+
+\font\eightrm=cmr8
+\font\eightbf=cmbx8
+\font\eightit=cmti8
+\font\eightbi=cmbxti10 at 8pt % version 1.22 RDT
+\font\eightsc=cmcsc10 at 8pt
+\font\eightss=phvr8t at 8pt % version 1.29 RDT
+\font\eightdc=phvb8t at 8pt
+
+%%
+% Nine point fonts
+%%
+
+\font\ninerm=cmr9
+\font\ninebf=cmbx9
+\font\nineit=cmti9
+\font\ninebi=cmbxti10 at 9pt % version 1.22 RDT
+\font\ninesc=cmcsc10 at 9pt
+\font\niness=phvr8t at 9pt % version 1.29 RDT
+
+%%
+% Ten point fonts
+%%
+
+\font\tenrm=cmr10
+\font\tenbf=cmbx10
+\font\tenit=cmti10
+\font\tenbi=cmbxti10 % version 1.22 RDT
+\font\tensc=cmcsc10
+\font\tenss=phvr8t % version 1.29 RDT
+\font\tendc=phvb8t
+
+%%
+% Eleven point fonts
+%%
+\font\elevenrm=cmr9 scaled \magstephalf
+\font\elevenbf=cmbx9 scaled \magstephalf
+\font\elevenit=cmti9 scaled \magstephalf
+\font\elevenbi=cmbxti10 at 11pt % version 1.22 RDT
+\font\elevensc=cmcsc10 at 11pt
+\font\elevenss=phvr8t at 11pt % version 1.29 RDT
+
+%%
+% Twelve point fonts
+%%
+\font\twelverm=cmr12
+\font\twelvebf=cmbx12
+\font\twelveit=cmti12
+\font\twelvebi=cmbxti10 scaled \magstep1 % version 1.22 RDT
+\font\twelvesc=cmcsc10 scaled \magstep1
+\font\twelvess=phvr8t scaled \magstep1 % version 1.29 RDT
+\font\twelvedc=phvb8t scaled \magstep1
+
+% 14pt fonts
+\font\frtrm=cmr12 scaled \magstep1
+\font\frtbf=cmbx12 scaled \magstep1
+\font\frtit=cmti12 scaled \magstep1
+\font\frtsc=cmcsc10 scaled \magstep2
+\font\frtbi=cmbxti10 scaled \magstep2 % version 1.22 RDT
+\font\frtss=phvr8t scaled \magstep2 % version 1.29 RDT
+\font\frtdc=phvb8t scaled \magstep2
+%
+% 17pt
+\font\svtrm=cmr12 scaled \magstep2
+\font\svtbf=cmbx12 scaled \magstep2
+\font\svtit=cmti12 scaled \magstep2
+\font\svtsc=cmcsc10 scaled \magstep3
+\font\svtbi=cmbxti10 scaled \magstep3
+\font\svtdc=phvb8t scaled \magstep3
+%
+% 20pt
+\font\twtyrm=cmr12 scaled \magstep3
+\font\twtybf=cmbx12 scaled \magstep3
+\font\twtyit=cmti12 scaled \magstep3
+\font\twtysc=cmcsc10 scaled \magstep4
+\font\twtybi=cmbxti10 scaled \magstep4 % version 1.22 RDT
+\font\twtydc=phvb8t scaled \magstep4
+%
+% 25pt
+\font\twfvrm=cmr12 scaled \magstep4
+\font\twfvbf=cmbx12 scaled \magstep4
+\font\twfvit=cmti12 scaled \magstep4
+\font\twfvsc=cmcsc10 scaled \magstep5
+\font\twfvbi=cmbxti10 scaled \magstep5 % version 1.22 RDT
+%
+%%
+%%
+% Define five font families
+%%
+\def\tinytype{%
+ \let\rm\sevenrm
+ \let\bf\sevenbf
+ \let\it\sevenit
+ \let\bi\sevenbi
+ \let\sc\sevensc
+ \rm}
+\def\smalltype{%
+ \let\rm\eightrm
+ \let\bf\eightbf
+ \let\it\eightit
+ \let\bi\eightbi
+ \let\sc\eightsc
+ \rm}
+\def\Smalltype{%
+ \let\rm\ninerm
+ \let\bf\ninebf
+ \let\it\nineit
+ \let\bi\ninebi
+ \let\sc\ninesc
+ \rm}
+\def\normtype{%
+ \let\rm\tenrm
+ \let\bf\tenbf
+ \let\it\tenit
+ \let\bi\tenbi
+ \let\sc\tensc
+ \rm}
+\def\medtype{%
+ \let\rm\twelverm
+ \let\bf\twelvebf
+ \let\it\twelveit
+ \let\bi\twelvebi
+ \let\sc\twelvesc
+ \rm}
+%
+% four font families at big/Big/BIg/BIG sizes
+% default is \bf here and in musixec, but \sc in musixplt, \rm in musixtmr
+%
+\def\bigfont{%
+ \let\rm\frtrm
+ \let\bf\frtbf
+ \let\it\frtit
+ \let\sc\frtsc
+ \let\bi\frtbi
+ \bf}
+\def\Bigfont{%
+ \let\rm\svtrm
+ \let\bf\svtbf
+ \let\it\svtit
+ \let\sc\svtsc
+ \let\bi\svtbi
+ \bf}
+\def\BIgfont{%
+ \let\rm\twtyrm
+ \let\bf\twtybf
+ \let\it\twtyit
+ \let\sc\twtysc
+ \let\bi\twtybi
+ \bf}
+\def\BIGfont{%
+ \let\rm\twfvrm
+ \let\bf\twfvbf
+ \let\it\twfvit
+ \let\sc\twfvsc
+ \let\bi\twfvbi
+ \bf}
+%%
+% large fonts for titles
+% (If you prefer Roman, use \rm)
+% (If you prefer small-caps, use \sc)
+%
+\def\bigtype{\bigfont\bf} % default for "big" fonts is \bf
+\def\Bigtype{\Bigfont\bf}
+\def\BIgtype{\BIgfont\bf}
+\def\BIGtype{\BIGfont\bf}
+%
+%
+% Bold italic fonts for dynamic markings.
+%%
+
+\font\ppfftwelve=cmbxti10 at 8pt % version 1.17 RDT
+\font\ppffsixteen=cmbxti10
+\font\ppfftwenty=cmbxti10 scaled \magstep1
+\font\ppfftwentyfour=cmbxti10 scaled \magstep2
+\font\ppfftwentynine=cmbxti10 scaled \magstep3
+
+\def\ppff{\ifdim\internote<\p@seven6\Internote\tinyppff% version 1.17 RDT
+\else\ifdim\internote<.95\Internote\smallppff%
+\else\ifdim\internote<1.19\Internote\normppff%
+\else\medppff\fi\fi\fi}%
+
+
+\def\tinydyn{\let\ppff\ppfftwelve} % version 1.18 RDT
+\def\smalldyn{\let\ppff\ppffsixteen}
+\def\normdyn{\let\ppff\ppfftwenty}
+\def\meddyn{\let\ppff\ppfftwentyfour}
+
+
+\font\musiceleven=musix11
+\font\musicthirteen=musix13
+\font\musicsixteen=musix16
+\font\musictwenty=musix20
+\font\musictwentyfour=musix24
+\font\musictwentynine=musix29
+
+
+%
+% tt fonts needed by musixsty % version 1.22 RDT
+%
+\font\eighttt=cmtt8
+\font\ninett=cmtt9
+\font\tentt=cmtt10
+\font\twelvett=cmtt12
+\font\frttt=cmtt12 scaled \magstep1
+\font\svttt=cmtt12 scaled \magstep2
+\font\twtytt=cmtt12 scaled \magstep3
+\font\twfvtt=cmtt12 scaled \magstep4
+%
+%
+% sl fonts needed by musixsty % version 1.22 RDT
+%
+\font\eightsl=cmsl8
+\font\ninesl=cmsl9
+\font\tensl=cmsl10
+\font\twelvesl=cmsl12
+\font\frtsl=cmsl12 scaled \magstep1
+\font\svtsl=cmsl12 scaled \magstep2
+\font\twtysl=cmsl12 scaled \magstep3
+\font\twfvsl=cmsl12 scaled \magstep4
+
+% piano brackets, slides, guitar chords, lines, (de)crescendi, circles
+
+\font\mxsps=musixspx
+
+
+%%%
+%
+% Slur macro package for MusicTeX
+%
+% Ross Mitchell, February 20 1993
+%
+%%%
+%%
+% Load the font set
+%
+% Nomenclature: slur[p][size]
+% [p] : sign of slur gradient; u=positive, d=negative, z=zero
+%%
+
+\font\slurz=xslz20
+\font\slurzd=xslz20d %+ickd
+
+\font\slurueleven=xslu11 % slur up eleven points
+\font\sluruthirteen=xslu13
+\font\slurusixteen=xslu16
+\font\slurutwenty=xslu20
+\font\slurutwentyfour=xslu24
+\font\slurutwentynine=xslu29
+
+\font\slurdeleven=xsld11 % slur down eleven points
+\font\slurdthirteen=xsld13
+\font\slurdsixteen=xsld16
+\font\slurdtwenty=xsld20
+\font\slurdtwentyfour=xsld24
+\font\slurdtwentynine=xsld29
+
+%++ickd same for dotted slurs
+\font\sluruelevend=xslu11d % slur up eleven points
+\font\sluruthirteend=xslu13d
+\font\slurusixteend=xslu16d
+\font\slurutwentyd=xslu20d
+\font\slurutwentyfourd=xslu24d
+\font\slurutwentynined=xslu29d
+
+\font\slurdelevend=xsld11d % slur down eleven points
+\font\slurdthirteend=xsld13d
+\font\slurdsixteend=xsld16d
+\font\slurdtwentyd=xsld20d
+\font\slurdtwentyfourd=xsld24d
+\font\slurdtwentynined=xsld29d
+%++ickd
+
+%!these fonts can't be used with highres printers (>~800dpi)
+% for these printers comes a interface to PS using DVIPS (PS-Tricks)
+% and \special{}-commands next time (patience is a virtue ...)
+
+\font\xtie=xslhz20
+\font\xtied=xslhz20d %+ickd
+
+\font\hslurdeleven=xslhd11 % slur half down eleven points
+\font\hslurdthirteen=xslhd13
+\font\hslurdsixteen=xslhd16 % slur half down sixteen points
+\font\hslurdtwenty=xslhd20
+\font\hslurdtwentyfour=xslhd24
+\font\hslurdtwentynine=xslhd29
+
+\font\hslurueleven=xslhu11
+\font\hsluruthirteen=xslhu13
+\font\hslurusixteen=xslhu16
+\font\hslurutwenty=xslhu20
+\font\hslurutwentyfour=xslhu24
+\font\hslurutwentynine=xslhu29
+
+%++ickd same for dotted slurs
+\font\hslurdelevend=xslhd11d % slur half down eleven points
+\font\hslurdthirteend=xslhd13d
+\font\hslurdsixteend=xslhd16d % slur half down sixteen points
+\font\hslurdtwentyd=xslhd20d
+\font\hslurdtwentyfourd=xslhd24d
+\font\hslurdtwentynined=xslhd29d
+
+\font\hsluruelevend=xslhu11d
+\font\hsluruthirteend=xslhu13d
+\font\hslurusixteend=xslhu16d
+\font\hslurutwentyd=xslhu20d
+\font\hslurutwentyfourd=xslhu24d
+\font\hslurutwentynined=xslhu29d
+%++ickd
+
+% number of pending slurs
+
+\newcount\N@s
+
+% [version 1.15] moved out to the new register allocation code (except for \s@Y)
+% horizontal start position of slur
+% \newdimen\s@xi
+% sense u,d and x (flag) for pending slurs
+% \newtoks\s@si \s@si={x}
+% vertical offset of slur
+\newdimen\s@Y % this register is for common use
+% \newdimen\s@Yi
+% altportee of slur
+% \newskip\s@ai
+% vertical start position of slur [steps of internote]
+% \newcount\s@yi
+% instrument number of that slur (to retrieve internote)
+% \newcount\s@Ni
+% vertical end position of slur [steps of internote], used from \breakslur
+% the value \maxdimen is used to decide, if \breakslur is used or not (flag)
+% \newcount\s@zi \s@zi\maxdimen
+%++ickd: dotted indicator for pending slurs
+% \newtoks\s@di % moved out to the new register allocation code
+%++ickd
+
+\def\roman@n@i{\romannumeral\n@i\endcsname}
+
+%
+% [version 1.15] make slurs independent from \maxinstruments
+\def\test@slurnum{%
+ \ifnum\n@i<\z@ \n@i\@c \fi
+ \ifnum\n@i<\maxslurs \else
+ \count@\maxslurs \advance\count@\m@ne
+ \errmessage{Wrong slur reference number \the\n@i! (valid: 0 to \the\count@)}% [version 1.15]
+ \n@i\z@% [version 1.15]
+ \fi
+ \advance\n@i\@ne}%
+%
+\def\s@l@ctslur#1\relax{%
+ \n@i#1\relax\test@slurnum% [version 1.15] make it independent from beams
+ \edef\s@a{\csname s@a\roman@n@i}% dimen (altportee)
+ \edef\s@x{\csname s@x\roman@n@i}% dimen (hor start pos)
+ \edef\s@y{\csname s@y\roman@n@i}% count (startnote [internote])
+ \edef\s@N{\csname s@N\roman@n@i}% count (instrument number)
+ \edef\s@z{\csname s@z\roman@n@i}% count (endnote [internote])
+ \edef\s@Y{\csname s@Y\roman@n@i}% dimen (voffset)
+ \edef\s@d{\csname s@d\roman@n@i}% token (dotted) +ickd
+ \edef\s@s{\csname s@s\roman@n@i}}% token (sense)
+
+% get current position (returns the dimen in \y@v)
+% (\lin@pos starts behind signatures!)
+
+\newdimen\lin@pos
+\def\getcurpos{\y@v\lin@pos \advance\y@v\locx@skip}
+
+% \n@i vertical offset of first note (number); temporary
+% \n@ii vertical offset of second note (number); temporary
+% \n@iii meet note
+% \n@iv first note
+% \n@v temp. character
+% \n@vi last note
+% \n@vii right halfslur length
+% \n@viii don't touch
+% \y@ complete length of slur - allowed overlap (4pt), temp. length
+% \y@i abs. height of slur
+% \y@ii complete length of slur
+% \y@iii old maxslurwidth
+% \y@iv don't touch
+% \y@v don't touch
+
+% \@sense{u,d}
+%
+% if \curve (\midslur) is used
+% \@meet{}
+% \l@length{}
+% \r@length{}
+
+% #1 start pitch #2 end pitch #3 length #4 right hoffset
+
+\newcount \meet@minus@n@iv
+\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
+ \else
+ \edef\internote{\csname i@n\romannumeral\s@N\endcsname}%
+ \fi
+% \immediate\write16{\noexpand\writ@slur internote:\the\internote}%
+ \n@iv#1%
+ \n@vi#2%
+%%
+% Get note vertical offsets
+% \n@iv= vertical offset of first note(n@i temp);
+% \n@vi= vertical offset of second note(n@ii temp);
+% \y@i = reference height of first note (pt);
+%
+% Define adequate fonts for this slur, according to the value of \internote
+%
+ \ifdim\internote>3.5pt
+ \let\sld\slurdtwentynine \let\slu\slurutwentynine
+ \let\hslurd\hslurdtwentynine \let\hsluru\hslurutwentynine
+ \let\sldd\slurdtwentynined \let\slud\slurutwentynined % +ickd
+ \let\hslurdd\hslurdtwentynined \let\hslurud\hslurutwentynined %+ickd
+ \def\@stepwidth{3.6pt}%
+ \else \ifdim\internote>2.9pt
+ \let\sld\slurdtwentyfour \let\slu\slurutwentyfour
+ \let\hslurd\hslurdtwentyfour \let\hsluru\hslurutwentyfour
+ \let\sldd\slurdtwentyfourd \let\slud\slurutwentyfourd % +ickd
+ \let\hslurdd\hslurdtwentyfourd \let\hslurud\hslurutwentyfourd %+ickd
+ \def\@stepwidth{3.0pt}%
+ \else \ifdim\internote>2.3pt
+ \let\sld\slurdtwenty \let\slu\slurutwenty
+ \let\hslurd\hslurdtwenty \let\hsluru\hslurutwenty
+ \let\sldd\slurdtwentyd \let\slud\slurutwentyd % +ickd
+ \let\hslurdd\hslurdtwentyd \let\hslurud\hslurutwentyd %+ickd
+ \def\@stepwidth{2.5pt}%
+ \else \ifdim\internote>1.8pt
+ \let\sld\slurdsixteen \let\slu\slurusixteen
+ \let\hslurd\hslurdsixteen \let\hsluru\hslurusixteen
+ \let\sldd\slurdsixteend \let\slud\slurusixteend % +ickd
+ \let\hslurdd\hslurdsixteend \let\hslurud\hslurusixteend %+ickd
+ \def\@stepwidth{2pt}%
+ \else \ifdim\internote>1.4pt
+ \let\sld\slurdthirteen \let\slu\sluruthirteen
+ \let\hslurd\hslurdthirteen \let\hsluru\hsluruthirteen
+ \let\sldd\slurdthirteend \let\slud\sluruthirteend % +ickd
+ \let\hslurdd\hslurdthirteend \let\hslurud\hsluruthirteend %+ickd
+ \def\@stepwidth{1.6pt}%
+ \else
+ \let\sld\slurdeleven \let\slu\slurueleven
+ \let\hslurd\hslurdeleven \let\hsluru\hslurueleven
+ \let\sldd\slurdelevend \let\slud\sluruelevend % +ickd
+ \let\hslurdd\hslurdelevend \let\hslurud\hsluruelevend %+ickd
+ \def\@stepwidth{1.28pt}%
+ \fi\fi\fi\fi\fi
+%
+% End choice of font
+%
+ \n@i\n@iv \pl@base % \y@i = initial height
+ \n@ii\n@vi
+%
+% Select appropriate font
+% Set \n@i to the vertical difference index
+% setup \n@iii(meetnote)
+%
+ \ifnum\n@ii=\n@i % Slope is zero
+ \n@iii\n@i
+ \if u\@sense \advance\n@iii\thr@@ \else \advance\n@iii-\thr@@ \fi
+ \def\@slope{z}\n@i\z@
+ \else
+ \ifnum\n@ii<\n@i % Slope is negative
+ \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 % compute @meet height for slurs
+ \fi
+ \fi
+%%
+% Select the required font and load the width parameters
+%
+% Font specific parameters
+% \y@iii is the horizontal width of the longest slur in the fonts
+% This parameter is loaded from the tfm \fontdimen parameter 5
+% respectively
+%%
+ \y@iii\fontdimen\fiv@\csname sl\@slope\endcsname
+ \y@ii#3%
+%
+% \n@i contains slope (difference between start and end note)
+%
+% force longslurs if (!!! no check, be careful !!!)
+% long slurs are at least 20[16] pt long) !!! Perhaps will change again !!!
+% - difference between first note and last note > 8
+% - if \curve or \midslur is def'd
+% - if \invertslur is used
+%
+ \ifnum\n@i>\@ight \y@iii\z@ \fi % RMslurs limit 8 steps
+ \ifx\@meet\empty \else\y@iii\z@ \fi
+ \ifx\@invert\@ne \y@iii\z@ \fi
+ \ifdim\y@ii>\y@iii % start of longslurs
+%
+% 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
+% compute the max length in fontunits (\count@)
+%
+ \y@\y@ii \advance\y@\f@ur\p@ \n@v\y@
+ \sp@pt\t@n % 10pt steps
+ \advance\n@v-\f@ur % first brace is 20pt wide (perhaps 10pt is better ??)
+ \min@n@v\z@
+ \max@n@v\fourt@@n % largest braces are 2*((90pt-20pt)/10pt)
+ \count@\n@v % max length
+%
+% compute the length of the starting and ending halfslurs
+% in case, that curve is not def'd
+%
+ \ifx\empty\l@length
+ \divide\n@v\tw@ % 2 halfslurs
+ \n@vii\n@v
+ \n@ii\n@v
+ \def@lr
+%
+% first try to reach nicer long slurs without using \curve
+%
+ \if z\@slope % leave ties untouched
+ \else
+ \ifnum\count@>\z@ % only for long slurs
+ \multiply\n@v\tw@
+ \if\@slope\@sense % uu,dd advance l@length ud,du advance r@length
+ \s@adjust\n@vii\n@ii
+ \else
+ \s@adjust\n@ii\n@vii
+ \fi
+ \def@lr
+ \fi
+ \fi
+%
+% adjust \curve parameters, if neccesary
+%
+ \else
+ \n@vii\l@length
+ \n@ii\r@length
+ \loop
+ \count@\n@vii
+ \advance\count@\n@ii
+ \ifnum\count@>\n@v
+ \advance\n@vii\m@ne \ifnum\n@vii<\z@ \n@vii\z@ \fi
+ \advance\n@ii\m@ne \ifnum\n@ii<\z@ \n@ii\z@ \fi
+ \repeat
+ \def@lr
+ \fi
+%
+% clip to extremity heights (max slur height= 16\internote)
+%
+ \C@csm\n@iv
+ \C@csm\n@vi
+%
+% change sense and offset behind linebreak and reset flag
+%
+ \ifx\@invert\@ne \ifdim\s@x=\z@
+ \@invsl \let\@invert\empty \s@Y-\s@Y
+ \fi \fi
+%
+% compute final height and put the box
+%
+% \immediate\write16{ before @meet:\noexpand\y@i=\the\y@i}%
+% \message{ was \noexpand\n@iv\the\n@iv}%
+% \message{ was \noexpand\n@vi\the\n@vi}%
+%
+ \meet@minus@n@iv=\@meet
+ \advance\meet@minus@n@iv-\n@iv
+% \immediate\write16{\noexpand\meet@minus@n@iv=\the\meet@minus@n@iv}%
+% \y@i\@meet\internote % \y@i final height
+% change from DT for staffspacing not standard
+ \y@i \@stepwidth % part proportional to slur font size
+ \multiply \y@i \meet@minus@n@iv
+ \advance\y@i \n@iv\internote % was done by \pl@base...
+%
+ \C@sof % add the voffsets
+ \llap{\raise\y@i\hbox\@to\y@ii{%
+%
+% compute the beginning and ending halfslur chars
+% n@i firstslur
+% n@ii lastslur
+% n@v character
+%
+ \C@cc\n@iv\n@i\n@ii
+ \C@cc\n@vi
+%
+ \n@v\l@length
+ \multiply\n@v\sixt@@n % 16 different heigths
+ \advance\n@v\n@i % offset to length
+ \advance\n@v\@cxxviii % offset to starthalfslur
+ \@boX \box\ch@box\hss% put starthalfslur
+ \n@v\r@length
+ \multiply\n@v\sixt@@n
+ \advance\n@v\n@ii
+%
+% put ending halfslur in box
+%
+ \ifx\@invert\@ne \@invsl \fi
+ \@boX
+%
+% put the middle extension (could be replaced by []rule)
+%
+ \ifdim\y@ii>\p@ne\p@
+ \n@v\y@ii
+ \sp@pt\f@ur % 4pt steps
+ \ifx\@invert\@ne
+ \divide\n@v\tw@
+ \if u\@sense \advance\n@v\@cxxviii \fi
+ \mid@box\hss\hss% don't ask me why
+ \if u\@sense \advance\n@v-\@cxxviii \else \advance\n@v\@cxxviii \fi
+ \mid@box%
+ \else
+ \if d\@sense \advance\n@v\@cxxviii \fi
+ \mid@box \fi \fi
+%
+% place the end of slur and kern right horizontal offset
+%
+ \hss\box\ch@box}\kern#4}%
+%
+% reset slurcurve
+%
+ \global\let\@meet\empty
+ \let\l@length\empty
+ \let\@invert\empty
+%
+%>>>>>> start of RM slurs
+% Set \n@v to the width index in the slur font table
+%
+ \else
+ \ifdim\y@ii<\@ight\p@ \y@ii\@ight\p@ \fi % Clip to extremities
+ \y@\y@ii
+ \advance\y@-\si@\p@
+ \n@v\y@
+ \sp@pt\f@ur
+%
+% Find decimal character count into font table
+% (a) Zero height slurs: charnum= width index
+% (b) Others: charnum= 16*(height index - 1) + width index
+% Place the character count in \n@v
+%
+ \if z\@slope
+ \if d\@sense \advance\n@v\@liv \fi % \@liv(=54) offset to slurchars
+ \else
+ \advance\n@i\m@ne % height index - 1
+ \multiply\n@i\sixt@@n % 16*(height index - 1)
+ \advance\n@v\n@i % 16*(height index - 1) + width index
+ \if d\@sense \advance\n@v\@cxxviii \fi
+ \fi
+%
+% Place the slur character
+%
+ \C@sof
+ \ifnum\n@v>255 % to avoid diags in case of...
+ \n@v=255\relax
+ \fi
+ \ifnum\n@v<0 % to avoid diags in case of...
+ \n@v=0\relax
+ \fi
+%
+ \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} % end writ@slur
+
+
+\def\sp@pt#1{\divide\n@v65536\divide\n@v#1}
+\def\max@n@v#1{\ifnum\n@v>#1\n@v#1\fi}
+\def\min@n@v#1{\ifnum\n@v<#1\n@v#1\fi}
+
+%-ickd \def\mid@box{\hbox{\xtie\char\n@v}}
+\def\mid@box{%
+ \ifnum\n@v>255 % to avoid diags in case of...
+ \n@v=255\relax
+ \fi
+ \ifnum\n@v<0 % to avoid diags in case of...
+ \n@v=0\relax
+ \fi
+%
+ \hbox{\csname xtie\@dotted\endcsname\char\n@v}}
+%-ickd \def\@boX{\setbox\ch@box\hbox{\csname hslur\@sense\endcsname\char\n@v}%
+\def\@boX{%
+ \ifnum\n@v>255 % to avoid diags in case of...
+ \n@v=255\relax
+ \fi
+ \ifnum\n@v<0 % to avoid diags in case of...
+ \n@v=0\relax
+ \fi
+%
+ \setbox\ch@box\hbox{\csname hslur\@sense\@dotted\endcsname\char\n@v}%
+ \advance\y@ii-\wd\ch@box}
+
+\def\def@lr{\edef\l@length{\the\n@vii}\edef\r@length{\the\n@ii}}
+
+\def\s@adjust#1#2{%
+ \ifnum\n@v<\count@ \advance#1\@ne \fi
+ \ifnum\n@v>\z@ \advance#1\@ne \advance#2\m@ne
+ \ifnum#1>\s@v@n #1\s@v@n \fi \fi}
+
+\def\C@csl#1#2{% compute meet height for slurs
+ \if u\@sense \n@iii#1\advance\n@iii\tw@
+ \else \n@iii#2\advance\n@iii-\tw@ \fi
+ \ifx\@invert\@ne
+ \n@iii#1\advance\n@iii-#2\divide\n@iii\tw@ \advance\n@iii#2\fi
+ \advance#1-#2}
+
+\def\C@cc#1{% slur = abs(meet-note) - 1
+ \n@ii\@meet
+ \advance\n@ii-#1%
+ \ifnum\n@ii<\z@ \n@ii-\n@ii \fi
+ \advance\n@ii\m@ne
+ }
+% \ifnum\n@ii<\z@\immediate\write16{Warning: \noexpand\C@cc->\noexpand\n@ii=\the\n@ii}\fi
+% \n@ii\z@} % modeif DT 20-12-97
+
+\def\C@csm#1{% clip to extremity heights (max slur height= 16\internote)
+ \n@i\n@iii
+ \advance\n@i-#1%
+ \ifnum\n@i>\sixt@@n
+ \ifnum\n@iii>#1%
+ #1\n@iii \advance#1-\sixt@@n
+ \else
+ #1\n@iii \advance#1\sixt@@n
+ \fi
+ \fi}
+
+\def\C@sof{\advance\y@i\s@Y % abs. voffset
+ \ifx\@Ti\@ne \advance\y@i\s@a \let\@Ti\empty \fi}% call from cutslur
+
+% manual influation on the curve for long slurs
+% must be coded in front of \tslur
+% #1 final height [number, steps of internote, relativ to beginning! note]
+% #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}\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}\relax
+ \else
+% \message{\noexpand\midslur #1 not expanded}%
+ \fi}
+
+\let\@meet\empty
+\let\l@length\empty
+\let\r@length\empty
+
+% Liftslur #1 refnumber #2 lift[steps of internote]
+
+\def\Liftslur#1#2{\n@i#1\advance\n@i\@ne \advance\csname s@y\roman@n@i#2}
+
+% breakslur #1 refnumber #2 endheight during linebreak[steps of internote]
+
+\def\breakslur#1#2{\inhgetn@i#2\relax\n@ii\n@i
+ \n@i#1\advance\n@i\@ne \global\csname s@z\roman@n@i\n@ii}
+
+% invertslur #1 refnumber
+
+\def\@invsl{\if u\the\s@s \s@s{d}\else \s@s{u}\fi}
+
+\def\invertslur#1{\s@l@ctslur#1\relax
+ \if u\the\s@s \global\s@s{D}% change sense and set flag for invertslur
+ \else \global\s@s{U}\fi}
+
+% initiate slur #1 reference number #2 start note
+
+\def\isluru{\i@slur\h@lf{1\p@seven\internote}u}% 'normal'
+\def\issluru{\i@slur{1\p@ne}{\p@seven\internote}u}% shorter for accords
+% for beam(ib[l]u) or stem, doesn't work with \stemcut (yet?)
+\def\ibsluru{\y@i\stemfactor\interbeam
+ \advance\y@i\h@lf\internote \i@slur1\y@i u}
+\def\islurd{\i@slur\h@lf{-1\p@seven\internote}d}
+\def\isslurd{\i@slur{1\p@ne}{-\p@seven\internote}d}
+\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
+\def\istied{\i@slur{1\p@ne}{-\qu@rt\internote}d}%
+\let\itenu\istieu
+\let\itenl\istied
+\let\Itenu\istieu
+\let\Itenl\istied
+
+\def\dotted{\let\dott@d\@ne}\let\dott@d\empty %+ickd
+
+\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
+ \if x\the\s@s \else\errmessage{\@mis\noexpand\tslur#4}\fi
+ \global\s@Y#2% store voffset (abs. dim. to rel. height)
+ \global\s@s{#3}% store sense (u,d)
+ \ifx\dott@d\empty \global\s@d{}\else\global\s@d{d}\fi %+ickd
+ \let\dott@d\empty % set dotted indicator +ickd
+ \global\s@N\noinstrum@nt % store instrument number
+ \inhgetn@i#5\relax
+ \global\s@y\n@i % start vpos (steps of internote)
+ \global\s@a\altportee % store altportee of current slur
+ \getcurpos
+ \advance\y@v#1\qn@width
+ \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
+% terminate a \ibslur with a \tslur it becomes a little bit tricky
+%%
+%% RDT: the "trick", whatever it is, doesn't seem to be working !!!!!
+%% e.g. \Notes\ibsluru1g\qa g\ha l\sk\zq g\zq i\tslur1k\qu k\en
+
+\def\tslur{\t@slur\h@lf}
+\def\tsslur{\t@slur{-\p@ne}}
+\def\tubslur{\t@slur1}
+\def\tdbslur{\t@slur0}
+\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}
+% #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
+
+% y@i linewidth
+% y@iv right hoffset
+% y@v endpos, complete length
+
+% #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}%
+ \edef\@dotted{\the\s@d}%+ickd
+% test for missing \islur
+ \if x\@sense \errmessage{\@mis\noexpand\islur#2}\fi
+% test for \invertslur
+ \if D\@sense \s@s{u}%
+ \let\@invert\@ne
+ \fi
+ \if U\@sense \s@s{d}%
+ \let\@invert\@ne
+ \fi
+% compute length
+ \getcurpos
+ \advance\y@v\y@iv
+% eoline
+ \y@eol\advance\y@-\beforeruleskip
+% clip slur at eoline
+ \ifdim\y@v>\y@ \y@v\y@ \advance\y@v\beforeruleskip \y@iv\beforeruleskip \fi
+ \advance\y@v-\s@x
+ \ifx\T@i\@c \n@i\s@y \else \inhgetn@i#3\relax \fi
+ \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
+ \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
+ }%
+\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}
+
+% hold up the RM-slur calling, because faster coding,
+% if the slurs are inside a bar (and you use one kind of \notes)
+% and ... there is no limitation in the number of slurs
+% if you want to call a short slur, extending to the left use \slur[][][]0
+
+% #1 start pitch #2 final pitch #3 sense(u,d) #4 length[noteskip]
+
+\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
+ \let\dott@d\empty % set dotted indicator +ickd
+ \def\@sense{#3}%
+ \if d\@sense \s@Y-\s@Y \fi
+ \y@v#4\noteskip
+ \y@iv\y@v
+ \advance\y@iv\y@ii
+ \advance\y@v\y@iii
+ \kern\y@iv
+ \writ@slur\n@ii\n@i\y@v\z@
+ \kernm\y@iv
+ \fi}
+
+\def\sslur{%
+ \let\s@N\undefined % do not store instrument number
+ \s@Y\p@seven\internote
+ \y@iii-1.2\qn@width % offset to length 1.1behind+.1before
+ \y@ii-\p@ne\qn@width
+ \C@slur}
+\def\slur{%
+ \let\s@N\undefined % do not store instrument number
+ \s@Y1\p@seven\internote
+ \y@iii\z@
+ \y@ii\h@lf\qn@width
+ \C@slur}
+\def\stie#1{\sslur{#1}{#1}}
+\def\tie#1{\slur{#1}{#1}}
+
+%%% setup fontsizes
+
+\newdimen\interbeam % distance entre poutres
+\newdimen\b@amthick % half beamthickness
+\newdimen\Interligne% de la base d'une ligne a l'autre
+\newdimen\Internote % la moitie de \Interligne
+\let\internote\Internote
+\def\musixchar{\musixfont\char}
+\def\keychar{\musickeyfont\char}
+
+\let\musicnorfont\musictwenty
+
+\def\set@Largenotesize{\let\musixfont\musicLargefont
+ \let\xgregfont\xgregLargefont
+ \b@amthick.3456\Interligne \interbeam1.08\Interligne }
+
+\def\set@largenotesize{\let\musixfont\musiclargefont
+ \let\xgregfont\xgreglargefont
+ \b@amthick.288\Interligne \interbeam.9\Interligne }
+
+\def\set@normalnotesize{\let\musixfont\musicnorfont
+ \let\xgregfont\xgregnorfont
+ \b@amthick.24\Interligne \interbeam\p@seven5\Interligne }
+
+\def\set@smallnotesize{\let\musixfont\musicsmallfont
+ \let\xgregfont\xgregsmallfont
+ \b@amthick\p@ne92\Interligne \interbeam.6\Interligne }
+
+\def\set@tinynotesize{\let\musixfont\musictinyfont
+ \let\xgregfont\xgregtinyfont
+ \b@amthick\p@ne536\Interligne \interbeam.48\Interligne }
+
+\def\normalnotesize{\set@normalnotesize\comput@specifics
+ \let\curr@ntsiz@\normalnotesize}
+\def\smallnotesize{\set@smallnotesize\comput@specifics
+ \let\curr@ntsiz@\smallnotesize}
+\def\tinynotesize{\set@tinynotesize\comput@specifics
+ \let\curr@ntsiz@\tinynotesize}
+\def\largenotesize{\set@largenotesize\comput@specifics % v.124 RDT
+ \let\curr@ntsiz@\largenotesize}
+\def\Largenotesize{\set@Largenotesize\comput@specifics % v.124 RDT
+ \let\curr@ntsiz@\Largenotesize}
+
+\def\musickeyfont{%
+ \ifdim\internote<\p@seven6\Internote \musictinyfont
+ \else
+ \ifdim\internote<.95\Internote \musicsmallfont
+ \else
+ \ifdim\internote<1.19\Internote \musicnorfont
+ \else
+ \ifdim\internote<1.43\Internote \musiclargefont
+ \else
+ \musicLargefont
+ \fi
+ \fi
+ \fi
+ \fi}
+
+\def\meterfont{%
+ \ifdim\internote<\p@seven6\Internote \metersmallfont
+ \else
+ \ifdim\internote<.95\Internote \meternorfont
+ \else
+ \ifdim\internote<1.19\Internote \meterbigfont
+ \else
+ \ifdim\internote<1.43\Internote \meterlargefont
+ \else \meterLargefont
+ \fi
+ \fi
+ \fi
+ \fi}
+
+\def\tabcleffnt{% 1.29 RDT
+ \ifdim\internote<.95\Internote \tabsmallcleffnt
+ \else
+ \ifdim\internote<1.19\Internote \tabnorcleffnt
+ \else
+ \ifdim\internote<1.43\Internote \tablargecleffnt
+ \else \tabLargecleffnt
+ \fi
+ \fi
+ \fi}
+
+\def\tabfnt{% 1.29 RDT
+ \ifdim\internote<.95\Internote \tabsmallfnt
+ \else
+ \ifdim\internote<1.19\Internote \tabnorfnt
+ \else
+ \ifdim\internote<1.43\Internote \tablargefnt
+ \else \tabLargefnt
+ \fi
+ \fi
+ \fi}
+
+\newbox\ch@box
+\newcount\musicsize
+\newdimen\qd@skip
+\newdimen\qn@width
+\newdimen\wn@width
+
+\newskip\txt@ff
+\newskip\s@indent % store parindent
+\newskip\big@spc
+
+\newdimen\lthick \lthick=.4pt
+\def\hlthick{\h@lf\lthick}
+
+%%%
+
+\def\normalmusicsize{\musicsize\tw@nty \comput@specifics
+ \afterruleskip\@ight\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@}
+\def\smallmusicsize{\musicsize\sixt@@n \comput@specifics
+ \afterruleskip\si@\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@}
+\def\largemusicsize{\musicsize\@xxiv \comput@specifics
+ \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 \clef@skip\z@}
+
+\def\comput@fonts{%
+ \ifnum\musicsize=\sixt@@n
+ \let\musicLargefont\musictwentyfour
+ \let\musiclargefont\musictwenty
+ \let\musicnorfont\musicsixteen
+ \let\musicsmallfont\musicthirteen
+ \let\musictinyfont\musiceleven
+ \let\xgregLargefont\xgregtwentyfour
+ \let\xgreglargefont\xgregtwenty
+ \let\xgregnorfont\xgregsixteen
+ \let\xgregsmallfont\xgregthirteen
+ \let\xgregtinyfont\xgregeleven
+ \let\slurd\slurdsixteen \let\sluru\slurusixteen
+ \let\hslurd\hslurdsixteen \let\hsluru\hslurusixteen
+ \let\meternorfont\tenbf \let\metersmallfont\eightbf % version 1.16 RDT
+ \let\meterbigfont\twelvebf \let\meterlargefont\frtbf
+ \let\meterLargefont\svtbf
+ \let\tinyppff\ppfftwelve % version 1.17 RDT
+ \let\smallppff\ppfftwelve
+ \let\normppff\ppffsixteen
+ \let\medppff\ppfftwenty
+ \def\txtfont{\ifdim\internote<.95\Internote \tinytype\it % version 1.22 RDT
+ \else\ifdim\internote<1.19\Internote \smalltype\it
+ \else\ifdim\internote<1.43\Internote \Smalltype\it
+ \else\normtype\it\fi\fi\fi}%
+ \let\tabnorfnt\fivess \let\tablargefnt\sixss
+ \let\tabLargefnt\eightss \let\tabsmallfnt\fourss
+ \let\tabnorcleffnt\eightdc \let\tablargecleffnt\tendc
+ \let\tabLargecleffnt\twelvedc \let\tabsmallcleffnt\sixdc
+ \def\tabstringfnt{\ifdim\internote<.95\Internote \fourss % 1.29 RDT
+ \else\ifdim\internote<1.19\Internote \fivess
+ \else\ifdim\internote<1.43\Internote \sevenss
+ \else\eightss\fi\fi\fi}%
+ \else\ifnum\musicsize=\@xxiv
+ \let\musicLargefont\musictwentynine
+ \let\musiclargefont\musictwentynine
+ \let\musicnorfont\musictwentyfour
+ \let\musicsmallfont\musictwenty
+ \let\musictinyfont\musicsixteen
+ \let\xgregLargefont\xgregtwentynine
+ \let\xgreglargefont\xgregtwentynine
+ \let\xgregnorfont\xgregtwentyfour
+ \let\xgregsmallfont\xgregtwenty
+ \let\xgregtinyfont\xgregsixteen
+ \let\sluru\slurutwenty \let\slurd\slurdtwenty
+ \let\hsluru\hslurutwenty \let\hslurd\hslurdtwenty
+ \let\meternorfont\frtbf \let\metersmallfont\twelvebf % version 1.18 RDT
+ \let\meterbigfont\svtbf \let\meterlargefont\twtybf
+ \let\meterlargefont\twfvbf
+ \let\tinyppff\ppffsixteen
+ \let\smallppff\ppfftwenty
+ \let\normppff\ppfftwentyfour
+ \let\medppff\ppfftwentynine
+ \def\txtfont{\ifdim\internote<.95\Internote \smalltype\it % version 1.22 RDT
+ \else\ifdim\internote<1.19\Internote \Smalltype\it
+ \else\ifdim\internote<1.43\Internote \normtype\it
+ \else\medtype\it\fi\fi\fi}%
+ \let\tabnorfnt\eightss \let\tablargefnt\niness
+ \let\tabLargefnt\elevenss \let\tabsmallfnt\sixss
+ \let\tabnorcleffnt\twelvedc \let\tablargecleffnt\frtdc
+ \let\tabLargecleffnt\svtdc \let\tabsmallcleffnt\tendc
+ \def\tabstringfnt{\ifdim\internote<.95\Internote \sixss % 1.29 RDT
+ \else\ifdim\internote<1.19\Internote \eightss
+ \else\ifdim\internote<1.43\Internote \niness
+ \else\twelvess\fi\fi\fi}%
+ \else\ifnum\musicsize=\@xxix
+ \let\musicLargefont\musictwentynine
+ \let\musiclargefont\musictwentynine
+ \let\musicnorfont\musictwentynine
+ \let\musicsmallfont\musictwentyfour
+ \let\musictinyfont\musictwenty
+ \let\xgregLargefont\xgregtwentynine
+ \let\xgreglargefont\xgregtwentynine
+ \let\xgregnorfont\xgregtwentynine
+ \let\xgregsmallfont\xgregtwentyfour
+ \let\xgregtinyfont\xgregtwenty
+ \let\sluru\slurutwenty \let\slurd\slurdtwenty
+ \let\hsluru\hslurutwenty \let\hslurd\hslurdtwenty
+ \let\slurud\slurutwentyd \let\slurdd\slurdtwentyd % +ickd
+ \let\hslurud\hslurutwentyd \let\hslurdd\hslurdtwentyd %+ickd
+ \let\meternorfont\svtbf \let\metersmallfont\frtbf % version 1.18 RDT
+ \let\meterbigfont\twtybf \let\meterlargefont\twfvbf % version 1.24 typos corrected
+ \let\meterLargefont\twfvbf
+ \let\tinyppff\ppfftwenty
+ \let\smallppff\ppfftwentyfour
+ \let\normppff\ppfftwentynine
+ \let\medppff\ppfftwentynine
+ \def\txtfont{\ifdim\internote<.95\Internote \normtype\it % version 1.22 RDT
+ \else\ifdim\internote<1.19\Internote \medtype\it
+ \else\ifdim\internote<1.43\Internote \bigfont\it
+ \else\Bigfont\it\fi\fi\fi}%
+ \let\tabnorfnt\niness \let\tablargefnt\elevenss
+ \let\tabLargefnt\twelvess \let\tabsmallfnt\eightss
+ \let\tabnorcleffnt\frtdc \let\tablargecleffnt\svtdc
+ \let\tabLargecleffnt\twtydc \let\tabsmallcleffnt\twelvedc
+ \def\tabstringfnt{\ifdim\internote<.95\Internote \eightss % 1.29 RDT
+ \else\ifdim\internote<1.19\Internote \niness
+ \else\ifdim\internote<1.43\Internote \twelvess
+ \else\frtss\fi\fi\fi}%
+\else
+ \ifnum\musicsize=\tw@nty
+ \else\ifnum\musicsize=\z@
+ \else\errmessage{\noexpand\musicsize=\the\musicsize\space not supported,
+ set to default of 20}%
+ \fi
+ \fi\musicsize\tw@nty
+ \let\musicLargefont\musictwentynine
+ \let\musiclargefont\musictwentyfour
+ \let\musicnorfont\musictwenty
+ \let\musicsmallfont\musicsixteen
+ \let\musictinyfont\musicthirteen
+ \let\xgreglargefont\xgregtwentyfour
+ \let\xgregLargefont\xgregtwentynine
+ \let\xgregnorfont\xgregtwenty
+ \let\xgregsmallfont\xgregsixteen
+ \let\xgregtinyfont\xgregthirteen
+ \let\sluru\slurutwenty \let\slurd\slurdtwenty
+ \let\hsluru\hslurutwenty \let\hslurd\hslurdtwenty
+ \let\meternorfont\twelvebf \let\metersmallfont\tenbf % version 1.18 RDT
+ \let\meterbigfont\frtbf \let\meterlargefont\svtbf
+ \let\meterLargefont\twtybf
+ \let\tinyppff\ppfftwelve
+ \let\smallppff\ppffsixteen
+ \let\normppff\ppfftwenty
+ \let\medppff\ppfftwentyfour
+ \def\txtfont{\ifdim\internote<.95\Internote \smalltype\it
+ \else\ifdim\internote<1.19\Internote \Smalltype\it
+ \else\ifdim\internote<1.43\Internote \normtype\it
+ \else\medtype\it\fi\fi\fi}%
+ \let\tabnorfnt\sixss \let\tablargefnt\eightss
+ \let\tabLargefnt\niness \let\tabsmallfnt\fivess
+ \let\tabnorcleffnt\tendc \let\tablargecleffnt\twelvedc
+ \let\tabLargecleffnt\frtdc \let\tabsmallcleffnt\eightdc
+ \def\tabstringfnt{\ifdim\internote<.95\Internote \fivess % 1.29 RDT
+ \else\ifdim\internote<1.19\Internote \sixss
+ \else\ifdim\internote<1.43\Internote \eightss
+ \else\niness\fi\fi\fi}%
+\fi\fi\fi}%
+
+\def\comput@specifics{\comput@fonts\comput@sizes}
+
+\def\comput@sizes{%
+ \Interligne\fontdimen\fiv@\musicnorfont
+ \Internote\h@lf\Interligne \big@spc.6\Interligne
+ \qn@width\fontdimen\si@\musixfont
+ \wn@width1\qu@rt\qn@width
+ \txt@ff\h@lf\qn@width
+ \qd@skip\qn@width\advance\qd@skip-\hlthick}
+
+%\newdimen\afterruleskip
+\newskip\afterruleskip
+\newdimen\staffbotmarg % marge au-dessous des portees
+\newdimen\stafftopmarg % au-dessus des portees
+\newdimen\line@width
+
+\def\normalvalue{1}
+\def\largevalue{1.2}
+\def\Largevalue{1.44}
+\def\smallvalue{.8}
+\def\tinyvalue{.64}
+
+\def\instrumentnumber#1{\n@v#1\relax
+ \min@n@v\@ne
+ \max@n@v\maxinstruments
+ \edef\nbinstruments{\the\n@v}}
+
+% staffsize
+
+\def\setsize#1#2{\n@v#1\relax % select instrument
+ \expandafter\edef\csname staffspacing\romannumeral\n@v\endcsname{#2}}
+
+% [version 1.15] moved out to the new register allocation code
+% \let\staffspacingi\@ne
+
+% number of staffs
+
+\def\setstaffs#1#2{\n@v#1\relax \csname n@p\romannumeral\n@v\endcsname#2}
+
+% staff lines
+
+\def\setlines#1#2{\n@v#1\relax % select instrument
+ \expandafter\def\csname n@l\romannumeral\n@v\endcsname{#2}}
+
+\newdimen\interportee % distance between staffs of the same instrument (incl)
+\newcount\noport@@
+\newcount\noinstrum@nt
+\newdimen\altportee
+
+\def\interstaff#1{\def\interfacteur{#1}}
+
+\def\s@l@ctinstr{%
+ \ifnum\noinstrum@nt>\maxinstruments % [version 1.15] -- from here --
+ \errmessage{Wrong instrument reference number \the\noinstrum@nt, maxinstruments=\the\maxinstruments}
+ \fi % [version 1.15] -- until here --
+ \edef\altitude{\csname k@i\romannumeral\noinstrum@nt\endcsname}%
+ \edef\st@ffs{\csname n@p\romannumeral\noinstrum@nt\endcsname}%
+ \edef\nblines{\csname n@l\romannumeral\noinstrum@nt\endcsname}%
+ \edef\internote{\csname i@n\romannumeral\noinstrum@nt\endcsname}%
+ \edef\int@rf{\csname interfacteur\romannumeral\noinstrum@nt\endcsname}% RDT 1.24
+ \interportee\int@rf\internote \interportee\tw@\interportee}% RDT 1.26
+
+\def\C@Inter{% RDT: corrected to work if \nblines > 6 (version 1.23)
+ % RDT: corrected for \nblines < 4 (version 1.28)
+ \stem@skip\interportee
+ \ifnum\nblines<\f@ur
+ \advance\stem@skip-\@ight\internote
+ \else
+ \advance\stem@skip-\nblines\internote
+ \advance\stem@skip-\nblines\internote
+ \advance\stem@skip\tw@\internote
+ \fi}
+
+%%% loop over instruments and staffs
+
+\def\count@portee{\advance\noport@@\@ne}
+
+\def\n@loop{\noinstrum@nt\z@ \loop\ifnum\noinstrum@nt<\nbinstruments
+ \advance\noinstrum@nt\@ne \s@l@ctinstr}
+
+\def\m@loop{\noinstrum@nt\z@ \loop\ifnum\noinstrum@nt<\maxinstruments
+ \advance\noinstrum@nt\@ne}
+
+\def\p@loop{\noport@@\z@ \loop\ifnum\noport@@<\st@ffs
+ \altportee\altitude \advance\altportee\noport@@\interportee}
+
+\def\Comp@High{\y@v\st@ffs\interportee \C@Inter\advance\y@v-\stem@skip}
+
+% to be used to make heavy bars at staff left
+% modified according to Werner Icking
+
+
+\def\groupbottom#1#2{\group@no#1\relax
+ \advance\group@no\m@ne\test@grnum % testgr@num advances group@no by 1...
+ \expandafter\def\csname lowersonginstrum\romannumeral\group@no\endcsname{#2}}
+
+\def\grouptop#1#2{\group@no#1\relax
+ \advance\group@no\m@ne\test@grnum % testgr@num advances group@no by 1...
+ \expandafter\def\csname uppersonginstrum\romannumeral\group@no\endcsname{#2}}
+
+\def\songbottom{\groupbottom1}
+\def\songtop{\grouptop1}
+
+% [version 1.15] moved out to the new register allocation code
+% \let\lowersonginstrumi\maxdimen
+% \let\uppersonginstrumi\z@
+
+\def\g@loop{\group@no\z@ \loop\ifnum\group@no<\maxgroups
+ \s@l@ctgroup}
+\def\s@l@ctgroup{%
+ \relax\test@grnum
+ \edef\g@b{\csname g@b\romannumeral\group@no\endcsname}% dimen (group bottom)
+ \edef\g@h{\csname g@h\romannumeral\group@no\endcsname}% dimen (group top)
+ \edef\lowersonginstrum{\csname lowersonginstrum\romannumeral\group@no\endcsname}% dimen (group top)
+ \edef\uppersonginstrum{\csname uppersonginstrum\romannumeral\group@no\endcsname}% dimen (group top)
+ }%
+\def\test@grnum{%
+ \ifnum\group@no<\z@ \group@no\@c \fi
+ \ifnum\group@no<\maxgroups \else
+ \count@\maxgroups \advance\count@\m@ne
+ \errmessage{Wrong group reference number \the\group@no! (valid: 0 to \the\count@)}% [version 1.15]
+ \group@no\z@% [version 1.15]
+ \fi
+ \advance\group@no\@ne}
+
+% \nobarmessages prevents bar messages
+
+\def\nobarmessages{\let\no@b\@ne}
+\let\no@b\empty
+
+% \nolinemessages prevents line messages in phase three
+\def\nolinemessages{\let\no@l\@ne}
+\let\no@l\empty
+
+% \nobarnumbers prevents bar numbering (Ian Collier)
+% \barnumbers restores bar numbering
+
+\def\nobarnumbers{\let\lin@bar\empty \let\freqbarno\maxdimen}
+\def\barnumbers{\let\freqbarno\normalvalue}
+\barnumbers
+
+% show barnumbers only at the beginning system
+
+\def\raisebarno{\f@ur\internote}
+\let\shiftbarno\z@
+
+\def\writebarno{\boxit{\eightbf\the\barno\barnoadd}}
+\def\systemnumbers{\nobarnumbers\let\lin@bar\@ne}
+
+% add 'a' behind the systembarnumber, if the previous line ended without
+% a bar rule
+
+\let\z@sw\empty
+\def\writezbarno{a}
+\def\barnoadd{\ifx\z@sw\@ne \writezbarno \fi}
+
+% suppress the beginning vertical rule for single-staff scores
+
+\def\startrule{\let\b@rule\empty}
+\def\nostartrule{\let\b@rule\z@}
+\startrule
+
+%%% distance between instruments (added to \interportee)
+
+% [version 1.15] moved out to the above of the new register allocation code
+% \newdimen\interinstrument
+% [version 1.15] moved out to the new register allocation code
+% \let\interinstrumenti\interinstrument
+
+\def\setinterinstrument#1#2{\n@v#1\relax % select instrument
+ \expandafter\def\csname interinstrument\romannumeral\n@v\endcsname{#2}}%
+
+\def\setinterstaff#1#2{\n@v#1\relax % select instrument RDT 1.24
+ \expandafter\def\csname interfacteur\romannumeral\n@v\endcsname{#2}}%
+
+%%% portees
+
+\newdimen\systemheight
+\newdimen\altplancher
+
+% New version by Werner Icking
+
+\def\writ@staffs{%
+ \y@\staffbotmarg \global\altplancher\staffbotmarg
+ \rlap{\n@loop\w@st\repeat
+% beginning vertical rule
+ \systemheight\y@
+ \advance\systemheight-\altplancher
+ \C@Inter \global\advance\systemheight-\stem@skip
+ \ifx\empty\b@rule \raise\altplancher\rlap{%
+ \vrule\@depth\hlthick\@height\systemheight\@width\lthick}\fi
+% 'Akkoladenklammer' don't know the english word
+ \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
+ \set@normalnotesize\hbox{\musixfont\fourt@@n}\hbox{\vrule\@height\g@h
+ \@width\internote}\hbox{\musixfont\fiv@t@@n}}\kern\internote}%
+ \fi
+ \repeat
+% systembarnumbers
+ \ifx\lin@bar\@ne \y@\altplancher \advance\y@\systemheight
+ \advance\y@\raisebarno \raise\y@\rlap{\kern\shiftbarno\writebarno}\fi
+% strut
+ \advance\stafftopmarg\staffbotmarg
+ \raise\stafftopmarg\hbox{\vrule\@height\systemheight\@width\z@}}}
+
+\def\uplap#1{\vbox\@to\z@{\vss#1}}
+
+% new version of \w@st by Werner Icking
+
+\newskip\instrum@in@group
+\def\w@st{%
+ \global\noport@@\z@ \global\altitude\y@
+ \global\instrum@in@group=\z@
+ {\g@loop
+ \ifnum\noinstrum@nt=\lowersonginstrum
+ \global\g@b\altitude
+ \fi
+ \ifnum\uppersonginstrum>\lowersonginstrum\relax
+ \ifnum\noinstrum@nt<\lowersonginstrum\relax
+ \else
+ \ifnum\noinstrum@nt>\uppersonginstrum\relax
+ \else
+% \message{\the\noinstrum@nt\space in-group!}%
+ \global\instrum@in@group=2\internote
+ \fi
+ \fi
+ \fi
+ \repeat}%
+% nullportee
+ \ifnum\st@ffs=\z@
+ \advance\y@\f@ur\Interligne
+ \else
+% multportee
+ \ifnum\st@ffs>\@ne \Comp@High\n@v\y@v \sp@pt\tw@
+ \advance\n@v\@cxxviii \divide\y@v\tw@
+%==== the parenthesis should be shifted to the left if within
+%==== songbottom -- songtop
+ \advance\y@v\y@
+ \raise\y@v\hbox{\kern -\instrum@in@group\mxsps\char\n@v\kern\instrum@in@group}%
+ \fi
+% normal staff
+ {\loop \staff@lines\ifnum\noport@@<\st@ffs \repeat}%
+ \fi % fin du \else pour 0 portees=chant
+ {\g@loop
+ \ifnum\noinstrum@nt=\uppersonginstrum \global\g@h\y@ \fi
+ \repeat}%
+ \ifnum\noinstrum@nt<\nbinstruments
+ \advance\y@\csname interinstrument\romannumeral\noinstrum@nt\endcsname \fi}
+
+\def\staff@lines{\raise\y@\rlap{\uplap{%
+ \ifcase\nblines
+ \or \Lin@\zLin@\zLin@
+ \or \Lin@\zLin@\Lin@\zLin@
+ \or \Lin@\zLin@\Lin@\zLin@\Lin@
+ \or \Lin@\Lin@\Lin@\Lin@
+ \or \Lin@\Lin@\Lin@\Lin@\Lin@
+ \or \Lin@\Lin@\Lin@\Lin@\Lin@\Lin@
+ \or \Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@
+ \or \Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@
+ \or \Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@
+ \fi\kernm\hlthick}}%
+ \global\advance\y@\interportee \count@portee}
+
+\def\zLin@{\kern\tw@\internote}
+\def\Lin@{\zLin@\kernm\lthick\hrule\@width\line@width}
+
+\newskip\boxitsep \boxitsep\thr@@\p@\relax
+
+\def\boxit#1{\vbox{\hrule\hbox{\vrule\kern\boxitsep\vbox{%
+ \kern\boxitsep\hbox{#1}\kern\boxitsep}\kern\boxitsep\vrule}\hrule}}
+\def\circleit#1{\setbox\ch@box\hbox{#1}\y@v\ht\ch@box
+ \y@v1.41\ht\ch@box % => sqrt(2)
+ \n@v\y@v \sp@pt\tw@ \advance\n@v69\rlap{#1}%
+ \raise\h@lf\ht\ch@box\rlap{\kern\h@lf\wd\ch@box\mxsps\char\n@v}}
+
+\def\thinrul@{\writ@rule\lthick}
+\def\thickrul@{\writ@rule\big@spc}
+
+%%% start normal score
+
+%%
+% Define a counter to keep track of total number of bars in piece
+% which are terminated by a barline. This is not necessarily
+% the same as \barno, in view of (eg) a bar containing
+% multiple bars rest.
+%%
+% !!! \barsinpi@c@ now used for \zbar and \xbar too, if you use them
+% the value of \barsinpi@c@ says nothing !!!
+%
+
+\newcount\barsinpi@c@
+\newcount\barno
+\newcount\startbarno \startbarno\@ne
+\newdimen\sign@skip
+\newdimen\maxsign@skip
+
+
+\def\piece@begina{\catcodesmusic \barno\startbarno \@l@mskip\elemskip
+ \barsinlin@\z@ \let\z@sw\empty \frenchspacing
+% \let\barrul@\thinrul@ \comp@internote} %-simick
+ \b@rrul@\comp@internote} %+simick
+
+\def\comp@internote{\comput@specifics
+ \n@loop
+ \internote\csname staffspacing\romannumeral\noinstrum@nt\endcsname\Internote
+ \repeat
+ \line@width\hsize}
+
+\def\piece@beginb{\advance\line@width-\parindent \s@indent\parindent
+ \writ@staffs \writ@names \advance\line@width\parindent}
+
+\def\piece@beginc{%
+% write clefs
+ \n@loop{\writ@clefi}\repeat \kern\clef@skip
+% everystaff stuff
+ \everyst@ff
+% write signatures
+ \sign@skip\z@ \n@loop{\s@l@ctsigns \let\@Ti\writ@sign \C@wsi}\repeat
+ \kern\sign@skip \m@loop \s@l@ctsigns \o@s\a@s \s@l@ctclefs \o@c\a@c \repeat
+ \let\Writ@newsigns\empty \hskip\z@ plus\p@ minus\p@ \lastbarpos\z@}
+
+\let\fil@begin\empty
+\let\Writ@meters\empty
+
+\def\startpiece{\ifstartmuflex@done\relax
+ \else\startmuflex
+ \immediate\write16{\noexpand\startmuflex launched by
+ \noexpand\startpiece }%
+ \fi
+ \barsinpi@c@\z@ \piece@begina \leavevmode \piece@beginb
+ \piece@beginc \fil@begin \Writ@meters\lastbarpos\lin@pos %%% 1.21: added \lastbarpos setting
+ \let\volta@set\empty % tells the kind of volta setting at next bar
+ \let\volta@cut\empty % flag to tell that a volta has been cut at line end
+ \let\volta@type\empty % the current volta setting (same defs as \volta@set)
+ \let\endvolta@set\empty % tells the kind of volta closing at next bar
+ \let\pdl@cut\empty % flag to signal a pedal rule has been cut at the end of a line % 1.21 RDT
+}
+
+\let\everystaff\empty
+\def\everyst@ff{\everystaff}% --> MuFlex Pass II
+
+%%% continue score
+
+\let\atnextline\empty
+
+\def\piece@conta{\catcodesmusic \atnextline \let\atnextline\empty
+ \comp@internote \leavevmode \barsinlin@\z@ }
+
+\def\contpiece{\noindent \piece@conta \writ@staffs \piece@beginc
+ \Writ@meters\wbarno@x\lastbarpos\lin@pos\addspace\afterruleskip %%% 1.21: added \lastbarpos setting
+}
+
+% like contpiece but with indentation (parindent) and instrument names
+% it's for changing the number of instrument in one piece
+
+\let\fil@indent\empty
+\def\Contpiece{\piece@conta \piece@beginb \fil@indent \piece@beginc
+ \Writ@meters\lastbarpos\lin@pos} %%% 1.21: added \lastbarpos setting
+
+
+%%% end score
+
+\let\ragg@d\empty
+\let\z@suspend@autoflag\empty % used in musixcpt only
+
+\def\z@suspend{%
+ \z@suspend@autoflag % used in musixcpt only
+% cut pedal rule 1.21 RDT
+ \ifdim\pdl@pos=\z@\else%
+ \noport@@\z@
+ \znotes\selectinstrument{\pdl@instr}\selectstaff{\pdl@staff}\pdlc@\en%
+ \global\def\pdl@cut{\@one}%
+ \fi
+% cutvolta
+ \write@volta@hrule
+ \ifx\volta@type\tw@\let\volta@set\tw@ \let\volta@type\empty
+ \let\volta@cut\tw@\fi % restart volta at next line if continuous
+ \ifx\volta@type\thr@@\let\volta@set\thr@@ \let\volta@type\empty
+ \let\volta@cut\thr@@ \fi % restart volta at next line if continuous
+% cutoctline
+ \o@loop
+ \ifdim\o@x<\maxdimen \let\T@ii\n@ii \C@TO \o@x\z@ \fi
+ \repeat
+% cut trill
+ \tr@loop
+ \ifdim\tr@x<\maxdimen \let\T@ii\n@ii \C@TR \tr@x\z@ \fi
+ \repeat
+% cutslur
+ \ifnum\N@s>\z@% % any pending slurs ?
+ \n@viii\maxslurs % test all possible slur numbers [version 1.15] (Hiroaki)
+ \advance\n@viii\m@ne
+ \loop\ifnum\n@viii>\m@ne
+ \s@l@ctslur\n@viii\relax
+ \edef\@sense{\the\s@s}%
+ \if x\@sense% % sense flag
+ \else% % found slur
+ \edef\@dotted{\the\s@d}% +ickd
+ \y@v\lin@pos % get current position
+ \advance\y@v-\s@x % slurlength = currentpos - startpos
+ \let\@Ti\@ne % set flag for \writ@slur (\staffbotmarg)
+ \ifnum\s@z=\maxdimen \s@z\s@y \fi % flag (\breakslur not used -> tie)
+ \writ@slur\s@y\s@z\y@v\p@% avoid touching the bar rule
+ \s@x\z@% reset startpos for next line
+ \s@z\maxdimen% reset breakslur
+ \fi
+ \advance\n@viii\m@ne \repeat
+ \fi\s@indent\z@
+%
+ \ragg@d\par\lin@pos\z@ \endcatcodesmusic}
+
+\def\stoppiec@{\check@nopen\n@wbar\z@suspend}
+%\def\stoppiece{\stoppiec@\@nds@ction} %-simick
+\def\stoppiece{\T@bil\fi\stoppiec@\@nds@ction} %+simick
+\let\endpiece\stoppiece
+
+\def\zstoppiec@{\check@nopen\zn@wbar\z@suspend}
+%\def\zstoppiece{\zstoppiec@\@nds@ction} %-simick
+\def\zstoppiece{\T@bil\fi\zstoppiec@\@nds@ction}%+simick
+% if you need a line which appears ragged
+\def\raggedstoppiece{\ifx\ragg@d\empty \fil@{r}\fi % version 1.18 RDT (from musixext)
+ \check@nopen\n@wbar\hfill\z@suspend\@nds@ction}
+
+\def\Stoppiece{\setdoubleBAR\stoppiece}
+\let\Endpiece\Stoppiece
+
+%%% short excerpts
+
+\def\startextract{\lastbarno\z@ \barno\startbarno
+ \piece@begina\setbox\w@rkbox\hbox{\writ@staffs}% to compute heights
+ \setbox\w@rkbox\hbox\bgroup% !! all changes are local !!
+ \line@width\maxdimen
+ \maxbarsinlin@\maxdimen %+simick
+ \let\T@bil\iftrue \let\everyst@ff\everystaff \let\fil@spc\empty
+ \let\fil@termskip\empty \let\fil@signs\empty \let\fil@barno\empty
+ \let\leftrepeat\leftrepeat@II \let\leftrightrepeat\leftrightrepeat@II
+ \piece@beginc\Writ@meters\lastbarpos\lin@pos\let\pdl@cut\empty\addspace\afterruleskip}
+ %%% 1.21: added \lastbarpos and \pdl@cut settings
+
+% enable left and right extracts (e.g. for footnotes)
+
+\let\extractline\centerline
+
+\def\endextract{\let\z@suspend\write@volta@hrule
+ \stoppiec@\egroup\line@width\wd\w@rkbox
+ \extractline{\writ@names\writ@staffs\unhbox\w@rkbox}%
+ \endcatcodesmusic}
+\def\zendextract{\let\stoppiec@\zstoppiec@ \endextract}
+
+%%
+% Redefine \t@rmskip to include a macro for writing a record to a file,
+% and define the macro
+%%
+
+\newdimen\x@skip
+\newdimen\n@skip
+
+\let\fil@termskip\empty
+\def\t@rmskip{\kern\n@skip\advance\x@skip\n@skip
+ \advance\lin@pos\x@skip
+ % case of \hardnotes
+ \ifnum\V@sw>0\relax
+ \y@v\n@skip \fil@spc
+ \fi
+ % end case \hardnotes
+ \fil@termskip\global\n@skip\z@ \global\x@skip\z@ \let\V@sw\z@}
+
+%%
+% Define the amount of space before each barline,
+%%
+
+%\newdimen\beforeruleskip
+\newskip\beforeruleskip
+
+%%
+% We must distinguish between scalable ('soft'=1) material in the bar
+% (eg noteboxes) and absolute ('hard'=0) widths such as those from
+% barlines and clef symbols
+% Hence introduce a switch defining this attribute
+%%
+
+\newcount\widthtyp@ \widthtyp@\@ne
+
+%%% bar numbers
+
+\newcount\lastbarno
+
+\def\writethebarno{\fontbarno\the\barno\kernm\qn@width}
+\def\fontbarno{\it}
+
+\def\wbarno@x{%%%% version 1.21: RDT moved \lastbarpos\lin@pos after calls to \Writ@meters
+ \ifx\volta@set\empty
+ \n@iii\barno \divide\n@iii\freqbarno\relax
+ \ifnum\n@iii=\lastbarno
+ \else \y@\altplancher \advance\y@\systemheight \advance\y@\tw@\internote
+ \raise\y@\llap{\writethebarno}\fi
+ \else
+ \ifx\volta@cut\empty
+ \else % volta was cut, there is nothing colliding with bar number.
+ \n@iii\barno \divide\n@iii\freqbarno\relax
+ \ifnum\n@iii=\lastbarno
+ \else \y@\altplancher \advance\y@\systemheight \advance\y@\tw@\internote
+ \raise\y@\llap{\writethebarno}\fi
+ \fi
+ \write@volta
+ \fi
+ \ifx\pdl@cut\empty % 1.21 RDT
+ \else% pedal rule was cut at the end of the previous line
+ \global\pdl@pos\lin@pos\let\pdl@cut\empty % reset \ped@pos
+ \fi
+ \b@rrul@ %+simick
+ \n@iii\barno \divide\n@iii\freqbarno\relax \lastbarno\n@iii }
+
+%%% pass selective scoring
+
+\newskip\cut@v % contains width of bar rule
+\newskip\init@volta@pos % start position of volta
+\newskip\volta@startcor %+simick volta start correction in case of leftrepeats
+\newskip\volta@endcor %+simick volta end correction in case of rightrepeats
+
+\def\raisevolta{\f@ur\internote}
+
+\newbox\writ@volta@box
+
+\def\voltadot{.}%
+\def\write@volta{% writes the requested |n. and moves the things for further use
+ \ifx\volta@type\empty\else\errmessage{/setvolta collision!}\fi
+ \y@\altplancher \advance\y@\systemheight
+ \advance\y@\raisevolta
+% \setbox\writ@volta@box\rlap{\vrule % \musixfont\sixt@@n %-simick
+% \rm\ \vphantom{\^{\volta@text}\strut gq}\volta@text\voltadot}% %-simick
+ \setbox\writ@volta@box\rlap{\vrule\rm\strut\ \volta@text\voltadot}% %+simick
+ \xdef\thevolta@boxheight{\the\ht\writ@volta@box}%
+ \xdef\thevolta@boxdepth{\the\dp\writ@volta@box}%
+ \ifx\volta@cut\empty \else\setbox\writ@volta@box\null
+ \fi % if continuation, make writ@volta@box null
+% \raise\y@\llap{\box\writ@volta@box}% %-simick
+ \kernm\volta@startcor\raise\y@\llap{\box\writ@volta@box}\kern\volta@startcor %+simick
+ \let\volta@type\volta@set
+ \let\volta@set\empty
+ \let\volta@cut\empty
+% \init@volta@pos\lin@pos\relax %-simick
+ \init@volta@pos\lin@pos \advance\init@volta@pos-\volta@startcor %+simick
+}%
+
+\def\write@volta@hrule{% write the hrule of volta bar at its end
+ \ifx\volta@type\empty
+ \else
+ \y@v\lin@pos \advance\y@v-\init@volta@pos
+% \global\advance\cut@v\lthick \advance\y@v-\cut@v %-simick
+% \global\advance\cut@v\lthick %-simick
+ \ifnum\barsinlin@=\maxbarsinlin@ %+simick
+ \y@i\z@ %+simick
+ \else %+simick
+ \y@i\cut@v \advance\y@i-\volta@endcor %+simick
+ \fi %+simick
+ \advance\y@v-\y@i %+simick
+ \y@\altplancher \advance\y@\systemheight
+ \advance\y@\raisevolta
+ \raise\y@\llap{%
+ \raise\thevolta@boxheight
+% \hbox{\vrule\@height\z@\@depth\lthick\@width\y@v}}% %-simick
+ \hbox{\vrule\@height\z@\@depth\lthick\@width\y@v}\kern\y@i}% %+simick
+% check whether termination has been required
+ \ifx\endvolta@set\thr@@ \let\volta@type\thr@@\fi % \endvoltabox forces type \thr@@
+ \ifx\endvolta@set\empty \else \write@volta@endbox\fi
+ % now set volta@type \@ne to \empty
+ \ifx\volta@type\@ne \let\volta@type\empty\fi
+ \fi
+}%
+
+\def\write@volta@endbox{% write the hrule of volta bar at its end
+ \ifx\volta@type\empty
+ \else
+% \y@v\lin@pos \advance\y@v-\init@volta@pos %-simick
+% \global\advance\cut@v\lthick \advance\y@v-\cut@v %-simick
+% \global\advance\cut@v\lthick %-simick
+ \y@\altplancher \advance\y@\systemheight
+ \advance\y@\raisevolta
+ \ifx\volta@type\thr@@
+% \raise\y@\llap{\raise\thevolta@boxheight\hbox{\true@endvoltabox}}% %-simick
+ \raise\y@\llap{\raise\thevolta@boxheight\hbox{\true@endvoltabox}\kern\y@i}%+simick
+ \fi
+% now force volta@type to \empty
+ \let\volta@type\empty
+ \let\endvolta@set\empty
+ \let\volta@cut\empty
+ \fi
+}%
+
+%\check
+
+\let\writ@volta\empty % provisional for testing %
+
+\let\volta@set\empty % tells the kind of volta setting at next bar
+ % \@ne = single \setvolta, \tw@ = \Setvolta
+ % \thr@@ = setvoltabox
+
+\let\volta@type\empty % the current volta setting (same defs as \volta@set)
+\let\volta@cut\empty
+
+\let\endvolta@set\empty % tells the kind of volta closingg at next bar
+ % \@ne = not used, \tw@ = terminate \Setvolta[box]
+ % \thr@@ = terminate \Setvolta[box] with an ending hook
+
+\def\setvolta{\let\volta@set\@ne \gen@setvolta}
+\def\Setvolta{\let\volta@set\tw@ \gen@setvolta}
+\def\setvoltabox{\let\volta@set\thr@@ \gen@setvolta}
+
+\def\gen@setvolta#1{\def\volta@text{#1}}
+
+\def\setendvolta{%
+ \ifx\volta@type\empty\volta@err
+ \else\let\endvolta@set\tw@
+ \fi}
+
+\def\setendvoltabox{%
+ \ifx\volta@type\empty\volta@err
+ \else\let\endvolta@set\thr@@
+ \fi}
+
+\let\endvolta\setendvolta
+\let\endvoltabox\setendvoltabox
+
+\def\true@endvoltabox{\raise-\thevolta@boxheight
+ \llap{\vrule\@height\thevolta@boxheight \@depth\thevolta@boxdepth}}
+
+\def\volta@err{\immediate\write16{%
+ type=\ifx\volta@type\empty 0\else \number\volta@type\fi,
+ set=\ifx\volta@set\empty 0\else \number\volta@set\fi}%
+\errmessage{\noexpand\endvolta, %\noexpand\contvolta,
+\noexpand\endvoltabox\space does not match opening \noexpand\S[s]volta...}}
+
+
+%%% line breaking stuff
+
+\let\@nds@ction\empty
+
+\newcount\barsinlin@
+\newcount\maxbarsinlin@
+
+%\def\@LeftRp{\stoppiec@\contpiece\addspace{\h@lf\afterruleskip}% %-simick
+% \kernm\afterruleskip\l@eftrepeat\kern\afterruleskip} %-simick
+\def\@LeftRp{\stoppiec@\l@@ftrepeat\advance\volta@startcor-\afterruleskip %+simick
+ \contpiece\addspace{\h@lf\afterruleskip}% %+simick
+ \kernm\afterruleskip\l@eftrepeat\kern\afterruleskip %+simick
+ \advance\lastbarpos\afterruleskip \b@rrul@} %+simick
+
+\def\@LeftRpCont{\stoppiec@\l@@ftrepeat\advance\volta@startcor-\afterruleskip % RDT 1.28
+ \let\z@sw\@ne % turn on continuation bar number
+ \contpiece\addspace{\h@lf\afterruleskip}%
+ \kernm\afterruleskip\l@eftrepeat\kern\afterruleskip%
+ \advance\lastbarpos\afterruleskip \b@rrul@}
+
+\def\T@bil{\advance\barsinlin@\@ne \ifnum\barsinlin@<\maxbarsinlin@}
+
+\def\barre{\T@bil \@bar\else\stoppiec@\contpiece \fi}
+\def\xbar{\@bar\advance\barsinpi@c@\m@ne}
+\def\zbar{\T@bil \zn@wbar\else\zstoppiec@\contpiece \fi}
+\def\alaligne{\stoppiece\contpiece}
+\def\zalaligne{\zstoppiece\contpiece}
+
+% ...@II means used in the *second* tex pass
+
+\def\leftrepeat@II{%
+\T@bil
+ \setleftrepeat\@bar
+\else
+ \@LeftRp %
+\fi}
+
+\def\zleftrepeat@II{% % RDT 1.28
+\advance\barno\m@ne%
+\T@bil
+ \setleftrepeat\@bar%
+\else
+ \@LeftRpCont% % RDT 1.28
+\fi}
+
+
+\let\leftrepeat\leftrepeat@II
+\let\zleftrepeat\zleftrepeat@II % RDT 1.28
+
+\def\zzleftrepeat{% % RDT 1.28
+\advance\barno\m@ne%
+\stoppiece%
+\let\z@sw\@ne%
+\contpiece%
+\advance\barno\m@ne%
+\leftrepeat%
+}
+
+\def\leftrightrepeat@II{%
+\T@bil
+ \setleftrightrepeat\@bar
+\else
+ \setrightrepeat\@LeftRp
+\fi}
+
+\def\zzrightrepeat{% % RDT 1.28
+ \advance\barno\m@ne%
+ \setrightrepeat\stoppiece
+ \let\z@sw\@ne
+ \contpiece
+}
+
+\def\zrightrepeat{% % RDT 1.28
+\advance\barno\m@ne
+\setrightrepeat
+\T@bil
+ \@bar
+\else
+ \stoppiec@
+ \let\z@sw\@ne
+ \contpiece
+\fi}
+
+\def\zzleftrightrepeat{% % RDT 1.28
+ \advance\barno\m@ne
+ \setrightrepeat
+ \stoppiece
+ \let\z@sw\@ne
+ \contpiece
+ \addspace{\h@lf\afterruleskip}%
+ \kernm\afterruleskip\l@eftrepeat\kern\afterruleskip
+ \advance\lastbarpos\afterruleskip \b@rrul@
+}
+
+\def\zleftrightrepeat@II{% % RDT 1.28
+\advance\barno\m@ne
+\T@bil
+ \setleftrightrepeat\@bar
+\else
+ \stoppiec@
+ \let\z@sw\@ne
+ \contpiece
+\fi}
+
+\let\leftrightrepeat\leftrightrepeat@II
+\let\zleftrightrepeat\zleftrightrepeat@II % RDT 1.28
+
+\def\alapage{\stoppiece\eject\contpiece}
+\def\zalapage{\zstoppiece\eject\contpiece}
+
+% minuscule: une seule barre
+% majuscule: double barre
+
+\let\Writ@newsigns\empty
+
+\def\updat@context{\writ@newclefs
+ \T@bil \wbarno@x\Writ@newsigns\Writ@meters\lastbarpos\lin@pos\addspace\afterruleskip
+%%% 1.21: added \lastbarno setting
+ \else\Writ@newsigns\z@suspend\contpiece \fi}
+
+\def\changecontext{\showallbarrules\n@wbar\updat@context}
+\def\Changecontext{\showallbarrules\setdoublebar\changecontext}
+\def\zchangecontext{\advance\n@skip\beforeruleskip \widthtyp@\@ne \t@rmskip
+ \zn@wbar\updat@context}
+
+\def\pchangecontext{\showallbarrules\n@wbar
+ \writ@newclefs\Writ@newsigns\z@suspend\eject\contpiece}
+\def\pChangecontext{\setdoublebar\pchangecontext}
+
+%%% bars, repeatbars, ...
+
+%%
+% Change ... to add skip \beforeruleskip to the preceeding notebox,
+% and to set the 'soft' switch for the output record
+%%
+%%
+% Redefine \n@wbar to write the bar line thickness to file,
+% then reset \n@skip and \x@skip
+%%
+
+\newskip\lastbarpos
+\let\fil@barno\empty
+\let\atnextbar\empty
+
+\def\n@wbar{%
+ \t@rmskip % essai DT
+ \advance\n@skip\beforeruleskip \widthtyp@\@ne \t@rmskip
+% \ifdim\cut@v>\z@ \else\ifx\barrul@\thinrul@ \else\global\cut@v.9\Interligne \fi\fi %-simick
+% \barrul@\widthtyp@\z@ \fil@termskip\let\barrul@\thinrul@ %-simick
+ \barrul@\widthtyp@\z@ \fil@termskip %+simick
+ \advance\barsinpi@c@\@ne \fil@barno
+ \ifx\no@b\empty \message{bar \the\barno}\fi
+ \advance\barno\@ne \advance\lin@pos\x@skip \atnextbar \let\atnextbar\empty
+ \write@volta@hrule %+simick
+% \global\cut@v\z@ % <===================================== inserted %-simick
+ \global\n@skip\z@ \global\x@skip\z@ \let\z@sw\empty
+% \write@volta@hrule %-simick
+}%
+
+\def\@bar{\n@wbar\wbarno@x\lastbarpos\lin@pos\addspace\afterruleskip}
+
+\def\zn@wbar{\t@rmskip\advance\barsinpi@c@\@ne \let\z@sw\@ne}
+
+\def\small@spc{\addspace{\h@lf\big@spc}}
+
+\def\b@rrul@{\let\barrul@\thinrul@ %+simick
+ \global\cut@v\lthick \global\volta@endcor-\thr@@\lthick \global\volta@startcor\z@} %+simick
+\def\r@ightrepeat{%
+ \hbox{\writ@colons\addspace\big@spc\thinrul@\small@spc\thickrul@}}
+\def\r@@ghtrepeat{% %+simick
+ \global\cut@v\big@spc \global\advance\cut@v\lthick \global\advance\cut@v\h@lf\big@spc %+simick
+ \global\volta@endcor\cut@v \global\advance\cut@v\big@spc \global\volta@startcor\z@} %+simick
+\def\l@eftrepeat{%
+ \hbox{\thickrul@\small@spc\thinrul@\addspace\big@spc\writ@colons}}
+\def\l@@ftrepeat{% %+simick
+ \global\cut@v\big@spc \global\advance\cut@v\h@lf\big@spc \global\advance\cut@v\lthick %+simick
+ \global\advance\cut@v\big@spc \global\volta@endcor\z@ \global\volta@startcor\big@spc %+simick
+ \global\advance\volta@startcor\lthick \global\advance\volta@startcor\h@lf\big@spc} %+simick
+\def\l@eftrightrepeat{\hbox{\writ@colons\addspace\big@spc\thickrul@
+ \small@spc\thickrul@\addspace\big@spc\writ@colons}}
+\def\l@@ftrightrepeat{% %+simick
+ \global\cut@v\big@spc \global\advance\cut@v\big@spc \global\volta@endcor\cut@v %+simick
+ \global\advance\cut@v\h@lf\big@spc %+simick
+ \global\volta@startcor\big@spc \global\advance\volta@startcor\big@spc %+simick
+ \global\advance\cut@v\volta@endcor \global\advance\volta@startcor-\lthick} %+simick
+
+\def\doublebar{\showallbarrules\setdoublebar\barre}% double barre de mesure
+%\def\setdoubleBAR{\showallbarrules\def\barrul@{\thinrul@\small@spc\thickrul@}} %-simick
+\def\setdoubleBAR{\showallbarrules\def\barrul@{\thinrul@\small@spc\thickrul@}% %+simick
+ \global\cut@v\lthick \global\advance\cut@v\h@lf\big@spc \global\volta@endcor\cut@v %+simick
+ \global\advance\cut@v\big@spc \global\volta@startcor\z@} %+simick
+%\def\setemptybar{\def\barrul@{\relax}} %-simick
+\def\setemptybar{\def\barrul@{\relax}% %+simick
+ \global\cut@v\z@ \global\volta@endcor-\f@ur\lthick \global\volta@startcor\z@} %+simick
+\def\setdoublebar{\showallbarrules\global\cut@v.4\Interligne
+ \global\advance\cut@v\tw@\lthick \global\volta@endcor\z@ \global\volta@startcor\z@ %+simick
+ \def\barrul@{\thinrul@\addspace{.4\Interligne}\thinrul@}}
+
+\def\rightrepeat{\setrightrepeat\barre}
+
+%\def\setrightrepeat{\showallbarrules\let\barrul@\r@ightrepeat} %-simick
+\def\setrightrepeat{\showallbarrules\let\barrul@\r@ightrepeat \r@@ghtrepeat} %+simick
+%\def\setleftrepeat{\showallbarrules\let\barrul@\l@eftrepeat} %-simick
+\def\setleftrepeat{\showallbarrules\let\barrul@\l@eftrepeat \l@@ftrepeat} %+simick
+%\def\setleftrightrepeat{\showallbarrules\let\barrul@\l@eftrightrepeat} %-simick
+\def\setleftrightrepeat{\showallbarrules\let\barrul@\l@eftrightrepeat \l@@ftrightrepeat}%+simick
+
+% write colons on all staffs (a part of [left][right]repeat symbols
+
+%\def\writ@colons{\n@loop{\w@coli}\repeat}
+
+
+
+\def\writ@colons{\n@loop{\w@coli}\repeat}
+\def\w@coli{\p@loop
+ {\ifnum\nblines=6\tabc@lsix%
+ \else\ifnum\nblines=4\tabc@lfour%
+ \else\raise\altportee\hbox{\raise4\internote\hbox{\keychar55}}\fi\fi}\count@portee\repeat}
+
+%%%% 1.29 RDT
+\def\tabc@lsix{\raise\altportee\hbox{%
+ %\raise7\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}% uncomment if wanted
+ \raise5\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}%
+ \raise3\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}% comment out if unwanted
+ \raise1\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}%
+ %\raise-1\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}% uncomment if wanted
+}}
+
+%%%% 1.29 RDT
+\def\tabc@lfour{\raise\altportee\hbox{%
+ \raise3\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}%
+ \raise1\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}% comment out if unwanted
+ \raise-1\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}%
+}}
+%%% seperated and full barlines
+
+%\def\rul@full#1{\raise\altplancher\rlap{\vrule\@depth\hlthick
+% \@height\systemheight\@width#1}\addspace#1}
+
+\def\rul@full#1{\hbox{\raise\altplancher\rlap{\vrule\@depth\hlthick
+ \@height\systemheight\@width#1}}\addspace#1}
+
+\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
+ \expandafter
+ \ifx\rul@hidden\relax % if \relax = never hidden
+ \vrule\@depth\hlthick\@width#1\@height\y@v
+ \else
+ \expandafter
+ \ifx\rul@hidden\thr@@ % if \thr@@ = not hidden one time,
+ \vrule\@depth\hlthick\@width#1\@height\y@v
+ \global\expandafter\let\rul@hidden\tw@ % reset to perm. hidden
+ \else
+ \expandafter
+ \ifx\rul@hidden\tw@ % if \tw@ = always hidden
+ \relax
+ \else
+ \expandafter
+ \ifx\rul@hidden\@ne % if \@ne = hidden only one time
+ \global\expandafter\let\rul@hidden\relax
+ \fi
+ \fi
+ \fi
+ \fi}}\repeat\addspace#1}
+
+%== hides (only) next bar line for specified instrument
+\def\Hidebarrule#1{\global\expandafter\let\csname h@bl\romannumeral#1\endcsname\@ne}
+
+%== hides all next bar lines for specified instrument
+\def\hidebarrule#1{\global\expandafter\let\csname h@bl\romannumeral#1\endcsname\tw@}
+
+%== force showing all bar lines for specified instrument
+\def\showbarrule#1{\global\expandafter\let\csname h@bl\romannumeral#1\endcsname\relax}
+
+%== force showing all bar lines for all instruments
+\def\showallbarrules{%
+ %\ifx\writ@rule\rul@sep\relax
+ \n@loop
+ \global\expandafter\let\csname h@bl\romannumeral\noinstrum@nt\endcsname\relax
+ \repeat
+ %\fi
+}
+
+%== force showing (only) next bar line for specified instrument
+\def\Showbarrule#1{\global\expandafter\let\csname h@bl\romannumeral#1\endcsname\thr@@}
+
+% standard vrules over all instruments
+\def\stdbarrules{\let\writ@rule\rul@full }
+
+% separated vrules par instrum
+\def\sepbarrules{\let\writ@rule\rul@sep }
+\stdbarrules
+
+%%% signs
+
+\def\s@l@ctsigns{\edef\a@s{\csname a@s\romannumeral\noinstrum@nt\endcsname}%
+ \edef\o@s{\csname o@s\romannumeral\noinstrum@nt\endcsname}}%
+
+\def\setsign#1#2{\noinstrum@nt#1\relax
+ \let\Writ@newsigns\writ@newsigns % only write them, when they are touched
+ \s@l@ctsigns % select instrument
+ \a@s#2\relax %
+}
+
+\def\generalsignature#1{\let\Writ@newsigns\writ@newsigns
+ \m@loop \s@l@ctsigns \a@s#1\repeat}
+
+% Inhibits writing erasing naturals at next change of context
+\def\ignorenats{\m@loop \s@l@ctsigns \o@s\z@ \repeat}
+
+\def\changesignature{\t@rmskip\Writ@newsigns}
+
+\def\writ@sign{\ifnum\a@s=\z@ \else
+ \n@v\@lii
+ \ifnum\a@s>\z@ \C@sig\t@n
+ \C@sh\@ne\s@v@n
+ \C@sh\tw@\@l@v@n
+ \C@sh\thr@@\@ight
+ \C@sh\f@ur\fiv@
+ \C@sh\fiv@\nin@
+ \C@sh\si@\si@\fi
+ \n@v\@l
+ \ifnum\a@s<\z@ \C@sig\si@
+ \C@fl\@ne\nin@
+ \C@fl\tw@\fiv@
+ \C@fl\thr@@\@ight
+ \C@fl\f@ur\f@ur
+ \C@fl\fiv@\s@v@n
+ \C@fl\si@\thr@@\fi
+ \fi}
+
+\def\C@sh#1#2{\ifnum\a@s>#1\C@sig#2\fi}
+\def\C@fl#1#2{\ifnum\a@s<-#1\C@sig#2\fi}
+
+%%
+% Augment \writ@newsigns so that
+% (1) the space taken by the mid-line sign change is written to the file;
+% (2) the new value of \sign@skip is written to the file
+% Note that this is not necessarily the same value
+% as the mid-line value, which includes cancellation naturals when
+% the key signature changes from N flats to M sharps (or vice-versa)
+%%
+
+\let\fil@signs\empty
+
+\def\writ@newsigns{\sign@skip\z@
+ \n@loop{\s@l@ctsigns \let\@Ti\writ@newsign \C@wsi}\repeat
+ \n@skip\sign@skip \widthtyp@\z@ \t@rmskip
+ \m@loop \s@l@ctsigns \o@s\a@s \repeat
+ \let\Writ@newsigns\empty \fil@signs }
+
+\def\upd@width#1{\ifdim#1<\wd\toks@box \global#1\wd\toks@box \fi}
+\def\writ@box{\leavevmode\raise\altportee\rlap{\box\toks@box}}
+
+\newcount\ut@ref
+
+\def\get@refs#1#2#3#4{% #1-#4: cle correspondante 0=sol, 5-6=fa, 1-4=ut
+ \ifcase\noport@@ \ut@ref\z@ \or \ut@ref#1\or \ut@ref#2\or
+ \ut@ref#3\or \ut@ref#4\fi
+ \relax \ifnum \ut@ref=9\relax \ut@ref-1\relax\fi
+ \global\ut@ref\ut@ref }
+
+ %\def\writ@newsign{\ifnum\a@s=\z@ \else\kern.4\Internote \fi
+ % \ifnum\o@s<\z@ \w@flats\w@sharps\else\w@sharps\w@flats \fi}
+
+\def\writ@newsign{\ifnum\a@s=\z@ \else\kern.4\Internote \fi
+ \ifnum\o@s<\z@ \w@cancelflats\w@flats\w@sharps
+ \else\w@cancelsharps\w@sharps\w@flats \fi}
+
+\def\w@flats{\W@Fl\z@\si@ \W@Fl\@ne\nin@ \W@Fl\tw@\fiv@ \W@Fl\thr@@\@ight
+ \W@Fl\f@ur\f@ur \W@Fl\fiv@\s@v@n \W@Fl\si@\thr@@}
+
+\def\w@cancelflats{\W@canFl\z@\si@ \W@canFl\@ne\nin@ \W@canFl\tw@\fiv@
+ \W@canFl\thr@@\@ight \W@canFl\f@ur\f@ur \W@canFl\fiv@\s@v@n \W@canFl\si@\thr@@}
+
+ %\def\W@Fl#1#2{%
+ % \ifnum\a@s<-#1\n@v\@l \C@sig#2\else \ifnum\o@s<-#1\n@v\@liv \C@sig#2\fi \fi}
+
+\def\W@Fl#1#2{%
+ \ifnum\a@s<-#1\n@v\@l \C@sig#2\else \ifnum\o@s<-#1\relax\fi \fi}
+
+\def\W@canFl#1#2{%
+ \ifnum\a@s<-#1\relax\else \ifnum\o@s<-#1\n@v\@liv \C@sig#2\fi \fi}
+
+\def\w@sharps{\W@Sh\z@\t@n \W@Sh\@ne\s@v@n \W@Sh\tw@\@l@v@n
+ \W@Sh\thr@@\@ight \W@Sh\f@ur\fiv@ \W@Sh\fiv@\nin@ \W@Sh\si@\si@}
+
+\def\w@cancelsharps{\W@canSh\z@\t@n \W@canSh\@ne\s@v@n \W@canSh\tw@\@l@v@n
+ \W@canSh\thr@@\@ight \W@canSh\f@ur\fiv@ \W@canSh\fiv@\nin@ \W@canSh\si@\si@}
+
+ %\def\W@Sh#1#2{%
+ % \ifnum\a@s>#1\n@v\@lii \C@sig#2\else\ifnum\o@s>#1\n@v\@liv \C@sig#2\fi \fi}
+
+\def\W@Sh#1#2{%
+ \ifnum\a@s>#1\n@v\@lii \C@sig#2\else\ifnum\o@s>#1\relax\fi \fi}
+
+\def\W@canSh#1#2{%
+ \ifnum\a@s>#1\relax\else\ifnum\o@s>#1\n@v\@liv \C@sig#2\fi \fi}
+
+\def\C@wsi{\s@l@ctclefs \p@loop \count@portee \expandafter\get@refs\the\a@c
+ \setbox\toks@box\hbox{\kern.4\Internote \@Ti \kern.4\Internote}%
+ \upd@width\sign@skip \writ@box \repeat}
+
+ %\def\C@sig#1{\n@iii#1%
+ % \ifnum\ut@ref>\z@
+ % \advance\n@iii\ut@ref \advance\n@iii\ut@ref
+ % \ifnum\ut@ref=\si@ \advance\n@iii-\s@v@n \fi
+ % \ifnum\ut@ref>\thr@@ \advance\n@iii-\s@v@n \fi
+ % \ifnum\n@iii>\@l@v@n \advance\n@iii-\s@v@n \fi
+ %\fi
+ %\advance\n@iii-\tw@ \raise\n@iii\internote
+ %\hbox\@to\tw@\internote{\hss\keychar\n@v\hss}}
+
+\def\C@sig#1{\n@iii#1% Correction by W. Icking
+ \advance\n@iii\ut@ref \advance\n@iii\ut@ref
+ \ifnum\ut@ref=\si@ \advance\n@iii-\fourt@@n%
+ \else \ifnum\ut@ref>\z@ \advance\n@iii-\s@v@n \fi\fi
+ \ifnum\n@iii<\@ne \global\advance\n@iii\s@v@n \fi
+ \ifnum\n@iii<\@ne \global\advance\n@iii\s@v@n \fi
+ \ifnum\n@iii>\@l@v@n \advance\n@iii-\s@v@n \fi
+ \ifnum\n@iii>\@l@v@n \advance\n@iii-\s@v@n \fi
+ \advance\n@iii-\tw@ \raise\n@iii\internote
+ \hbox\@to\tw@\internote{\hss\keychar\n@v\hss}}
+
+%%% meterindicators
+
+\def\s@l@ctm@t{\edef\m@t{\csname m@t\romannumeral\noinstrum@nt\endcsname}}
+
+\def\setmeter#1#2{\noinstrum@nt#1\relax % select instrument
+ \let\Writ@meters\writ@meters % only write them, when they are touched
+ \s@l@ctm@t \m@t{#2\empty\empty\empty}}
+
+\def\generalmeter#1{\let\Writ@meters\writ@meters
+ \m@loop \s@l@ctm@t \m@t{{#1}{#1}{#1}{#1}}\repeat}
+
+%%
+% Redefine \writ@meters to set the 'hard' switch for
+% \t@rmskip, indicating that this length is unscaleable
+%%
+
+% \meterskip influence the space before !first! writemeters
+\newskip\meterskip
+
+\def\writ@meters{\addspace\meterskip \meterskip\z@ \global\n@skip\z@
+ \n@loop{\writ@meteri}\repeat
+ \ifdim\n@skip>\z@ \advance\n@skip\big@spc
+ \widthtyp@\z@ \t@rmskip \fi \let\Writ@meters\empty}
+
+\def\writ@meteri{\s@l@ctm@t \p@loop \setbox\toks@box
+ \hbox{\expandafter\writ@meterp\the\m@t{}{}{}{}}\upd@width\n@skip
+ \writ@box \count@portee\repeat}
+
+\def\writ@meterp#1#2#3#4{%
+ \ifcase\noport@@\hbox{#1}\or \hbox{#2}\or \hbox{#3}\or \hbox{#4}\fi}
+
+\def\meterfrac#1#2{%
+ \ifnum\nblines=6%
+ \setbox\toks@box\vbox{\hbox{~\meterfont#1}%
+ \hbox{~\meterfont #2}}\raise\internote%
+ \vbox\@to\@ight\internote{\offinterlineskip%
+ \vss\hbox\@to\wd\toks@box{\hss\meterfont#1\hss}\vskip1.5\internote%
+ \vss\hbox\@to\wd\toks@box{\hss\meterfont#2\hss}\vss}%
+ \else\ifnum\nblines=4%
+ \setbox\toks@box\vbox{\hbox{\ \meterfont#1}%
+ \hbox{\ \meterfont #2}}\raise-1\internote\vbox\@to\@ight\internote{\offinterlineskip
+ \vss\hbox\@to\wd\toks@box{\hss\meterfont#1\hss}\vss
+ \vss\hbox\@to\wd\toks@box{\hss\meterfont#2\hss}\vss}
+ \else
+ \setbox\toks@box\vbox{\hbox{\ \meterfont#1}%
+ \hbox{\ \meterfont #2}}\vbox\@to\@ight\internote{\offinterlineskip
+ \vss\hbox\@to\wd\toks@box{\hss\meterfont#1\hss}\vss
+ \vss\hbox\@to\wd\toks@box{\hss\meterfont#2\hss}\vss}
+ \fi\fi
+}
+\def\allabreve{% -> 2/2
+ \ifnum\nblines=6\raise5\internote\hbox{\keychar82}%
+ \else\ifnum\nblines=4\raise3\internote\hbox{\keychar82}%
+ \else\raise4\internote\hbox{\keychar82}\fi\fi}
+\def\reverseallabreve{%
+ \ifnum\nblines=6\raise5\internote\hbox{\keychar123}%
+ \else\ifnum\nblines=4\raise3\internote\hbox{\keychar123}
+ \else\raise4\internote\hbox{\keychar123}\fi\fi}
+\def\meterC{% -> 4/4
+ \ifnum\nblines=6\raise5\internote\hbox{\musickeyfont\@lxxxiii}%
+ \else\ifnum\nblines=4\raise3\internote\hbox{\musickeyfont\@lxxxiii}%
+ \else\raise4\internote\hbox{\musickeyfont\@lxxxiii}\fi\fi}
+\def\reverseC{% -> 4/2
+ \ifnum\nblines=6\raise5\internote\hbox{\keychar84}%
+ \else\ifnum\nblines=4\raise3\internote\hbox{\keychar84}%
+ \else\raise4\internote\hbox{\keychar84}\fi\fi}
+\def\meterN#1{%
+ \ifnum\nblines=6\raise3\internote\hbox{\meterfont#1}%
+ \else\ifnum\nblines=4\raise1\internote\hbox{\meterfont#1}%
+ \else\raise2\internote\hbox{\meterfont#1}\fi\fi}
+\def\meterplus{{\keychar57}}
+
+%%% clefs
+
+\def\s@l@ctclefs{\edef\a@c{\csname a@c\romannumeral\noinstrum@nt\endcsname}%
+ \edef\o@c{\csname o@c\romannumeral\noinstrum@nt\endcsname}}
+
+% why simple, when it can be done complicated ?
+
+\newtoks\t@c
+\def\@fourtoks#1#2#3#4#5+{#1#2#3#4}
+
+\def\setclef#1#2{\noinstrum@nt#1\relax
+ \ifnum#1<1\errmessage{Instrument number not positive}\fi
+ \s@l@ctclefs \t@c{#2000}%
+ \a@c\expandafter\expandafter\expandafter{\expandafter\@fourtoks\the\t@c+}}
+ \let\setclefs\setclef
+
+\let\bass\si@
+\let\alto\thr@@
+\let\treble\z@
+
+\def\setclefsymbol#1#2{\n@v#1\relax % select instrument
+ \expandafter\def\csname bassc@s\romannumeral\n@v\endcsname{#2}%
+ \expandafter\def\csname altoc@s\romannumeral\n@v\endcsname{#2}%
+ \expandafter\def\csname treblec@s\romannumeral\n@v\endcsname{#2}%
+}%
+
+\def\setbassclefsymbol#1#2{\n@v#1\relax % select instrument
+ \expandafter\def\csname bassc@s\romannumeral\n@v\endcsname{#2}%
+}%
+
+\def\setaltoclefsymbol#1#2{\n@v#1\relax % select instrument
+ \expandafter\def\csname altoc@s\romannumeral\n@v\endcsname{#2}%
+}%
+
+\def\settrebleclefsymbol#1#2{\n@v#1\relax % select instrument
+ \expandafter\def\csname treblec@s\romannumeral\n@v\endcsname{#2}%
+}%
+
+\def\trebleclef{\keychar71}
+\def\bassclef{\keychar73}
+\def\altoclef{\keychar75}
+
+\def\smalltrebleclef{\keychar72}
+\def\smallbassclef{\keychar74}
+\def\smallaltoclef{\keychar76}
+
+%% version 1.21: replaced \smalltype\it by \txtfont (size-dependent)
+%% and adjusted the kerns RDT
+%%
+
+\def\trebleoct{\trebleclef\raise 9\internote\hbox\@to\z@{\txtfont{\kern -3.6\internote 8}\hss}}
+\def\bassoct{\bassclef\raise 2\internote\hbox\@to\z@{\txtfont{\kern -4.6\internote 8}\hss}}
+\def\treblelowoct{\trebleclef\raise -7.5\internote\hbox\@to\z@{\txtfont{\kern -4.6\internote 8}\hss}}
+\def\basslowoct{\bassclef\raise -6\internote\hbox\@to\z@{\txtfont{\kern -5.0\internote 8}\hss}}
+
+% [version 1.15] reqest from Hermann Hinsch
+\def\smalltrebleoct{\smalltrebleclef\raise 7.2\internote\hbox\@to\z@{\txtfont{\kern -3.6\internote 8}\hss}}
+\def\smalltreblelowoct{\smalltrebleclef\raise-6.8\internote\hbox\@to\z@{\txtfont{\kern -4.2\internote 8}\hss}}
+\def\smallbassoct{\smallbassclef\raise 2\internote\hbox\@to\z@{\txtfont{\kern -4.0\internote 8}\hss}}
+\def\smallbasslowoct{\smallbassclef\raise-6.5\internote\hbox\@to\z@{\txtfont{\kern -4.4\internote 8}\hss}}
+% [version 1.15] reqest from Hermann Hinsch: end
+
+
+\newskip\clef@skip
+
+\def\changeclefs{\t@rmskip\writ@newclefs}
+\def\zchangeclefs{\t@rmskip\zwrit@newclefs}
+
+%%% version 1.21: new command to call and reset \atnextbar before outputting new clefs RDT
+\def\Changeclefs{\t@rmskip\atnextbar\let\atnextbar\empty\writ@newclefs}
+
+% since the characters are shifted by default(Metafont) they looked
+% a little bit strange when you mix several staffstaffsizes (flushleft)
+% I've introduced a hack(kern kernm), that they are (nearly) centered
+% (aehmm, really not the best way, because now they look strange
+% if you use music footnotes)
+
+\def\writ@clefi{\s@l@ctclefs
+ \p@loop
+ \setbox\toks@box\hbox{\expandafter\writ@clefp\the\a@c}%
+ \upd@width\clef@skip\raise\altportee\rlap{%
+ \ifdim\internote<\Internote \kern\thr@@\Internote\kernm\thr@@\internote \fi
+ \box\toks@box}\count@portee\repeat}
+
+\def\writ@clefp#1#2#3#4{%
+ \ifcase\noport@@\singl@clef#1%
+ \or \singl@clef#2\or \singl@clef#3\or \singl@clef#4\fi}
+
+\def\singl@clef#1{\n@iii#1\relax
+ \ifcase\n@iii
+ \C@Clef\@ne\trebleclef@var\or
+ \C@Clef\z@\altoclef@var\or
+ \C@Clef\@ne\altoclef@var\or
+ \C@Clef\tw@\altoclef@var\or
+ \C@Clef\thr@@\altoclef@var\or
+ \C@Clef\tw@\bassclef@var\or
+ \C@Clef\thr@@\bassclef@var\or
+ \C@Clef\f@ur\bassclef@var\or % 7 = subbass
+ \or
+ \C@Clef\z@\trebleclef@var % 9 = french violin-clef
+ \fi
+}
+
+\def\C@Clef#1#2{\n@iii#1\relax\multiply\n@iii\tw@
+ \raise\n@iii\internote\hbox{#2}}
+
+\def\bassclef@var{\expandafter
+ \ifx\csname bassc@s\romannumeral\noinstrum@nt\endcsname\z@
+ \bassclef\else \csname bassc@s\romannumeral\noinstrum@nt\endcsname \fi}
+\def\trebleclef@var{\expandafter
+ \ifx\csname treblec@s\romannumeral\noinstrum@nt\endcsname\z@
+ \trebleclef\else \csname treblec@s\romannumeral\noinstrum@nt\endcsname \fi}
+\def\altoclef@var{\expandafter
+ \ifx\csname altoc@s\romannumeral\noinstrum@nt\endcsname\z@
+ \altoclef\else \csname altoc@s\romannumeral\noinstrum@nt\endcsname \fi}
+
+\def\smallbassclef@var{\expandafter
+ \ifx\csname bassc@s\romannumeral\noinstrum@nt\endcsname\z@
+ \smallbassclef\else \csname bassc@s\romannumeral\noinstrum@nt\endcsname \fi}
+\def\smalltrebleclef@var{\expandafter
+ \ifx\csname treblec@s\romannumeral\noinstrum@nt\endcsname\z@
+ \smalltrebleclef\else \csname treblec@s\romannumeral\noinstrum@nt\endcsname \fi}
+\def\smallaltoclef@var{\expandafter
+ \ifx\csname altoc@s\romannumeral\noinstrum@nt\endcsname\z@
+ \smallaltoclef\else \csname altoc@s\romannumeral\noinstrum@nt\endcsname \fi}
+
+
+%%
+% Redefine \writ@newclefs similarly
+%
+% Note that \clef@skip does not change for the different clef
+% symbols (always 3.2\Interligne for normal sized clefs)
+% Hence there is no need to communicate clef changes to the
+% formatting program
+%%
+
+\def\writ@newclefs{\clef@skip\z@ \n@loop{\writ@newclefi}\repeat
+ \n@skip\clef@skip \widthtyp@\z@ \t@rmskip
+ \m@loop \s@l@ctclefs \o@c\a@c \repeat}
+
+% the same as \writ@newclefs, but no spacing
+
+\def\zwrit@newclefs{\clef@skip\z@
+ \setbox\writ@volta@box \hbox{\n@loop{\writ@newclefi}\repeat}%
+ \kern -\clef@skip \box\writ@volta@box
+ \kern \clef@skip
+ \clef@skip\z@ % test
+ \n@skip\clef@skip
+ \widthtyp@\z@
+ \t@rmskip
+ \m@loop \s@l@ctclefs \o@c\a@c \repeat}
+
+% Thanks to Helmut Kopka for helping me out
+\def\writ@newclefi{\s@l@ctclefs\p@loop
+ \setbox\toks@box\hbox{\expandafter\expandafter\expandafter\writ@newclefp
+ \the\expandafter\a@c\the\o@c}%
+ \upd@width\clef@skip \writ@box \count@portee\repeat}
+
+\def\writ@newclefp#1#2#3#4#5#6#7#8{%
+ \ifcase\noport@@\newsingl@clef#1#5\or \newsingl@clef#2#6\or
+ \newsingl@clef#3#7\or \newsingl@clef#4#8\fi}
+
+\def\newsingl@clef#1#2{\n@iii#1\relax \n@ii#2\relax
+ \ifnum\n@ii=\n@iii
+ \else
+ \ifcase\n@iii
+ \C@Clef\@ne\smalltrebleclef@var\or
+ \C@Clef\z@\smallaltoclef@var\or
+ \C@Clef\@ne\smallaltoclef@var\or
+ \C@Clef\tw@\smallaltoclef@var\or
+ \C@Clef\thr@@\smallaltoclef@var\or
+ \C@Clef\tw@\smallbassclef@var \or
+ \C@Clef\thr@@\smallbassclef@var\or
+ \C@Clef\f@ur\smallbassclef@var\or % 7 = subbass
+ \or
+ \C@Clef\z@\smalltrebleclef@var % 9 = french violin-clef
+ \fi
+ \fi}
+
+%%% instrumentnames
+
+%\let\Writ@names\empty
+
+\def\setname#1#2{\n@v#1\relax % select instrument
+% \let\Writ@names\writ@names
+ \expandafter\def\csname instrument\romannumeral\n@v\endcsname{#2}}% [version 1.15] changed from \edef to \def (Hiroaki)
+
+\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}
+
+%%%
+
+% les notes proprement dites
+
+\newdimen\noteskip
+\newcount\transpose
+\newcount\normaltranspose
+\newdimen\locx@skip
+\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
+ \else
+ \ifdim\internote<.95\Internote \set@smallnotesize \comput@sizes
+ \else
+ \ifdim\internote<1.19\Internote \set@normalnotesize \comput@sizes
+ \else
+ \ifdim\internote<1.43\Internote \set@largenotesize \comput@sizes
+ \else
+ \set@Largenotesize \comput@sizes
+ \fi
+ \fi
+ \fi
+ \fi
+ \noport@@\z@ \beginstaff}
+
+\def\beginstaff{\leavevmode
+ \altportee\altitude \advance\altportee\noport@@\interportee
+ \count@portee \s@l@ctclefs \expandafter\get@refs\the\a@c
+ \setbox\n@otebox\hbox\bgroup
+ \let\rq\rq@ \let\lq\lq@ \let\mp\mp@ % \let\ds\ds@oup RDT 1.27
+ \locx@skip\x@skip}
+
+\def\@ndstaff{\egroup % this where \transpose gets reset
+ \ifdim\n@skip<\wd\n@otebox \n@skip\wd\n@otebox \fi
+ \raise\altportee\rlap{\unhbox\n@otebox}}
+
+%%% shifting
+
+\def\offs@t#1{\off{-\s@o@}#1\off\s@o@}
+\def\loffset#1{\edef\s@o@{#1\qn@width}\offs@t}
+\def\roffset#1{\edef\s@o@{-#1\qn@width}\offs@t}
+\def\roff{\roffset\@ne}
+\def\loff{\loffset\@ne}
+\def\hroff{\roffset\h@lf}
+\def\hloff{\loffset\h@lf}
+
+%%% decode collective coding
+
+% les symboles de notes ou assimiles
+
+\newcount\inh@alt
+\def\getn@i{\inh@alt\z@ \xgetn@i}
+\def\inhgetn@i{\inh@alt\@ne \xgetn@i}
+
+\def\f@tok#1#2\af@tok{#1}
+\def\s@tok#1#2\af@tok{#2}
+
+% \n@viii used as flag: \n@viii=\maxdimen -> argument is no number
+
+\def\C@Get{\n@viii\maxdimen \edef\alt@suite{\noexpand\getn@i\s@uite\relax}}
+\def\C@GET{\n@viii\maxdimen \edef\alt@suite{%
+ \ifnum\inh@alt=\z@ \noexpand\@TI{\s@uite}\fi \noexpand\getn@i\s@uite\relax}}
+
+\def\xgetn@i#1\relax{\n@viii\z@ \n@i\maxdimen % par defaut
+%% \edef\t@ruc{\f@tok #1\relax\af@tok}%
+ \edef\t@ruc{\expandafter\f@tok #1\relax\af@tok}%
+ \edef\s@uite{\s@tok #1\empty\af@tok}%
+%% pas lettre
+ \ifcat a\t@ruc \n@i\expandafter`\t@ruc\relax
+%% ramener au E (position zero en clef de sol, ut@ref=0)
+ \ifnum\n@i>96\advance\n@i-101%
+ \else\advance\n@i-\@lxxxiii % ramener au S= E + 14
+ \fi
+ \advance\n@i\ut@ref \advance\n@i\ut@ref \advance\n@i\transpose
+ \edef\ss@uite{\noexpand\n@fon{\s@uite}}%
+%% cas active character dont chiffre
+ \else
+ \let\ss@uite\empty
+ \let\alt@suite\empty
+ \ifcat 1\t@ruc
+ \if =\t@ruc \let\@TI\na \C@GET \fi
+ \if *\t@ruc \sk \C@Get \fi
+ \if .\t@ruc \let\@TI\pt \C@GET \fi
+ \if >\t@ruc \let\@TI\dsh \C@GET \fi
+ \if <\t@ruc \let\@TI\dfl \C@GET \fi
+ \if !\t@ruc \transpose\normaltranspose \C@Get \fi
+ \if '\t@ruc \advance\transpose\s@v@n \C@Get \fi
+ \if `\t@ruc \advance\transpose-\s@v@n \C@Get \fi
+ \ifnum\n@viii<\maxdimen \n@i#1\fi
+ \else
+ \if ^\t@ruc \let\@TI\sh \C@GET \fi
+ \if _\t@ruc \let\@TI\fl \C@GET \fi
+ \fi\alt@suite
+ \fi}
+
+%%% setting stems and flags
+
+\newdimen\st@bot % note stem bottom
+\newdimen\st@top % note stem top
+\newdimen\stem@skip
+
+\def\stdstemfalse{\let\stdst@m\@ne}
+
+\def\setst@m{%
+ \advance\y@i\altportee
+ \ifdim\st@bot>\y@i \global\st@bot\y@i \fi
+ \ifdim\st@top<\y@i \global\st@top\y@i \fi
+ \advance\y@i-\altportee}
+
+\def\resetst@m{%
+ \global\st@bot\maxdimen \global\st@top-\maxdimen \let\stdst@m\empty}
+\resetst@m
+
+\def\minst@bot{\ifdim\st@bot>\f@ur\internote
+ \ifx\stdst@m\empty \st@bot\f@ur\internote \fi \fi}
+
+\def\maxst@top{\ifdim\st@top<\f@ur\internote
+ \ifx\stdst@m\empty \st@top\f@ur\internote \fi \fi}
+
+\def\stem@rule{%
+ \vrule\@height\st@top\@depth-\st@bot\@width\lthick\kernm\lthick}
+
+\def\comp@stem{\advance\st@bot-\altportee \advance\st@top-\altportee}
+
+\def\C@stem{\ifdim\st@top>\st@bot
+ \comp@stem\kern\stem@skip\stem@rule
+ \kernm\stem@skip
+ \fi\resetst@m}
+
+\def\stemlength#1{\def\stemfactor{#1}}
+\def\DefaultStemlength{4.66}
+\stemlength{\DefaultStemlength}
+
+% cut stems in extrem positions for multiple voices in one staff
+
+\def\stemcut{\let\st@mcut\empty}
+\def\nostemcut{\let\st@mcut\@ne}
+\stemcut
+
+\def\Box@Flag{\setbox\ch@box\hbox{\musixfont\char\n@vii}\y@v\ht\ch@box }
+
+\def\down@flag{\Box@Flag\advance\st@bot-\y@v
+ \advance\st@bot-\stemfactor\interbeam
+ \advance\st@bot\DefaultStemlength\interbeam
+ \ifdim\st@top>\st@bot \comp@stem\minst@bot
+ \stem@rule\raise\st@bot\box\ch@box \fi\resetst@m}
+
+\def\up@flag{\Box@Flag\advance\st@top\y@v
+ \advance\st@top\stemfactor\interbeam
+ \advance\st@top-\DefaultStemlength\interbeam
+ \ifdim\st@top>\st@bot \comp@stem\maxst@top
+ \kern\qd@skip\stem@rule\advance\st@top-\y@v \raise\st@top\box\ch@box%
+ \kernm\qd@skip \fi\resetst@m}
+
+\def\cutst@l#1{%
+ \ifdim\st@bot<-#1\internote \advance\st@bot\qu@rt\interbeam \fi}
+
+\def\downst@m{\stem@skip\z@
+ \advance\st@bot-\stemfactor\interbeam
+ \advance\st@bot-\altportee
+ \ifx\st@mcut\empty
+ \ifdim\st@bot<-\thr@@\internote
+ \cutst@l\thr@@\cutst@l\f@ur\cutst@l\fiv@
+ \cutst@l\si@\cutst@l\s@v@n\cutst@l\@ight \fi \fi
+ \minst@bot\advance\st@bot\altportee
+ \C@stem}
+
+\def\cutst@u#1{%
+ \ifdim\st@top>#1\internote \advance\st@top-\qu@rt\interbeam \fi}
+
+\def\upst@m{\stem@skip\qd@skip
+ \advance\st@top\stemfactor\interbeam
+ \advance\st@top-\altportee
+ \ifx\st@mcut\empty
+ \ifdim\st@top>\@l@v@n\internote
+ \cutst@u\@l@v@n\cutst@u\tw@lv@\cutst@u\active
+ \cutst@u\fourt@@n\cutst@u\fiv@t@@n\cutst@u\sixt@@n \fi \fi
+ \maxst@top\advance\st@top\altportee
+ \C@stem}
+
+\newdimen\s@lope
+
+\def\comp@slope#1{\s@lope\b@p#1\divide\s@lope\tw@nty}
+
+\def\beamst@m{% queue de note vers une poutre
+ \getcurpos \advance\y@v-\b@x
+ \y@ii\b@p\y@v \divide\y@ii\tw@nty \advance\y@ii\b@z
+ \ifdim\y@ii>\st@top % la poutre est au-dessus
+ \stem@skip\qd@skip \comp@slope\stem@skip \advance\y@ii\s@lope
+ \advance\y@ii .285\interbeam% version 1.18 RDT
+ \ifnum\b@n>\z@ \advance\y@ii\b@n\interbeam \advance\y@ii-\interbeam \fi
+ \st@top\y@ii % a mettre a jour avec la pente ulterieurement
+ \else
+ \advance\y@ii-.285\interbeam% version 1.18 RDT
+ \stem@skip\z@
+ \ifdim\y@ii<\st@bot
+ \ifnum\b@n<\z@ \advance\y@ii\b@n\interbeam \advance\y@ii\interbeam \fi
+ \st@bot\y@ii \fi \fi
+ \C@stem}
+
+%%% writing notes inclusive lines (subsidiary lines ?) (german: Hilfslinien)
+
+\newif\ifadvance\advancetrue
+
+% Modification by Werner Icking
+% ledger lines exceed the note by: y@vi := 0.35 (noteskip - notewidth)
+% and: 0.5 qn@width > y@vi > 0.2 qn@width
+\newdimen\y@vi
+\def\h@linei{%
+ \y@ii\n@v\internote
+ \y@iii\y@ii
+ \advance\y@ii\hlthick
+ \advance\y@iii-\hlthick
+ \y@vi\noteskip % noteskip
+%-\ifnum\y@vi=\z@ \y@vi\maxdimen\fi % (or maxdimen if noteskip = 0)
+ \advance\y@vi-\y@v % - notewidth
+ \y@vi0.7\y@vi % this may be eaten =: additional length
+ \y@iv\h@lf\qn@width\ifnum\y@vi>\y@iv \y@vi\y@iv\fi % not more than 0.5 qn@width
+ \y@iv0.2\qn@width \ifnum\y@vi<\y@iv \y@vi\y@iv\fi % not less than 0.2 qn@width
+ \y@iv\y@v % notewidth
+ \advance\y@iv\y@vi % + additional length =: total length
+ \kernm\h@lf\y@vi % center the ledger line
+%-\message{noteskip = \the\noteskip, length = \the\y@iv, notewidth = \the\y@v}%
+ \vrule\@height\y@ii\@depth-\y@iii\@width\y@iv
+ \kernm\y@iv\kern\h@lf\y@vi}
+
+% end Werner Icking's modification of ledger lines.
+% old behaviour can be restored with musixfll.tex (or musixfll.sty)
+
+\def\writ@note{%
+ \ifnum\n@i<\@c
+% help lines \n@i (position)
+ \ifnum\nblines>\thr@@ % no help lines for percussion instruments
+ \n@v\z@
+ \ifnum\n@i<\m@ne % waste memory, but saves time
+ \loop \advance\n@v\m@ne \ifnum\n@i<\n@v
+ \advance\n@v\m@ne \h@linei
+ \repeat
+ \else
+ \n@v\nblines \advance\n@v\m@ne \multiply\n@v\tw@
+ \ifnum\n@i>\n@v
+ \loop \advance\n@v\@ne \ifnum\n@i>\n@v
+ \advance\n@v\@ne \h@linei
+ \repeat
+ \fi
+ \fi
+ \fi
+%
+ \pl@base\setst@m\st@m
+ \ifadvance \raise\y@i\adv@box\n@sym \else \raise\y@i\hbox{\n@sym}\fi
+ \ss@uite \advancetrue
+ \fi}
+
+\def\adv@box#1{\hbox\@to\noteskip{#1\hss}\advance\locx@skip\noteskip}
+
+%%% breve, longa, maxima, arbitrary notes, non spacing
+
+\def\zmaxima{\def\w@h{\musixchar36}\y@v\tw@\wn@width \advancefalse \g@w}
+\def\zlonga{\def\w@h{\musixchar39}\y@v\wn@width \advancefalse \g@w}
+\def\zbreve{\def\w@h{\musixfont\@xxxii}\y@v\wn@width \advancefalse \g@w}
+\def\zwq{\def\w@h{\musixchar56}\y@v\wn@width \advancefalse \g@w}
+\def\zwqq{\def\w@h{\musixchar127}\y@v\wn@width \advancefalse \g@w}
+
+\def\g@w#1{\let\st@m\resetst@m
+ \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}
+\def\breve{\def\w@h{\musixfont\@xxxii}\y@v\wn@width \g@w}
+\def\wq{\def\w@h{\musixchar56}\y@v\wn@width \g@w}
+\def\wqq{\def\w@h{\musixchar127}\y@v\wn@width \g@w}
+
+%%% alternate longa (with up stem) by Ingo Struck
+%%% struck@student.uni-siegen.de
+
+\def\lngdnst@m{\stem@skip1.25\qd@skip
+ \advance\st@bot-\stemfactor\interbeam
+ \advance\st@bot-\altportee
+ \ifx\st@mcut\empty
+ \ifdim\st@bot<-\thr@@\internote
+ \cutst@l\thr@@\cutst@l\f@ur\cutst@l\fiv@
+ \cutst@l\si@\cutst@l\s@v@n\cutst@l\@ight \fi \fi
+ \minst@bot\advance\st@bot\altportee
+ \C@stem}
+
+\def\lngupst@m{\stem@skip1.25\qd@skip
+ \advance\st@top\stemfactor\interbeam
+ \advance\st@top-\altportee
+ \ifx\st@mcut\empty
+ \ifdim\st@top>\@l@v@n\internote
+ \cutst@u\@l@v@n\cutst@u\tw@lv@\cutst@u\active
+ \cutst@u\fourt@@n\cutst@u\fiv@t@@n\cutst@u\sixt@@n \fi \fi
+ \maxst@top\advance\st@top\altportee
+ \C@stem}
+
+\def\@longa#1{\getn@i#1\relax
+ \ifnum\n@i>\thr@@
+ \let\st@m\lngdnst@m
+ \else
+ \let\st@m\lngupst@m
+ \fi
+ \let\n@fon\@longa \let\n@sym\q@u \y@v\qn@width \writ@note}
+
+\def\l@ngasymbol{\def\q@u{\musixfont\@xxxii}}
+
+\def\longaa{\l@ngasymbol\@longa}
+
+%%% whole notes
+
+\def\C@Point#1#2{\ifodd\n@i \else#2\internote \fi\hbox{\musixchar#1}}
+
+\def\wh{\def\w@h{\musixfont\nin@}\y@v\wn@width \g@w}
+\def\whp{\def\w@h{\musixfont\nin@\roffset\qu@rt{\C@Point\z@\raise}}%
+ \y@v\wn@width \g@w}
+\def\whpp{\def\w@h{\musixfont\nin@\roffset\qu@rt{\C@Point\@ne\raise}}%
+ \y@v\wn@width \g@w}
+
+%%% whole noteheads, no advance
+
+\def\zw{\advancefalse\wh}
+\def\zwp{\advancefalse\whp}
+\def\zwpp{\advancefalse\whpp}
+\let\zwh\zw
+
+\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
+
+\def\@qa#1{\getn@i#1\relax
+ \ifnum\n@i>\thr@@
+ \let\st@m\downst@m
+ \else
+ \let\st@m\upst@m
+ \fi
+ \check@staff % version 1.16
+ \let\n@fon\@qa \let\n@sym\q@u \y@v\qn@width \writ@note
+ \fi}
+
+\def\@qu{\let\st@m\upst@m \g@q}
+\def\@ql{\let\st@m\downst@m \g@q}
+\def\@zq{\let\st@m\setst@m \advancefalse\g@q}
+\def\@nq{\let\st@m\resetst@m \g@q}
+
+\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}
+\def\@zqp{\let\st@m\setst@m \advancefalse\g@qp}
+\def\@nqp{\let\st@m\resetst@m \g@qp}
+
+\def\q@up{\q@u\C@Point\z@\raise}
+\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}
+\def\@zqpp{\let\st@m\setst@m \advancefalse\g@qpp}
+\def\@nqpp{\let\st@m\resetst@m \g@qpp}
+
+\def\q@upp{\q@u\C@Point\@ne\raise}
+\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}
+
+\def\@lql#1{\kernm\qn@width\advancefalse\@ql{#1}\kern\qn@width}
+\def\@rql#1{\kern\qn@width\advancefalse\@ql{#1}\kernm\qn@width}
+
+\def\@lq#1{\kernm\qn@width\@zq{#1}\kern\qn@width}
+\def\@rq#1{\kern\qn@width\@zq{#1}\kernm\qn@width}
+
+\def\@qb#1{\s@l@ctbeam#1\relax \let\st@m\beamst@m \g@q}
+\def\@tqb#1{\s@l@ctbeam#1\relax \C@tb\t@bbl\lthick \let\st@m\beamst@m \g@q}
+\def\@tqh#1{\s@l@ctbeam#1\relax \C@tb\t@bbu\qn@width \let\st@m\beamst@m \g@q}
+\def\@qbp#1{\s@l@ctbeam#1\relax \let\st@m\beamst@m \g@qp}
+\def\@qbpp#1{\s@l@ctbeam#1\relax \let\st@m\beamst@m \g@qpp}
+
+\def\@ca{\n@iv\@xlv \@mca}
+\def\@cca{\n@iv46 \@mca}
+\def\@ccca{\n@iv47 \@mca}
+\def\@cccca{\n@iv48 \@mca}
+\def\@ccccca{\n@iv49 \@mca}
+
+\def\@mca#1{\getn@i#1\relax \n@vii\n@iv
+ \ifnum\n@i>\thr@@
+ \let\st@m\down@flag
+ \else
+ \let\st@m\up@flag \advance\n@vii -\fiv@\relax
+ \fi
+ \check@staff % version 1.16
+ \let\n@fon\@mca \let\n@sym\q@u \y@v\qn@width \writ@note
+ \fi}
+
+\def\@cu{\n@vii\@xl \let\st@m\up@flag \g@q}
+\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}
+
+%%% half notes
+
+\def\h@symbol{\def\q@u{\musixfont\@ight}}
+
+\def\ha{\h@symbol\@qa}
+\def\hap#1{\pt{#1}\ha{#1}} % 1.27 RDT
+\def\happ#1{\ppt{#1}\ha{#1}} % 1.27 RDT
+\def\hu{\h@symbol\@qu}
+\def\hup{\h@symbol\@qup}
+\def\hupp{\h@symbol\@qupp}
+
+\def\hl{\h@symbol\@ql}
+\def\hlp{\h@symbol\@qlp}
+\def\hlpp{\h@symbol\@qlpp}
+
+\def\hb{\h@symbol\@qb}
+
+\def\zh{\h@symbol\@zq}
+\def\zhp{\h@symbol\@zqp}
+\def\zhpp{\h@symbol\@zqpp}
+
+\def\lh{\h@symbol\@lq}
+\def\rh{\h@symbol\@rq}
+
+\def\zhu{\advancefalse\hu}
+\def\zhup{\advancefalse\hup}
+\def\zhupp{\advancefalse\hupp}
+
+\def\lhu{\h@symbol\@lqu}
+\def\rhu{\h@symbol\@rqu}
+
+\def\zhl{\advancefalse\hl}
+\def\zhlp{\advancefalse\hlp}
+\def\zhlpp{\advancefalse\hlpp}
+
+\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}}
+
+\def\qa{\q@symbol\@qa}
+
+\def\qap#1{\pt{#1}\qa{#1}} % 1.25 RDT
+\def\qapp#1{\ppt{#1}\qa{#1}} % 1.25 RDT
+
+\def\qu{\q@symbol\@qu}
+\def\qup{\q@symbol\@qup}
+\def\qupp{\q@symbol\@qupp}
+
+%%% quarter notes, stem down
+
+\def\ql{\q@symbol\@ql}
+\def\qlp{\q@symbol\@qlp}
+\def\qlpp{\q@symbol\@qlpp}
+
+%%% quarter notes, stem up, no advance
+
+\def\zqu{\advancefalse\qu}
+\def\zqup{\advancefalse\qup}
+\def\zqupp{\advancefalse\qupp}
+
+\def\lqu{\q@symbol\@lqu}
+\def\rqu{\q@symbol\@rqu}
+
+%%% quarter notes, stem down, no advance
+
+\def\zql{\advancefalse\ql}
+\def\zqlp{\advancefalse\qlp}
+\def\zqlpp{\advancefalse\qlpp}
+
+\def\lql{\q@symbol\@lql}
+\def\rql{\q@symbol\@rql}
+
+%%% quarter noteheads, no advance
+
+\def\zq{\q@symbol\@zq}
+\def\zqp{\q@symbol\@zqp}
+\def\zqpp{\q@symbol\@zqpp}
+
+\def\lqp#1{\loff{\zqp{#1}}}%
+\def\lqpp#1{\loff{\zqpp{#1}}}%
+\def\rqp#1{\roff{\zqp{#1}}}%
+\def\rqpp#1{\roff{\zqpp{#1}}}%
+
+\def\lq@{\q@symbol\@lq}
+\def\rq@{\q@symbol\@rq}
+
+%
+% note heads without stems
+\def\nh{\h@symbol\@nq}
+\def\nq{\q@symbol\@nq}
+\def\znh{\advancefalse\nh}
+\def\znq{\advancefalse\nq}
+
+%%% 8th, 16th, 32th, 64th, (128th) notes
+
+\def\ca{\q@symbol\@ca}
+\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}
+\def\rcl#1{\kern\qn@width\zcl{#1}\kernm\qn@width}
+
+%%% beam notes
+
+\def\qb{\q@symbol\@qb}
+\def\qbp{\q@symbol\@qbp}
+\def\qbpp{\q@symbol\@qbpp}
+
+\def\zqb{\advancefalse\qb}
+\def\zqbp{\advancefalse\qbp}
+\def\zqbpp{\advancefalse\qbpp}
+
+\def\tqh{\q@symbol\@tqh}
+\def\tqu{\q@symbol\@tqh} % version 1.16 RDT
+\def\tqb{\q@symbol\@tqb}
+\def\tql{\q@symbol\@tqb} % version 1.16 RDT
+
+\def\tqqh#1#2{\tbbu{#1}\tqh{#1}{#2}} % version 1.17 RDT
+\def\tqqu{\tqqh} % version 1.17 RDT
+\def\tqqb#1#2{\tbbl{#1}\tqb{#1}{#2}} % version 1.17 RDT
+\def\tqql{\tqqb} % version 1.17 RDT
+\def\tqqqh#1#2{\tbbbu{#1}\tqqh{#1}{#2}} % version 1.17 RDT
+\def\tqqqu{\tqqqh} % version 1.17 RDT
+\def\tqqqb#1#2{\tbbbl{#1}\tqqb{#1}{#2}} % version 1.17 RDT
+\def\tqqql{\tqqqb} % version 1.17 RDT
+
+\def\nqqh#1#2{\tbbu{#1}\qb{#1}{#2}} % version 1.27 RDT
+\def\nqqb#1#2{\tbbl{#1}\qb{#1}{#2}} % version 1.27 RDT
+\def\nqqqh#1#2{\tbbbu{#1}\qb{#1}{#2}} % version 1.27 RDT
+\def\nqqqb#1#2{\tbbbl{#1}\qb{#1}{#2}} % version 1.27 RDT
+\def\nqqu{\nqqh} % version 1.27 RDT
+\def\nqql{\nqqb} % version 1.27 RDT
+\def\nqqqu{\nqqqh} % version 1.27 RDT
+\def\nqqql{\nqqqb} % version 1.27 RDT
+
+\def\ztqh{\advancefalse\q@symbol\@tqh}
+\def\ztqu{\advancefalse\q@symbol\@tqh} % version 1.16 RDT
+\def\ztqb{\advancefalse\q@symbol\@tqb}
+\def\ztql{\advancefalse\q@symbol\@tqb} % version 1.16 RDT
+
+%%% grace notes
+
+\def\grcu{\q@symbol\@grcu}
+\def\grcl{\q@symbol\@grcl}
+
+\def\@grcu{\n@vii\tw@lv@ \let\st@m\up@flag \g@q}
+\def\@grcl{\n@vii\active \let\st@m\down@flag \g@q}
+
+%%% starting beams
+
+% \ibu{0<=numero<10}{altitude~note}{pente de -9 a +9}
+% \ibl{0<=numero<10}{altitude~note}{pente de -9 a +9}
+
+% \b@p slope (-9) - (9)
+% \b@n number of pending beamlines (-4) - (4)
+
+\def\test@beamnum{% [version 1.15] new macro to make it independent from slur
+ \ifnum\n@i<\z@ \n@i\@c \fi
+ \ifnum\n@i<\maxinstruments \else
+ \count@\maxinstruments \advance\count@\m@ne
+ \errmessage{Wrong beam reference number \the\n@i! (valid: 0 to \the\count@)}
+ \n@i\z@
+ \fi
+ \advance\n@i\@ne}%
+
+\def\s@l@ctbeam#1\relax{%
+ \n@i#1\relax\test@beamnum % [version 1.15] make it independent from slur
+ \edef\b@x{\csname b@x\romannumeral\n@i\endcsname}%
+ \edef\b@z{\csname b@z\romannumeral\n@i\endcsname}%
+ \edef\b@n{\csname b@n\romannumeral\n@i\endcsname}%
+ \edef\b@p{\csname b@p\romannumeral\n@i\endcsname}}
+
+\def\s@l@ctc{\edef\c@x{\csname c@x\romannumeral\n@i\endcsname}%
+ \edef\c@z{\csname c@z\romannumeral\n@i\endcsname}}
+
+\def\s@l@ctd{\edef\d@x{\csname d@x\romannumeral\n@i\endcsname}%
+ \edef\d@z{\csname d@z\romannumeral\n@i\endcsname}\s@l@ctc}
+
+\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{%\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{%\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
+ \getcurpos \global\b@x\y@v \b@z#14.333\interbeam \advance\b@z\altportee
+ \pl@base \global\advance\b@z\y@i}
+
+\def\C@ba#1#2{\global\advance#1#2\interbeam}
+
+\def\i@bbu#1#2{\ifnum\b@n=\z@ \i@bu{#1}{#2}\C@ba\b@z\@ne \fi\n@bbu}
+\def\i@bbl#1#2{\ifnum\b@n=\z@ \i@bl{#1}{#2}\C@ba\b@z\m@ne \fi\n@bbl}
+
+\def\i@bbbu#1#2{\ifnum\b@n=\z@
+ \i@bbu{#1}{#2}\C@ba\b@z\@ne \C@ba\c@z\@ne \fi\n@bbbu}
+\def\i@bbbl#1#2{\ifnum\b@n=\z@
+ \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}
+\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}
+
+%!\def\nbbu#1{\s@l@ctbeam#1\relax \s@l@ctc \ifnum\b@n>-\tw@ \ifnum\b@n<\tw@ \n@bbu \fi \fi }
+%!\def\nbbl#1{\s@l@ctbeam#1\relax \s@l@ctc \ifnum\b@n>-\tw@ \ifnum\b@n<\tw@ \n@bbl \fi \fi }
+
+\def\nbbu#1{\s@l@ctbeam#1\relax \s@l@ctc \n@bbu}
+\def\nbbl#1{\s@l@ctbeam#1\relax \s@l@ctc \n@bbl}
+
+\def\nbbbu#1{\s@l@ctbeam#1\relax \s@l@ctd \Dec@b\@ne\n@bbu \Dec@b\tw@\n@bbbu}
+\def\nbbbl#1{\s@l@ctbeam#1\relax \s@l@ctd \Dec@b\@ne\n@bbl \Dec@b\tw@\n@bbbl}
+
+\def\nbbbbu#1{\s@l@ctbeam#1\relax \s@l@cte
+ \Dec@b\@ne\n@bbu \Dec@b\tw@\n@bbbu \Dec@b\thr@@\n@bbbbu}
+\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
+ \ifnum\b@n<\z@ \global\advance\b@n\m@ne \global\advance#1-#3\interbeam \fi
+ \ifnum\b@n>\z@ \global\advance\b@n\@ne \C@ba#1#3\fi
+ {\advance\locx@skip#4\getcurpos \global#2\y@v
+ \advance\y@v-\b@x \comp@slope\y@v \global\advance#1\s@lope}}
+
+%%% beam termination
+
+\def\b@adjust{\ifdim\y@ii>\tw@\y@ \advance\y@\y@ \advance\n@vi\@ne \fi}
+
+\def\@beam{% \y@ii : longueur, \b@p : pente, \y@i : altitude
+ \ifnum\b@p=\z@
+% slope zero
+ \y@iii\y@i\y@iv\y@i
+ \advance\y@iii-\b@amthick \advance\y@iv\b@amthick
+ \vrule\@height\y@iv\@depth-\y@iii\@width\y@ii
+ \else\n@vi\z@
+% slope offset
+ \ifnum\b@p>\z@ \n@vi\b@p \multiply\n@vi\si@ \advance\n@vi-\si@ \fi
+ \ifnum\b@p<\z@ \n@vi-\b@p \multiply\n@vi\si@ \advance\n@vi58\fi
+% find longest possible character to avoid patchwork
+ \y@\tw@\p@
+ \b@adjust \b@adjust \b@adjust \b@adjust \b@adjust
+ \advance\n@vi\@cxxviii
+ \chardef\b@alk\n@vi\musixfont
+%
+% \curwidth=0pt \curheight=\y@i \curxpos=\completewidth
+% \loop\ifdim\curwidth<\completewidth
+% \advance\curxpos by -\beamwidth
+% \ifdim\curxpos<0pt
+% \comp@slope\curxpos
+% \advance\curheight by \s@lope \kern\curxpos \fi
+% \raise\curheight\hbox{\b@alk}%
+% \advance\curwidth by \beamwidth
+% \comp@slope\beamwidth
+% \advance\curheight by \s@lope
+% \repeat \fi
+%
+ \y@iv\z@ \y@iii\y@i \y@v\y@ii
+ \loop\ifdim\y@iv<\y@ii
+ \advance\y@v-\y@
+ \ifdim\y@v<\z@ \comp@slope\y@v \advance\y@iii\s@lope \kern\y@v \fi
+ \raise\y@iii\hbox{\b@alk}%
+ \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 \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 \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\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}
+
+\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\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
+ \ifnum\n@ii>\n@v #1\fi
+ \loop
+ \advance\n@v\m@ne
+ \ifnum\n@ii=\n@v {\advance\locx@skip-\qn@width#2}\fi
+ \ifnum\n@v>\@ne \repeat}
+
+\def\t@xbu{\C@txb\qn@width\interbeam\b@amthick\qd@skip>}
+\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\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}\relax
+ \fi
+ \fi
+ \ifnum\b@n<\z@ \global\advance\b@n\@ne \fi
+ \ifnum\b@n>\z@ \global\advance\b@n\m@ne \fi}
+
+%%% semiautomatic beams
+
+% adjustable beam slopes
+% #1: beam number
+% #2: starting pitch
+% #3: ending pitch,
+% #4: extension (number of \noteskip's)
+
+\def\Ibu#1{\s@l@ctbeam#1\relax\I@bu\i@bu}
+\def\Ibl#1{\s@l@ctbeam#1\relax\I@bl\i@bl}
+\def\Ibbu#1{\s@l@ctbeam#1\relax \s@l@ctc \I@bu\i@bbu}
+\def\Ibbl#1{\s@l@ctbeam#1\relax \s@l@ctc \I@bl\i@bbl}
+\def\Ibbbu#1{\s@l@ctbeam#1\relax \s@l@ctd \I@bu\i@bbbu}
+\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
+
+\def\@@chk{\y@iv.05\y@v \multiply\y@iv\n@viii}
+
+\def\I@buuchk{\@@chk
+ \ifdim\y@iv>\n@ii\internote \advance\n@viii\m@ne \I@buuchk \fi
+ \ifnum\n@viii>\nin@ \advance\n@i\@ne \advance\n@ii\m@ne \I@buuchk \fi}
+
+\def\I@bldchk{\@@chk
+ \ifdim\y@iv<\n@ii\internote \advance\n@viii\@ne \I@bldchk \fi
+ \ifnum\n@viii<-\nin@ \advance\n@i\m@ne \advance\n@ii\@ne \I@bldchk \fi}
+
+\def\I@budchk{\@@chk
+ \ifdim\y@iv<\n@ii\internote \advance\n@viii\@ne \I@budchk \fi}
+
+\def\I@bluchk{\@@chk
+ \ifdim\y@iv>\n@ii\internote \advance\n@viii\m@ne \I@bluchk \fi}
+
+\def\I@bu{\let\@Ti\I@buuchk \let\@Tii\I@budchk \C@Ib}
+\def\I@bl{\let\@Ti\I@bluchk \let\@Tii\I@bldchk \C@Ib}
+
+\def\C@Ib#1#2#3#4{{\n@v#4\relax \min@n@v\@ne
+ \inhgetn@i#3\relax\n@ii\n@i
+ \inhgetn@i#2\relax\advance\n@ii-\n@i
+ \y@v\noteskip \multiply\y@v\n@v
+ \ifnum\n@ii=\z@ #1{#2}0%
+ \else
+ \ifnum\n@ii>\z@ \n@viii\t@n \@Ti\else\n@viii-\t@n \@Tii \fi
+ \edef\I@boper{\noexpand#1{\the\n@i}{\the\n@viii}\relax}\I@boper
+ \fi}}
+
+% sets of double notes with computed slopes
+
+\def\B@h{\let\B@ii\tqh}
+\def\B@b{\let\B@ii\tqb}
+
+\def\Dqbu{\let\B@i\Ibu \B@h\C@Dq}
+\def\Dqbl{\let\B@i\Ibl \B@b\C@Dq}
+\def\Dqbbu{\let\B@i\Ibbu \B@h\C@Dq}
+\def\Dqbbl{\let\B@i\Ibbl \B@b\C@Dq}
+
+\def\C@Dq#1#2{\B@i0{#1}{#2}1\qb0{#1}\B@ii0{#2}}
+
+% sets of triple notes with computed slopes
+
+\def\Tqbu{\let\B@i\Ibu \B@h\C@Tq}
+\def\Tqbl{\let\B@i\Ibl \B@b\C@Tq}
+\def\Tqbbu{\let\B@i\Ibbu \B@h\C@Tq}
+\def\Tqbbl{\let\B@i\Ibbl \B@b\C@Tq}
+
+\def\C@Tq#1#2#3{\B@i0{#1}{#3}2\qb0{#1#2}\B@ii0{#3}}
+
+% sets of quadruple notes with computed slopes
+
+\def\Qqbu{\let\B@i\Ibu \B@h\C@Qq}
+\def\Qqbl{\let\B@i\Ibl \B@b\C@Qq}
+\def\Qqbbu{\let\B@i\Ibbu \B@h\C@Qq}
+\def\Qqbbl{\let\B@i\Ibbl \B@b\C@Qq}
+
+\def\C@Qq#1#2#3#4{\B@i0{#1}{#4}3\qb0{#1#2#3}\B@ii0{#4}}
+
+%%% duration points
+
+\def\pt{\g@pt\@ne\z@}
+\def\ppt{\g@pt\@ne\@ne}
+\def\pppt{\g@pt\@ne\tw@}
+
+\def\lpt{\g@pt\m@ne\z@}
+\def\lppt{\g@pt\m@ne\@ne}
+\def\lpppt{\g@pt\m@ne\tw@}
+
+\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\fi}
+
+%%% rests
+
+\def\wholeshift#1{\roffset{\p@ne25}{#1}}
+
+\def\centerbar#1{\y@ii\lin@pos \advance\y@ii-\lastbarpos \advance\y@ii\cut@v
+ \kern-\h@lf\y@ii\lrlap{#1}\kern\h@lf\y@ii}%
+
+
+\def\cpause{\hbox{\ccn{6}{\musixchar61}}}
+\def\chpause{\hbox{\ccn{4}{\musixchar60}}}
+\def\cPAuse{\hbox{\ccn{0}{\musixchar58}}}
+\def\cPAUSe{\hbox{\ccn{0}{\musixchar59}}}
+
+\def\cHpause#1{% 1.21 RDT
+\y@ii\lin@pos \advance\y@ii-\lastbarpos%
+\def\v@rtpart{\hbox{\vrule width.6pt height1.5\internote depth1.5\internote}}%
+\def\h@rizpart{\hbox{\vrule width0.35\y@ii height.5\internote depth.5\internote}}%
+\raise4\internote\hbox{\v@rtpart\h@rizpart\ccn5{\meterfont{#1}}\h@rizpart\v@rtpart}}%
+
+\def\centerpause{\centerbar{\cpause}}
+\def\centerhpause{\centerbar{\chpause}}
+\def\centerPAuse{\centerbar{\cPAuse}}
+\def\centerPAUSe{\centerbar{\cPAUSe}}
+\def\centerHpause#1{\centerbar{\cHpause{#1}}}
+
+\def\C@ps#1#2#3{\n@viii#3\multiply\n@viii\tw@
+ \advance\n@viii#2\raise\n@viii\internote \hbox{\musixchar#1}}
+\def\C@pspt#1#2#3{\n@viii#3\multiply\n@viii\tw@
+ \advance\n@viii#2\raise\n@viii\internote \hbox{\musixchar#1\relax
+ \ifnum #1=\t@n\relax \raise 0.7\internote\hbox{\kern 0.2\qn@width\musixchar0}%
+ \else \raise -0.7\internote\hbox{\kern 0.2\qn@width\musixchar0}%
+ \fi}%
+ }
+
+\def\PAUSe{\adv@box{\musixchar59}}
+\def\PAuse{\adv@box{\musixchar58}}
+
+\def\pause{\check@staff
+ \adv@box{\raise\si@\internote\hbox{\musixchar61}}\fi}
+\def\pausep{\wholeshift{\pt5}\pause}
+\def\liftpause{\C@ps\@l@v@n\si@}
+\def\liftpausep{\C@pspt\@l@v@n\si@}
+
+\def\hpause{\check@staff
+ \adv@box{\raise\f@ur\internote\hbox{\musixchar60}}\fi}
+\let\hp\hpause
+\def\hpausep{\wholeshift{\pt5}\hpause}
+\let\hpp\hpausep
+\def\lifthpause{\C@ps\t@n\f@ur}
+\def\lifthpausep{\C@pspt\t@n\f@ur}
+
+\newdimen\lift@rest
+\def\adv@restbox#1{\hbox{\lift@rest 5\internote
+ \advance\lift@rest -2.5\fontdimen\fiv@\musixfont
+ \raise\lift@rest\hbox\@to\noteskip{#1\hss}}\advance\locx@skip\noteskip}
+
+\def\qp{\adv@restbox{\check@staff\musixchar62\fi}}
+\let\soupir\qp
+
+%\def\ds@oup{\adv@restbox{\check@staff\musixchar63\fi}} % why? RDT 1.27
+\def\ds{\adv@restbox{\check@staff\musixchar63\fi}}
+\def\qs{\adv@restbox{\check@staff\musixchar64\fi}}
+\def\hs{\adv@restbox{\check@staff\musixchar65\fi}}
+\def\qqs{\adv@restbox{\check@staff\musixchar66\fi}}
+
+% pointed rests version 1.16 RDT
+\def\qpp{\adv@restbox{\check@staff\pt5\musixchar62\fi}}
+\def\dsp{\adv@restbox{\check@staff\pt5\musixchar63\fi}}
+\def\qsp{\adv@restbox{\check@staff\pt5\musixchar64\fi}}
+\def\hsp{\adv@restbox{\check@staff\pt5\musixchar65\fi}}
+\def\qqsp{\adv@restbox{\check@staff\pt5\musixchar66\fi}}
+
+% double-dotted rests version 1.17 RDT
+
+\def\pausepp{\wholeshift{\ppt5}\pause}
+\def\hpausepp{\wholeshift{\ppt5}\hpause}
+\let\hppp\hpausepp
+\def\qppp{\adv@restbox{\check@staff\ppt5\musixchar62\fi}}
+\def\dspp{\adv@restbox{\check@staff\ppt5\musixchar63\fi}}
+\def\qspp{\adv@restbox{\check@staff\ppt5\musixchar64\fi}}
+\def\hspp{\adv@restbox{\check@staff\ppt5\musixchar65\fi}}
+\def\qqspp{\adv@restbox{\check@staff\ppt5\musixchar66\fi}}
+
+% copied from musixlit.tex: version 1.21 RDT
+
+\def\Hpause#1#2{\zcharnote{#1}{\def\s@r{%
+\vrule\@width.6\p@\@height1\h@lf\internote\@depth1\h@lf\internote}\s@r%
+\vrule\@width#2\noteskip\@height\h@lf\internote\@depth\h@lf\internote\s@r}}
+
+%%% accidentals
+
+\newskip\accshift
+
+\def\bigaccid{\let\small@test\iftrue}
+\def\smallaccid{\let\small@test\iffalse}
+\def\varaccid{\def\small@test{\ifdim\noteskip>1\p@seven\qn@width}}
+
+\varaccid % accidents de taille variable
+
+\def\na#1{\small@test\bigna{#1}\else\smallna{#1}\fi}
+\def\fl#1{\small@test\bigfl{#1}\else\smallfl{#1}\fi}
+\def\sh#1{\small@test\bigsh{#1}\else\smallsh{#1}\fi}
+\def\dfl#1{\small@test\bigdfl{#1}\else\smalldfl{#1}\fi}
+\def\dsh#1{\small@test\bigdsh{#1}\else\smalldsh{#1}\fi}
+
+% n@vi char pos of cautionpar (normal=5, doubleflat=6)
+% n@v offset to char pos (flat=0, dflat=1, sharp=2, dsharp=3, natural=4)
+% n@vi offset to char pos (big=0, small=60)
+% n@vii =maxdimen -> cautionacctrue
+
+\def\writ@ba{\pl@base\raise\y@i\llap{\musixchar\n@v\kern\accshift}}
+\def\set@ba{\let\@Ti\writ@ba \n@vi\z@}
+
+\def\bigna{\set@ba \let\@Tii\@Na \n@v\f@ur \C@acc}
+\def\bigfl{\set@ba \let\@Tii\@Fl \n@v\z@ \C@acc}
+\def\bigsh{\set@ba \let\@Tii\@Sh \n@v\tw@ \C@acc}
+\def\bigdfl{\set@ba \let\@Tii\@dFl \n@v\@ne \C@acc}
+\def\bigdsh{\set@ba \let\@Tii\@dSh \n@v\thr@@ \C@acc}
+
+\def\@sa{\ifnum\n@vii=\maxdimen \C@ChaR \musixchar\n@v \kern.3\qn@width
+ \else \musixchar\n@v \fi \n@vii\z@}
+
+\def\smallna{\set@sa \let\@Tii\@Na \n@v\f@ur \C@acc}
+\def\smallfl{\set@sa \let\@Tii\@Fl \n@v\z@ \C@acc}
+\def\smallsh{\set@sa \let\@Tii\@Sh \n@v\tw@ \C@acc}
+\def\smalldfl{\set@sa \n@iv\si@ \let\@Tii\@dFl \n@v\@ne \C@acc}
+\def\smalldsh{\set@sa \let\@Tii\@dSh \n@v\thr@@ \C@acc}
+
+\def\cna{\set@ca \let\@Tii\@Na \n@v\f@ur \C@acc} % version 1.16 HM
+\def\cfl{\set@ca \let\@Tii\@Fl \n@v\z@ \C@acc}
+\def\csh{\set@ca \let\@Tii\@Sh \n@v\tw@ \C@acc}
+\def\cdfl{\set@ca \n@iv\si@ \let\@Tii\@dFl \n@v\@ne \C@acc}
+\def\cdsh{\set@ca \let\@Tii\@dSh \n@v\thr@@ \C@acc}
+%
+\def\writ@sa{\pl@base\raise\y@i\llap{\musixchar\n@v\kern\accshift}}
+\def\set@sa{\let\@Ti\writ@sa \n@iv\fiv@ \n@vi\@xl }
+\def\writ@ca{\pl@base\raise\y@i\llap{\C@ChaR \musixchar\n@v\kern.3\qn@width\kern\accshift}}
+\def\set@ca{\let\@Ti\writ@ca \n@iv\fiv@ \n@vi\@xl }
+
+\def\writ@ua{\advance\n@i\thr@@ \zchar\n@i{\kern\qu@rt\qn@width\@sa}}
+\def\set@upper{\let\@Ti\writ@ua \n@iv\fiv@ \n@vi\@xl }
+
+\def\upperna{\set@upper \let\@Tii\@Na \n@v\f@ur \C@acc}
+\def\upperfl{\set@upper \let\@Tii\@Fl \n@v\z@ \C@acc}
+\def\uppersh{\set@upper \let\@Tii\@Sh \n@v\tw@ \C@acc}
+
+\def\@Na{\ifcase\n@ii \n@v\tw@ \or \n@v\f@ur \or \n@v\z@ \fi}
+\def\@Fl{\ifcase\n@ii \n@v\f@ur \or \n@v\z@ \or \n@v\@ne \fi}
+\def\@Sh{\ifcase\n@ii \n@v\thr@@ \or \n@v\tw@ \or \n@v\f@ur \fi}
+\def\@dFl{\ifcase\n@ii \n@v\z@ \or \n@v\@ne \or
+ \message{\@nod flatten \noexpand\dfl \t@ruc}\let\@Ti\empty \fi}
+\def\@dSh{\ifcase\n@ii
+ \message{\@nod sharpen \noexpand\dsh \t@ruc}\let\@Ti\empty
+ \or \n@v\thr@@ \or \n@v\tw@ \fi}
+
+\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
+ \loop\ifnum\n@iii>\si@ \advance\n@iii-\s@v@n \repeat
+ \loop\ifnum\n@iii<\z@ \advance\n@iii\s@v@n \repeat
+ \ifcase\n@iii
+ \n@ii\si@ % mi
+ \or\n@ii\@ne % fa
+ \or\n@ii\thr@@ % sol
+ \or\n@ii\fiv@ % la
+ \or\n@ii\s@v@n % si
+ \or\n@ii\tw@ % do
+ \or\n@ii\f@ur % re
+ \fi
+% \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 \expandafter\@Ti % [version 1.15] (Hiroaki)
+ \fi}
+
+\def\@nod{Can't double }
+
+\def\relativeaccid{\let\rel@sw\@ne }
+\def\absoluteaccid{\let\rel@sw\empty }
+\absoluteaccid
+
+\def\lna#1{\loffset\smallvalue{\na{#1}}}
+\def\lfl#1{\loffset\smallvalue{\fl{#1}}}
+\def\lsh#1{\loffset\smallvalue{\sh{#1}}}
+\def\ldfl#1{\loffset\smallvalue{\dfl{#1}}}
+\def\ldsh#1{\loffset\smallvalue{\dsh{#1}}}
+
+%%% arpeggio
+
+\def\arpeggio#1#2{\zcharnote{#1}{%
+ \uplap{\leaders\hbox{\musixchar70}\vskip#2\Interligne}}}
+\def\larpeggio#1#2{\loffset\smallvalue{\arpeggio{#1}{#2}}}
+
+%%% ornaments, special signs
+
+\def\@Char#1{\zcharnote{#1}\C@ChaR}
+
+\def\backturn{\n@iv67\@Char}
+\def\turn{\n@iv68\@Char}
+\def\duevolte{{\keychar78}}
+\def\caesura{\llap{\musixchar79\kern\h@lf\noteskip}}
+\def\coda{\n@iv85\C@coda}
+\def\Coda{\n@iv105\C@coda}
+\def\C@coda#1{\llap{\@Char{#1}\kern\afterruleskip}}
+\def\segno{\n@iv86\@Char}
+\def\Segno{{\keychar110}}
+\def\shake{\n@iv87\@Char}
+\def\Shake{\n@iv88\@Char}
+\def\Shakel{\n@iv106\@Char}
+\def\Shakenw{\n@iv107\@Char}
+\def\Shakesw{\n@iv108\@Char}
+\def\Shakene{\n@iv109\@Char}
+\def\mordent{\n@iv89\@Char}
+\def\Mordent{\n@iv119\@Char}
+\def\doublethumb{\n@iv121\@Char}
+\def\trt#1{\loffset{0.65}{\shake{#1}}\roffset{0.65}{\mordent{#1}}}
+
+
+\def\tr#1{\loffset{0.15}{\zcn{#1}{\ppff tr}}} % \loffset added version 1.23 RDT
+\def\xtr#1{\raise1.25\internote\hbox{\n@iv111\zcn{#1}\C@ChaR}} % added version 1.23 RDT
+\def\ptr#1{\raise1.25\internote\hbox{\n@iv117\zcn{#1}\C@ChaR}} % added version 1.23 RDT
+%\def\Xtr#1{\wholeshift{\xtr{#1}}} % unnecessary?
+
+%%% accents
+
+\def\upbow{{\musixfont\@xxiii}}
+\def\downbow{{\musixchar22}}
+
+\def\flageolett{\n@iv120\uacc@Char}
+\def\usfz{\n@iv\tw@nty \uacc@Char}
+\def\lsfz{\n@iv21\lacc@Char}
+\def\dsfz{\lsfz}
+\def\upz{\n@iv\@xxiv \uacc@Char}
+\def\lpz{\n@iv\@xxv \lacc@Char}
+\def\dpz{\lpz}
+\def\ust{\n@iv\@xxvi \uacc@Char}
+\def\lst{\n@iv\@xxvii \lacc@Char}
+\def\dst{\lst}
+\def\uppz{\n@iv28\uacc@Char}
+\def\lppz{\n@iv\@xxix \lacc@Char}
+\def\dppz{\lppz}
+\def\usf{\n@iv30\uacc@Char}
+\def\lsf{\n@iv31\lacc@Char}
+\def\dsf{\lsf}
+\def\upzst{\n@iv18\uacc@Char}
+\def\lpzst{\n@iv19\lacc@Char}
+\def\dpzst{\lpzst}
+
+\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
+ \fi}
+
+\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
+ \fi}
+
+\def\C@ChaR{\musixfont\char\n@iv}
+
+ %%% accents on beams (correction proposed by Klaus Bechert)
+
+\def\acc@ubalk{\acc@balk>\@ne}
+\def\acc@lbalk{\acc@balk<\m@ne}
+\def\acc@balk#1#2#3{\s@l@ctbeam#3\relax \getcurpos \advance\y@v\txt@ff
+ \advance\y@v-\b@x \y@ii\b@p\y@v \divide\y@ii\tw@nty \advance\y@ii\b@z
+ \ifnum\b@n#1#2\relax \advance\y@ii\b@n\interbeam
+ \advance\y@ii-#2\interbeam \fi
+ \advance\y@ii-\altportee \raise\y@ii\rlap\balk@accent}
+\let\balk@accent\C@ChaR
+
+%\def\bflageolett{\n@iv120\acc@ubalk}
+\def\busfz{\n@iv\tw@nty \acc@ubalk}
+\def\blsfz{\n@iv21\acc@lbalk}
+%\def\bdownbow{\n@iv22\acc@ubalk}
+%\def\bupbow{\n@iv\@xxiii \acc@lbalk}
+\def\bupz{\n@iv\@xxiv \acc@ubalk}
+\def\blpz{\n@iv\@xxv \acc@lbalk}
+\def\bust{\n@iv\@xxvi \acc@ubalk}
+\def\blst{\n@iv\@xxvii \acc@lbalk}
+\def\buppz{\n@iv28\acc@ubalk}
+\def\blppz{\n@iv\@xxix \acc@lbalk}
+\def\busf{\n@iv30\acc@ubalk}
+\def\blsf{\n@iv31\acc@lbalk}
+%\def\bupzst{\n@iv18\acc@ubalk}
+%\def\blpzst{\n@iv19\acc@lbalk}
+
+% The next macros puts triplets (and others def'd with \txt) on beams
+
+\def\butext#1{\txt@ff\qn@width
+ \def\balk@accent{\uplap{\lrlap{\kern\tw@\txt@ff\txtfont\txt}\kern\internote}}%
+ \acc@ubalk{#1}\txt@ff\h@lf\qn@width \let\balk@accent\C@ChaR}
+
+\def\bltext#1{\txt@ff\z@
+ \def\balk@accent{\vbox\@to\z@{\kern\internote\txtfont\lrlap\txt\vss}}%
+ \acc@lbalk{#1}\txt@ff\h@lf\qn@width \let\balk@accent\C@ChaR}
+
+%%% end of accents on beams (correction proposed by Klaus Bechert)
+
+%%% crescendo, decrescendo
+
+% These macros puts variable size (de)crescendo marks.
+% \(de)crescendo{#1} #1=length (any TeX dimension, max 192pt(\simeq 68mm))
+
+\def\C@cresc#1{\y@iv#1\n@v\y@iv
+ \sp@pt\@ne \advance\n@v\thr@@ % sp->pt round up
+ \divide\n@v\si@ % the next is 6pt(notehead) wider
+ \max@n@v\@xxxii
+ \min@n@v\@ne % clip to extremities
+ \advance\n@v\n@ii % first character position (-1)
+ \mxsps\char\n@v}
+
+\def\crescendo{\n@ii\@lxxxiii \C@cresc}
+\def\decrescendo{\n@ii\@cxv \C@cresc}
+
+\newskip\@icresc
+\def\icresc{\getcurpos\global\@icresc\y@v }
+\def\tcresc{\n@ii\@lxxxiii \C@cre}
+\def\tdecresc{\n@ii\@cxv \C@cre}
+\def\C@cre{\getcurpos\advance\y@v-\@icresc \kernm\y@v\C@cresc\y@v\kern\y@v}
+
+%%% pedal signs
+
+\def\raiseped{-5}
+
+\def\sPed{\musixchar34}
+\def\sPED{%
+\zchar\raiseped\sPed%
+\getcurpos\advance\y@v1.6ex\global\pdl@pos\y@v%
+\xdef\pdl@instr{\the\noinstrum@nt}\xdef\pdl@staff{\the\noport@@}% save current instrument and staff
+}
+
+\def\Ped{\musixchar35}
+\def\PED{%
+\zchar\raiseped\Ped%
+\getcurpos\advance\y@v2.8ex\global\pdl@pos\y@v%
+\xdef\pdl@instr{\the\noinstrum@nt}\xdef\pdl@staff{\the\noport@@}% save current instrument and staff
+}
+\def\Dep{\musixchar33}
+\def\DEP{%
+\zchar\raiseped\Dep%
+\global\pdl@pos\z@%
+}
+\def\sDep{\musixchar104}
+\def\sDEP{%
+\zchar\raiseped\sDep%
+\global\pdl@pos\z@%
+}
+
+%%% pedal brackets version 1.21 RDT
+%%
+%% \pdld pedal down
+%% \pdlu pedal up
+%% \pdlud pedal up and immediately down
+
+\newdimen\pdl@pos % cursor position for pedal down
+\global\pdl@pos\z@
+
+\def\pdld{\hbox{\hroff{%
+\raise\raiseped\internote\hbox{\vrule height2ex depth0.5pt width0.5pt}%
+\getcurpos\global\pdl@pos\y@v%
+% save current instrument and staff
+\xdef\pdl@instr{\the\noinstrum@nt}\xdef\pdl@staff{\the\noport@@}%
+}}}%
+
+\def\pdlu{\hbox{\hroff{\getcurpos\advance\y@v-\pdl@pos%% compute length of horizontal rule
+\kern-\y@v%
+\raise\raiseped\internote\hbox{%
+\vrule height-0.5pt depth1pt width\y@v%
+\vrule height2ex depth0.5pt width0.5pt %% pedal up
+}}}%
+\global\pdl@pos\z@}%
+
+\newbox\bigwedgebox % 1.22 RDT
+\def\pdlud{\hbox{\hroff{\getcurpos\advance\y@v-\pdl@pos%% compute length of horizontal rule
+\kern-\y@v%
+\thinmuskip=2mu%
+\setbox\bigwedgebox=\hbox{$\!\bigwedge\!$}%
+\def\halfwidthbigwedge{0.5\wd\bigwedgebox}%
+\advance\y@v-\halfwidthbigwedge%
+\raise\raiseped\internote%
+\hbox{%
+\vrule height-0.5pt depth1pt width\y@v% draw horizontal rule
+\kern\halfwidthbigwedge%
+\raise0.33ex\lrlap{$\bigwedge$}% pedal up and down
+}%
+\getcurpos\advance\y@v\halfwidthbigwedge\global\pdl@pos\y@v%
+}}}%
+
+%% cut pedal rule at line end
+%%
+% compute length of horizontal rule
+\def\pdlc@{\getcurpos\advance\y@v-\pdl@pos%
+\kern-\y@v\raise\raiseped\internote\hbox{%
+\vrule height-0.5pt depth1pt width\y@v %% draw horizontal rule
+}}%
+
+%%% fermata
+
+\def\fermataup{\n@iv80\@Char}
+\def\fermatadown{\n@iv81\@Char}
+% center on whole note
+\def\Fermataup#1{\wholeshift{\fermataup{#1}}}
+\def\Fermatadown#1{\wholeshift{\fermatadown{#1}}}
+
+%%% trills
+
+\def\trilleX{\let\T@i\empty \C@trille}
+\let\trille\trilleX
+\def\TrilleX{\def\T@i{\ppff tr }\C@trille} % 1.24 changed from \it RDT
+\let\Trille\TrilleX
+\def\C@trille#1#2{\zcharnote{#1}{\y@v#2\noteskip \trill@}}
+
+\let\maxtrilles\si@
+% \maxtrilles and \@itrille[i] are only for obsolete Legacy \trillC
+% and \TrillC; not related with new register allocation code. Leave
+% it as-is. [version 1.15]
+
+\newskip\@itrillei
+\newskip\@itrilleii
+\newskip\@itrilleiii
+\newskip\@itrilleiv
+\newskip\@itrillev
+\newskip\@itrillevi
+
+ %\def\s@l@cttrille#1\relax{%
+ % \n@i#1\relax \ifnum\n@i<\z@ \n@i\@c \fi
+ % \ifnum\n@i<\maxtrilles \else
+ % \n@i\z@ \errmessage{Wrong trill number!}\fi
+ % \advance\n@i\@ne
+ % \edef\@itrille{\csname @itrille\roman@n@i}% dimen (altportee)
+ % }% select trill
+
+
+\def\itrille{\itrill@old{0}}
+\def\ttrille{\ttrill@old{0}}
+\def\tTrille{\tTrill@old{0}}
+
+\def\itrill@old#1{\s@l@cttrill#1\relax
+ \ifdim\tr@x < \maxdimen\errmessage{\@mis \noexpand\Ttrille \number #1}\fi
+ \getcurpos\global\tr@y\y@v}
+\def\ttrill@old#1{\s@l@cttrill#1\relax
+ \message{\noexpand\tr@x=\the\tr@x, No. #1}%
+ \ifdim\tr@x < \maxdimen\else\errmessage{\@mis \noexpand\Itrille \number #1}\fi
+ \let\T@i\empty \C@tri}
+\def\tTrill@old#1{\s@l@cttrill#1\relax
+ \message{\noexpand\tr@x=\the\tr@x, No. #1}%
+ \ifdim\tr@x < \maxdimen\else\errmessage{\@mis \noexpand\Itrille \number #1}\fi
+ \def\T@i{\ppff tr }\C@tri} % 1.24 changed from \it RDT
+
+\def\C@tri#1{\getcurpos\advance\y@v-\tr@y \kernm\y@v
+ \zcharnote{#1}\trill@\kern\y@v\let\T@i\empty\let\@itrille\undefined}
+\def\trill@{\hbox\@to\y@v{\T@i\leaders\hbox{\musixchar69}\hfill}}
+
+%%%%%%
+
+% \let\maxtrills\si@ % here disabled to avoid conflict with new register allocation code
+% [version 1.15] moved out to the new register allocation code
+% \newskip\tr@xi \tr@xi\maxdimen\relax % starting horizontal pos
+% \newtoks\tr@swi % heading of trill
+% \newskip\tr@yi % height of trill
+
+\newcount\tr@number
+
+\def\tr@loop{\tr@number\z@ \loop\ifnum\tr@number<\maxtrills
+ \s@l@cttrill\tr@number\relax
+ \advance\tr@number\@ne }
+
+\def\s@l@cttrill#1\relax{%
+ \n@i#1\relax \ifnum\n@i<\z@ \n@i\@c \fi
+ \ifnum\n@i<\maxtrills \else
+ \count@\maxtrills \advance\count@\m@ne
+ \errmessage{Wrong trill reference number \the\n@i! (valid: 0 to \the\count@)}% [version 1.15]
+ \n@i\z@ % [version 1.15]
+ \fi
+ \advance\n@i\@ne
+ \xdef\tr@x{\csname tr@x\roman@n@i}%
+ \xdef\tr@y{\csname tr@y\roman@n@i}%
+ \xdef\tr@sw{\csname tr@sw\roman@n@i}%
+ }% select octiaviation line
+
+%\newskip\tr@x \tr@x\maxdimen\relax % starting horizontal pos
+%\newskip\tr@y % height of trill
+
+\def\Itrille#1{\s@l@cttrill#1\relax
+ \ifdim\tr@x < \maxdimen\errmessage{\@mis \noexpand\Ttrille \number #1}\fi
+ \global\tr@sw={\relax}%
+ \C@T}
+\def\ITrille#1{\s@l@cttrill#1\relax
+ \ifdim\tr@x < \maxdimen\errmessage{\@mis \noexpand\Ttrille \number #1}\fi
+ \global\tr@sw={{\ppff tr }}% 1.24 changed from \it RDT
+ \C@T}
+
+\def\C@T#1{%
+ \getcurpos\global\tr@x\y@v % store horizontal pos
+ \inhgetn@i#1\relax\pl@base\advance\y@i\altportee % get absolute height
+ \global\tr@y\y@i }
+
+\def\Ttrille#1{\s@l@cttrill#1\relax
+ \ifdim\tr@x < \maxdimen\else\errmessage{\@mis \noexpand\Itrille \number #1}\fi
+ \advance\tr@y-\altportee \let\T@ii\char \C@TR \global\tr@x\maxdimen }
+ \let\TTrille\Ttrille
+
+\def\C@TR{%
+ \ifx\T@ii\n@ii \y@v\lin@pos \else \getcurpos \fi
+ \advance\y@v-\tr@x \kernm\y@v \raise\tr@y\hbox\@to\y@v{%
+% \the\tr@sw\xleaders\hbox{\musixchar69}\hfill\T@ii\n@ii}}%
+% Correction by Julian Gilbey
+ \the\tr@sw\xleaders\hbox{\musixchar69}\hfill}}%
+
+%%% tremolos version 1.19 RDT
+%%% based on code by Werner Icking and Andre van Ryckeghem
+%%% version 1.20 RDT re-defined using \raise, suggested by JPC
+%%% version 1.21
+%%% RDT changed beam numbers to 5, suggested by JPC
+%%% RDT adjusted the vertical positions for 16th and 32nd tremolos
+%%% version 1.24
+%%% RDT use new counter \tr@nspose to preserve changes to \transpose in an \hbox
+
+\newcount\tr@nspose % used to restore value of \transpose after closing an \hbox
+\def\trml#1{\raise2\internote\hbox{\loffset{0.5}{\ibl5{#1}9}\roffset{0.5}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\trmu#1{\raise-3\internote\hbox{\loffset{0.5}{\ibu5{#1}9}\roffset{0.5}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\trrml#1{\raise3\internote\hbox{\loffset{0.5}{\ibbl5{#1}9}\roffset{0.5}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\trrmu#1{\raise-4\internote\hbox{\loffset{0.5}{\ibbu5{#1}9}\roffset{0.5}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\trrrml#1{\raise3\internote\hbox{\loffset{0.5}{\ibbbl5{#1}9}\roffset{0.5}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\trrrmu#1{\raise-4\internote\hbox{\loffset{0.5}{\ibbbu5{#1}9}\roffset{0.5}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+
+% whole notes are wider than quarter/half notes:
+% version 1.21 RDT adjusted the offsets and vertical positions
+
+\def\Trml#1{\raise3\internote\hbox{\ibl5{#1}9\roffset{1.25}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\Trmu#1{\raise-4\internote\hbox{\loffset{1.1}{\ibu5{#1}9}\roffset{0.15}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\Trrml#1{\raise3\internote\hbox{\ibbl5{#1}9\roffset{1.25}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\Trrmu#1{\raise-4\internote\hbox{\loffset{1.1}{\ibbu5{#1}9}\roffset{0.15}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\Trrrml#1{\raise3\internote\hbox{\ibbbl5{#1}9\roffset{1.25}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+\def\Trrrmu#1{\raise-4\internote\hbox{\loffset{1.1}{\ibbbu5{#1}9}\roffset{0.15}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
+
+%%% octave lines
+
+\def\octnumberup{\octnumberdefault\vrule width 0pt height2ex}
+\def\octnumberdefault{\smallppff8} % version 1.17 RDT
+\def\octnumberdown{\octnumberdefault$^a$\txtfont\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}
+
+%%%%%%
+% 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
+}
+
+
+%%%%%%
+
+% \let\maxoctlines\si@ % here disabled to avoid conflict with new register allocation code, except for \o@swz
+% [version 1.15] moved out to the new register allocation code
+% \newskip\o@xi \o@xi\maxdimen\relax % starting horizontal pos
+% \newskip\o@yi % height of octline
+\newtoks\o@swz % sense of octline for \octfin[up][down] without number
+% \newtoks\o@swz % sense of octline for \octfin[up][down] without number
+
+\newcount\o@number
+
+\def\o@loop{\o@number\z@ \loop\ifnum\o@number<\maxoctlines
+ \s@l@ctoctline\o@number\relax
+ \advance\o@number\@ne }
+
+\def\s@l@ctoctline#1\relax{%
+ \n@i#1\relax \ifnum\n@i<\z@ \n@i\@c \fi
+ \ifnum\n@i<\maxoctlines \else
+ \count@\maxoctlines \advance\count@\m@ne
+ \errmessage{Wrong octaviation line reference number \the\n@i! (valid: 0 to \the\count@)}% [version 1.15]
+ \n@i\z@% [version 1.15]
+ \fi
+ \advance\n@i\@ne
+ \xdef\o@x{\csname o@x\roman@n@i}%
+ \xdef\o@y{\csname o@y\roman@n@i}%
+ \xdef\o@sw{\csname o@sw\roman@n@i}%
+ }% select octiaviation line
+
+%\newskip\o@x \o@x\maxdimen\relax % starting horizontal pos
+%\newskip\o@y % height of octline
+
+\def\ioctfinup{\Ioctfinup0}
+\def\ioctfindown{\Ioctfindown0}
+\def\Ioctfinup#1{\check@staff
+ \s@l@ctoctline#1\relax
+ \ifdim\o@x < \maxdimen\errmessage{\@mis \noexpand\Toctfin \number #1}\fi
+ \global\o@sw={\@ne}\fi
+ \C@O}
+\def\Ioctfindown#1{\check@staff
+ \s@l@ctoctline#1\relax
+ \ifdim\o@x < \maxdimen\errmessage{\@mis \noexpand\Toctfin \number #1}\fi
+ \global\o@sw={\z@}\fi
+ \C@O}
+
+\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
+ \fi} % clise check@staff in Ioctfinup/down
+
+\def\toctfin{\Toctfin0}
+\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{\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}\relax
+ \fi}%
+
+% Liftoctline #1 refnumber #2 lift[steps of internote]
+
+\def\Liftoctline#1#2{\n@i#1\advance\n@i\@ne
+ \advance\csname o@y\roman@n@i#2\internote}
+
+%%% some specials
+
+% \def\metron#1#2{{\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2}}
+% version 1.19 RDT:
+\let\lyricson\relax
+\let\lyricsoff\relax
+\def\metron#1#2{{\lyricsoff\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2\lyricson}}
+\def\metronequiv#1#2{{\lyricsoff\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2 1\lyricson}}
+
+
+\def\txt{3}
+\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}}%
+ \zcharnote{#2}{\kern\h@lf\qn@width\kern \half@sign@skip\lrlap{\txtfont#1\/\/}}}
+\def\triolet{\xtuplet\txt} % version 1.17 RDT
+\def\xxtuplet#1:#2#3{\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}}%
+ \zcharnote{#3}{\kern\h@lf\qn@width\kern \half@sign@skip\lrlap{\txtfont{#1:#2\/\/}}}}
+
+%
+% Following definitions based on tuplet.tex - conventional tuplet brackets for MusiXTeX.
+% Col. G. L. Sicherman. Last revised 2003-05-17.
+%
+% Added to musixtex.tex version 1.16 by RDT.
+%
+% Standard MusiXTeX uses \uptrio and \downtrio to print tuplet brackets.
+% We define \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 under the notes, starting at pitch "a",
+% 2.5\noteskip wide, with a slope down of 4-1/2 degrees:
+%
+% \def\tuplettxt{6\/\/}
+% \downtuplet{a}{2.5}{-4}
+%
+% Send comments, complaints, and bouquets to the Colonel at
+% <colonel@monmouth.com>.
+%
+
+% 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{3\/\/}
+
+%%% 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\txtfont\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}
+
+%\check
+
+\def\zbreath{\check@staff\raise\si@\internote\rlap{\BIGtype'}\fi}
+\def\cbreath{\check@staff\adv@box{\raise\si@\internote
+ \hbox\@to\noteskip{\hss\BIGtype'\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)
+
+\def\lpar{\n@iv\thr@@ \@Char}
+\def\rpar{\n@iv\f@ur \@Char}
+
+% \bracket pn draws a square bracket [ to bracket an interval
+% of an n-th whose lowest note is p (Ian Collier)
+
+\def\bracket#1#2{\y@iv#2\internote \advance\y@iv\tw@\internote
+ \inhgetn@i#1\relax\pl@base \advance\y@i-1\h@lf\internote
+ \raise\y@i\llap{\uplap{\offinterlineskip\hbox{\mxsps\@xxvii}%
+ \hbox{\vrule\@height\y@iv}\hbox{\mxsps\@xxvii}}}}
+
+%%% dynamics
+
+\def\f@kern{\kernm\p@ne ex}
+\def\p@kern{\kernm\p@ne5ex}
+
+\def\f{{\ppff f}}
+\def\ff{{\ppff f\f@kern f}}
+\def\fp{{\ppff f\f@kern p}}
+\def\sF{{\ppff s\ppff \p@kern f}} % changed \it to \ppff 1.24 RDT
+\def\fff{{\ppff f\f@kern f\f@kern f}}
+\def\ffff{{\ppff f\f@kern f\f@kern f\f@kern f}}
+\def\mf{{\ppff m\p@kern\f@kern f}}
+\def\mp@{{\ppff m\p@kern p}}
+\let\mezzopiano\mp@
+\def\p{{\ppff p}}
+\def\pp{{\ppff p\p@kern p}}
+\def\ppp{{\ppff p\p@kern p\p@kern p}}
+\def\pppp{{\ppff p\p@kern p\p@kern p\p@kern p}}
+\def\sfz{{\ppff s\p@kern f\f@kern z}} % version 1.16
+\def\sfzp{{\ppff s\p@kern f\f@kern z\p@kern p}} % version 1.16
+
+%%% spacings
+
+% if you want to reduce the space behind e.g. \changecontext, use
+% \addspace{dim} ! Only scaleable values are allowed !
+
+\def\addspace#1{\kern#1\global\advance\x@skip#1}
+
+% \hardspace inserts (reduces) outside of \notes..\en unscaleable space
+
+\let\fil@spc\empty
+\def\hardspace#1{\check@nopen\t@rmskip\y@v#1\addspace\y@v\fil@spc}
+
+\def\off#1{\advance\locx@skip#1\kern#1}
+\def\sk{\off\noteskip}
+\def\hsk{\off{\h@lf\noteskip}}
+\def\bsk{\off{-\noteskip}}
+\def\hbsk{\off{-\h@lf\noteskip}} % version 1.27 RDT
+
+%%
+% Redefine \qsk to be scaleable softwidth rather than a fixed kern
+% Otherwise, over/underfull boxes will occur on rescaled (pass 2) material
+%%
+
+\def\qqsk{\off{\qu@rt\@l@mskip}} % version 1.16 RDT
+\def\hqsk{\off{\h@lf\@l@mskip}}
+\def\tqsk{\off{\p@seven\@l@mskip}} % version 1.25 RDT
+\def\qsk{\off\@l@mskip}
+\def\bhsk{\off{-\h@lf\@l@mskip}} % version 1.27 RDT
+\def\btsk{\off{-\p@seven\@l@mskip}} % version 1.27 RDT
+\def\bqsk{\off-\@l@mskip} % version 1.27 RDT
+
+\def\nspace{\hardspace{\h@lf\qn@width}}
+\def\qspace{\hardspace\qn@width}
+
+%%% notes spacing
+
+\def\arithmeticskipscale{%
+ \def\znotes{\vnotes0\elemskip}
+ \def\notes{\vnotes2\elemskip}% 16th
+ \def\notesp{\vnotes2\h@lf\elemskip}% 16th point=8 trio
+ \def\Notes{\vnotes3\elemskip}% 8th
+ \def\Notesp{\vnotes3\h@lf\elemskip}% 8th point=4 trio
+ \def\NOtes{\vnotes4\elemskip}% 4th
+ \def\NOtesp{\vnotes4\h@lf\elemskip}% 4th point
+ \def\NOTes{\vnotes5\elemskip}% 2th
+ \def\NOTesp{\vnotes5\h@lf\elemskip}% 2th point
+ \def\NOTEs{\vnotes6\elemskip}% 1th
+ \def\NOTEsp{\undefined}%
+ \def\NOTES{\undefined}%
+}%
+
+\def\geometricskipscale{%
+ \def\znotes{\vnotes0\elemskip}
+ \def\notes{\vnotes2\elemskip}% 16th
+ \def\notesp{\vnotes2.38\elemskip}% 16th point=8 trio
+ \def\Notes{\vnotes2.83\elemskip}% 8th
+ \def\Notesp{\vnotes3.36\elemskip}% 8th point=4 trio
+ \def\NOtes{\vnotes4\elemskip}% 4th
+ \def\NOtesp{\vnotes4.76\elemskip}% 4th point
+ \def\NOTes{\vnotes5.66\elemskip}% 2th
+ \def\NOTesp{\vnotes6.72\elemskip}% 2th point
+ \def\NOTEs{\vnotes8\elemskip}% 1th
+ \def\NOTEsp{\vnotes9.52\elemskip}% 1th
+ \def\NOTES{\vnotes11.32\elemskip}% 1th
+}%
+
+\def\nnotes{\vnotes1.6\elemskip} % version 1.16 RDT (corrected 2015-03-31)
+\def\nnnotes{\vnotes1.28\elemskip} % version 1.16 RDT (corrected 2015-03-31)
+
+\arithmeticskipscale
+
+\def\scale#1{\def\scalenoteskip{#1}}
+\let\scalenoteskip\normalvalue
+
+\def\multnoteskip#1{\noteskip#1\noteskip}
+
+\def\vnotes#1\elemskip{\noteskip#1\@l@mskip \@vnotes}
+
+\let\V@sw\z@
+%\def\varnotes#1{\t@rmskip \let\V@sw\@ne
+% \setbox\ch@box\hbox{#1}\noteskip\wd\ch@box \@vnotes}
+
+\def\hardnotes#1\notes{\t@rmskip \let\V@sw\@ne
+ \noteskip#1\relax \@vnotes}
+
+\let\thelyrics\empty
+%\def\hardlyrics#1\notes{\t@rmskip \let\V@sw\@ne \def\thelyrics{\hbox{#1}}%
+% \setbox\ch@box\thelyrics \noteskip\wd\ch@box \@vnotes}
+\def\softlyrics#1{\def\thelyrics{\hbox{#1}}}%
+\def\hardlyrics#1\notes{\t@rmskip \let\V@sw\@ne
+ \let\save@noteskip\noteskip
+ \def\noteskip{\z@\relax\errmessage{You cannot use \noexpand\noteskip
+ in \noexpand\hardlyrics's 1st argument!}}%
+ \def\thelyrics{\hbox{#1}}%
+ \setbox\ch@box\thelyrics \let\noteskip\save@noteskip
+ \noteskip\wd\ch@box \@vnotes}
+
+
+\def\@vnotes{\multnoteskip\scalenoteskip
+ \def|{\nextstaff}\def&{\nextinstrument}\normaltranspose\transpose
+ \check@nopen\notes@open\@ne
+ \kern\n@skip\advance\x@skip\n@skip \locx@skip\x@skip
+ \n@skip\noteskip \noinstrum@nt\z@ \begininstrument}
+
+\def\en{\@ndstaff\notes@open\z@
+ \ifnum\V@sw>0\t@rmskip
+ \fi
+ \let\thelyrics\empty}
+\let\enotes\en
+
+\newcount\notes@open
+
+\def\check@nopen{%
+ \ifnum\notes@open>\z@ \en\errmessage{\@mis\noexpand\enotes ->}\fi}
+
+%%% text, lyrics, free positioning of chars
+
+\def\pl@base{\y@i\n@i\internote}
+\def\lrlap#1{\rlap{\hss#1}}
+\def\hard@box#1{\rlap{\hbox\@to\noteskip{#1\hfil}}}
+\def\dhard@box#1{\rlap{\hbox\@to\tw@\noteskip{#1\hfil}}}
+\def\thard@box#1{\rlap{\hbox\@to\thr@@\noteskip{#1\hfil}}}
+
+\def\zcharnote{\let\@Ti\rlap \C@ch}
+\def\lcharnote{\let\@Ti\llap \C@ch}
+\def\ccharnote{\let\@Ti\lrlap \C@ch}
+\def\hcharnote{\let\@Ti\hard@box \C@ch}
+\def\charnote#1#2{\zcharnote{#1}{#2}\sk}
+
+\def\zcn{\zcharnote} % version 1.16
+\def\ccn{\ccharnote}
+\def\lcn{\lcharnote}
+
+\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{\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{\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{\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}}
+
+% [version 1.15] moved out to the new register allocation code
+% \let\T@Ri\z@
+
+\def\qlrlap#1{\rlap{\hbox to \qn@width{\hss#1\hss}}}
+\def\zsong{\let\@Ti\rlap \C@t}
+\def\lsong{\let\@Ti\llap \C@t}
+\def\csong{\let\@Ti\qlrlap \C@t}
+\def\hsong{\let\@Ti\hard@box \C@t}
+\def\dhsong{\let\@Ti\dhard@box \C@t}
+\def\thsong{\let\@Ti\thard@box \C@t}
+
+\def\C@t#1{\C@tx{\@Ti{\strut#1}\vss}}
+
+\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 \advance\y@iv\stem@skip \divide\y@iv\tw@
+ \advance\noinstrum@nt\@ne \fi
+ \advance\y@iv-\csname T@R\romannumeral\noinstrum@nt\endcsname
+%% \advance\noinstrum@nt\@ne \fi
+ \lower\y@iv\uplap}
+
+%%% slope lines and brackets
+
+% varline #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\varline#1#2#3{\n@v#3\y@i#2%
+ \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}%
+ \y@iv\wd\ch@box \y@ii\qu@rt\p@ \y@ii\n@iii\y@ii \y@iii\z@
+ \raise#1\internote\hbox{\ifx\@hook\@ne \mxsps\char\n@iv \fi
+% main loop
+ \loop\ifdim\y@iv<\y@i
+ \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@v2\h@lf\y@i \y@v\n@iii\y@v \divide\y@v\@c \advance\y@iv-\y@i
+ \y@ii-2\h@lf\y@iv \y@ii\n@iii\y@ii \divide\y@ii\@c \advance\y@iii\y@ii
+ \kernm\y@iv\raise\y@iii\box\ch@box%
+ \ifx\@hook\@ne \raise\y@v\hbox{\mxsps\char\n@iv}\fi
+% text in the middle
+ \ifx\@text\@ne \ifnum\n@vi=\@ne \y@iii\p@ \else\y@iii-\p@ \fi
+ \advance\y@iii\h@lf\y@v \kernm\h@lf\y@i\raise\y@iii\vbox\@to\z@{%
+ \ifnum\n@vi=\@ne \vss \fi\lrlap{\txtfont\txt}\ifnum\n@vi=\@ne \else\vss \fi}\fi}%
+ \let\@hook\empty \let\@text\empty}
+%
+% y@i =complete length
+% y@ii =height of linechar
+% y@iii=current height
+% y@iv =current width
+% y@v =height of ending line
+%
+% n@iii=slope
+% n@iv =(number of char for hooks)
+% n@v =slope (number of linechar)
+% n@vi =1 -> text above
+% @hook=\@ne -> draws hookrules at begin and end of line
+% @text=\@ne -> puts text at the middle of the line (def'd with \txt)
+
+% \ov[un]bkt{p}{n}{s} draws a bracket over the music starting at the
+% current position at pitch p, width n\noteskip and slope s, causing no space
+% #1=height (note), #2=length (noteskips) #3=slope (1\eqiv 1.125[degree])
+
+\def\ovbkt{\n@iv22\C@bkt}
+\def\unbkt{\n@iv21\C@bkt}
+
+\def\C@bkt#1#2#3{\y@v#2\noteskip \advance\y@v\wn@width \let\@hook\@ne
+ \inhgetn@i#1\relax \rlap{\kernm\p@ne\qn@width\varline\n@i\y@v{#3}}}
+
+% \up[down]trio{p}{n}{s} same as above,
+% draws \txt (default \eightit 3) above[below] in the middle
+% #1=height (note), #2=length (noteskips) #3=slope (1\eqiv 1.125[degree])
+
+\def\uptrio{\n@vi\z@ \let\@text\@ne \ovbkt}
+\def\downtrio{\n@vi\@ne \let\@text\@ne \unbkt}
+
+%
+% slide #1=height #2=number of elements #3=slope(-8 to 8 [step 10degree])
+%
+\def\slide#1#2#3{\n@ii#3\relax\inhgetn@i#1\relax%
+ \ifnum\n@ii>\m@ne \advance\n@ii\m@ne\let\@Ti\raise
+ \else \n@ii-\n@ii \advance\n@ii\s@v@n\let\@Ti\lower \fi
+ \setbox\toks@box\hbox{\mxsps\char\n@ii}\n@iii\z@
+ \raise\n@i\internote\rlap{\hbox{\loop\ifnum\n@iii<#2%
+ \@Ti\n@iii\ht\toks@box\copy\toks@box\advance\n@iii\@ne\repeat}}}
+
+%%% standard settings
+% [115] make them compatible to >12 instruments
+\def\resetlayout{\def\interfacteur{9}%
+ \stafftopmarg\thr@@\Interligne \staffbotmarg\thr@@\Interligne
+ \count@\z@ \loop
+ \advance\count@ by\@ne
+ \expandafter \let\csname n@l\roman@c@\endcsname \fiv@
+% \expandafter\def\csname interfacteur\roman@c@\endcsname{\interfacteur} % RDT deleted 1.26
+ \ifnum\count@<\maxinstruments\repeat
+ \resetclefsymbols}
+
+\def\resetclefsymbols{%
+ \count@\z@ \loop
+ \advance\count@ by\@ne
+ \expandafter \let\csname treblec@s\roman@c@\endcsname \z@
+ \expandafter \let\csname altoc@s\roman@c@\endcsname \z@
+ \expandafter \let\csname bassc@s\roman@c@\endcsname \z@
+ \ifnum\count@<\maxinstruments\repeat
+}
+
+% [version 1.15] setup the default maximum element numbers to the same values of T.114
+\setmaxinstruments\si@
+\setmaxcxxviiibeams\si@ % 128th beam
+\setmaxcclvibeams\z@ % 256th beam
+\setmaxgroups\thr@@ % groups of inst's or choirs
+\setmaxslurs\maxinstruments
+\setmaxtrills\maxinstruments
+\setmaxoctlines\maxinstruments
+%
+
+% [version 1.15] new register allocation code requires some changes
+%\resetlayout % no need
+%\let\nbinstruments\maxinstruments % no need
+%\normalnotesize % already executed in \setmaxinstruments
+\normalmusicsize
+\normalnotesize % important: execute it again after the first execute of \normalmusicsize --- to initialize \metron stem length. but why?
+%\resetlayout % no need
+\def\nbinstruments{1}
+\noinstrum@nt1\s@l@ctinstr\internote\Internote
+\def\tabstringfnt{\ifdim\internote<.95\Internote \fivess % 1.29 RDT
+\else\ifdim\internote<1.19\Internote \sixss
+\else\ifdim\internote<1.43\Internote \eightss
+\else\niness\fi\fi\fi}%
+
+%%%
+%
+% This is muflex.tex version 1.00 , January 1993
+%
+% Macro library for MusicTeX `flexiline' operations: MuFlex.
+% The idea is to set up a two pass system.
+% On the first pass, information about each bar is written to the file
+% jobname.mx1.
+% After the first pass, an external (non TeX) routine is run to
+% determine optimal values of the elemental spacing (\elemskip)
+% for each line, so as to properly fill each line, and to lead to
+% the piece filling an integral number of lines.
+% The relevant parameters are written onto the file
+% jobname.mx2.
+% On the second pass, the .mx2 file is read in, and the information
+% used as described above.
+%
+% Ross Mitchell, January 1993.
+%
+%%%
+
+\newwrite\outmux
+\def\fil@{\immediate\write\outmux}
+
+%%
+% \mulooseness is the MuFlex analog of TeX's \looseness parameter:
+% the increment to the natural number of lines in the section just
+% ended.
+%%
+
+\newcount\mulooseness
+% Alternative \linegoal
+\newcount\linegoal
+
+%%
+% Invoke \startmuflex before \startpiece to find out the pass number
+% and generally get things going.
+%%
+% !!! If you want (have) to override the .mx1, delete the .mx2 before !!!
+% !! You have to change the mx1, if you change the spacing inbetween !!
+
+\newif\ifstartmuflex@done
+\def\startmuflex{%
+ \ifstartmuflex@done
+ \immediate\write16{Warning: \noexpand\startmuflex\space
+ already done, ignored.}%
+ \else
+ \startmuflex@donetrue
+% \global\let\ifstartmuflex@done\iftrue
+ \openin\inmux\jobname.mx2\relax
+ \ifeof\inmux
+ \immediate\openout\outmux\jobname.mx1\relax
+ \fil@{\mufl@x}%
+ \pass@I
+ \else
+ \message{(\jobname.mx2)}\pass@II
+ \fi
+ \fi}
+
+\let\endmuflex\empty
+
+\newbox\l@eftrightbox
+
+\def\leftrightrepeat@I{%
+ % \setbox\toks@box\l@eftrightrepeat\y@v\wd\toks@box
+ % \setbox\toks@box\l@eftrepeat\y@iv\wd\toks@box
+ % \advance\y@v\y@iv \global\advance\x@skip-\y@v
+ %
+ \setleftrightrepeat\@bar
+ \edef\thex@skip{\the\x@skip}%
+ \setbox\l@eftrightbox\l@eftrightrepeat
+ \edef\they@v{\the\wd\l@eftrightbox}%
+ \setbox\l@eftrightbox\l@eftrepeat
+ \edef\they@iv{\the\wd\l@eftrightbox}%
+ \global\x@skip\thex@skip
+ \fil@{l \they@v\space\they@iv}}
+
+\def\leftrepeat@I{%
+% \setbox\toks@box\l@eftrepeat\y@iv\wd\toks@box
+% \global\advance\x@skip-\y@iv
+ \setleftrepeat\@bar
+ \edef\thex@skip{\the\x@skip}%
+ \setbox\l@eftrightbox\l@eftrepeat
+ \edef\they@iv{\the\wd\l@eftrightbox}%
+ \global\x@skip\thex@skip
+ \fil@{L \they@iv}}
+
+% \akkoladen from: "Rainer Dunker" <rainer.dunker@ebe-online.de>
+
+
+\def\akkoladen#1{%
+ \def\akk@count{0}% avoid occupying yet another count register
+ \ifx\empty#1\else\@akkoladen#1\@nd\fi
+ % deactivate all remaining \grouptop...bottom items
+ \loop
+ \ifnum\akk@count<\maxgroups
+ \incr@akk@count
+ \expandafter\groupbottom\expandafter{\akk@count}\maxdimen
+ \expandafter\grouptop\expandafter{\akk@count}\z@
+ \repeat}
+\def\@akkoladen#1#2#3\@nd{%
+ \incr@akk@count
+ \expandafter\groupbottom\expandafter{\akk@count}{#1}%
+ \expandafter\grouptop\expandafter{\akk@count}{#2}%
+ \ifx\empty#3\else\@akkoladen#3\@nd\fi}
+\def\incr@akk@count{%
+ \count@\akk@count\relax \advance\count@\@ne \edef\akk@count{\the\count@}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This is MusiXTex code for multiple left curly brackets %
+% %
+% submitted by Mthimkhulu Molekwa %
+% to the mutex list on 19 May 1999 %
+% %
+% %
+% usage: %
+% \curlybrackets{<instrument1lower><instrument1upper> %
+% <instrument2lower><instrument2upper> %
+% ... %
+% <instrument_n_lower><instrument_n_upper> %
+% } %
+% %
+% %
+% %
+% This version corrected 07/23/2007 by Rainer Dunker to make it %
+% insensitive to changes in \interstaff by PMX %
+% %
+% Added to musixtex.tex version 1.16 by RDT %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Macros for tablature. They put numbers on or above the staff lines.%
+% Based on tabdefs.tex by R.J. Gelten %
+% version 1.29 RDT
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif\iftabstylespace\tabstylespacefalse
+% \tabbox ensures a white background for the tab number in the ps-file
+% so the stafflines don't overwrite the number. Symbols are centered.
+\def\tabbox#1#2{%
+ \setbox0=\hbox{\tabfnt #2}%
+ \stringraise\nblines
+ \advance\stringraise by -#1
+ \multiply\stringraise by 2
+ \advancefalse\def\q@u{}\loffset{0.45}{\@nq{\the\stringraise}}%
+ \iftabstylespace\else\advance\stringraise-1\fi
+ \special{ps: 1 setgray}%
+ \ccharnote{\the\stringraise}{\vrule height \ht0 width \wd0 depth \dp0}%
+ \special{ps: 0 setgray}%
+ \ccharnote{\the\stringraise}{\box0}%
+}
+% \ltabbox does the same as \tabbox, except that it produces
+% left-outlined symbols
+\def\ltabbox#1#2{\setbox0=\hbox{\tabfnt #2}%
+ \stringraise\nblines
+ \advance\stringraise by -#1
+ \multiply\stringraise by 2
+ \advancefalse\def\q@u{}\loffset{0.2}{\@nq{\the\stringraise}}%
+ \iftabstylespace\else\advance\stringraise-1\fi
+ \special{ps: 1 setgray}%
+ \zcharnote{\the\stringraise}{\vrule height \ht0 width \wd0 depth \dp0}%
+ \special{ps: 0 setgray}%
+ \zcharnote{\the\stringraise}{\box0}%
+}
+% \rtabbox does the same as \tabbox, except that it produces
+% right-outlined symbols
+\def\rtabbox#1#2{\setbox0=\hbox{\tabfnt #2}%
+ \stringraise\nblines
+ \advance\stringraise by -#1
+ \multiply\stringraise by 2
+ \advancefalse\def\q@u{}\loffset{0.75}{\@nq{\the\stringraise}}%
+ \iftabstylespace\else\advance\stringraise-1\fi
+ \special{ps: 1 setgray}%
+ \lcharnote{\the\stringraise}{\vrule height \ht0 width \wd0 depth \dp0}%
+ \special{ps: 0 setgray}%
+ \lcharnote{\the\stringraise}{\box0}%
+}
+
+% \tab takes two arguments.
+% #1 is the string number
+% #2 is the symbol to be put on the string
+% the symbols are horizontally centered and a \sk is put behind it,
+% to jump to the position of the next symbol
+\newcount\stringraise
+\def\tab#1#2{%
+ \tabbox{#1}{#2}\sk%
+}
+% left spilling \tab
+\def\ltab#1#2{%
+ \ltabbox{#1}{#2}\sk%
+}
+% right spilling \tab
+\def\rtab#1#2{%
+ \rtabbox{#1}{#2}\sk%
+}
+% \chord-tab symbol. Same as \tab, but no \sk is given, so multiple
+% symbols can be placed above one another
+\def\ztab#1#2{%
+ \tabbox{#1}{#2}%
+}
+% left spilling \ztab
+\def\zltab#1#2{%
+ \ltabbox{#1}{#2}%
+}
+% right spilling \ztab
+\def\zrtab#1#2{%
+ \rtabbox{#1}{#2}%
+}
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% define a new clefsymbol \tabclef for tablature %
+% 1.29 RDT
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\tabclef{%
+ \setbox0=\hbox{\tabcleffnt T}
+ \setbox1=\vbox{\baselineskip=0.5\baselineskip
+ \hbox to 2\wd0{{\tabcleffnt T}\hfil}
+ \hbox to 2\wd0{{\tabcleffnt A}\hfil}
+ \hbox to 2\wd0{{\tabcleffnt B}\hfil}
+ }
+ \ifnum\nblines=6\lower1.5\internote\box1
+ \else\ifnum\nblines=4\lower3.5\internote\box1\else\lower2.5\internote\box1\fi\fi}
+
+
+\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}
+
+
+%%
+% Define \pass@I to perform the following functions:
+%
+% (a) set line and page breaking for the first pass by setting
+% rigid values for \elemskip (#1),
+% \maxbarsinlin@ (#2)
+%
+% (b) Redefine \t@rmskip so that it writes to the .mx1 file;
+%
+% (c) Redefine part of \debutmorceau to open the output (.mx1) file
+% and write the following parameters to the .mx1 file:
+% \line@width
+% \parindent
+% \beforeruleskip
+% \afterruleskip
+% \elemskip
+% \clef@skip
+% \sign@skip;
+%
+% (d) redefine various other macros so that length measures will be
+% written to the .mx1 file
+%%
+
+\def\pass@I{\def\@nds@ction{\fil@{*\space\the\mulooseness\space\the\linegoal}%
+ \mulooseness\z@\relax \linegoal\z@}%
+
+%\def\pass@I{\def\@nds@ction{\fil@{*\space\the\mulooseness}\mulooseness\z@}%
+%%
+% Redefine \t@rmskip to include a macro for writing a record to a file,
+% and define the macro
+%%
+ \def\fil@termskip{%
+ \fil@{\the\barsinpi@c@\space\the\widthtyp@\space\the\x@skip}%
+ \widthtyp@\@ne}%
+%%
+% Redefine part of debutmorceau to write header information to file
+%%
+ \def\fil@begin{%
+ \fil@{S}% Startindicator
+ \fil@{\the\line@width}%
+ \fil@{\the\parindent}%
+ \fil@{\the\beforeruleskip}%
+ \fil@{\the\afterruleskip}%
+ \fil@{\the\@l@mskip}%
+ \fil@{\the\clef@skip}%
+ \fil@{\the\sign@skip}}%
+%
+% -> \writ@newsigns
+%
+ \def\fil@signs{%
+ \maxsign@skip\z@
+ \n@loop \s@l@ctsigns
+ \sign@skip\tw@\Internote
+ \sign@skip\a@s\sign@skip
+ \ifdim\sign@skip<\z@ \sign@skip-\sign@skip \fi
+ \global\advance\sign@skip\smallvalue\Internote
+ \ifdim\maxsign@skip<\sign@skip \global\maxsign@skip\sign@skip
+ \fi
+ \repeat
+ \global\sign@skip\maxsign@skip
+ \fil@{s\space\the\sign@skip}}%
+%
+% -> \Contpiece
+%
+ \def\fil@indent{\fil@{\the\barsinpi@c@\space0 \the\parindent}}%
+%
+% when a line is stopped with a zbar, to the next bar is added the amount
+% of afterruleskip
+% -> no line break during Pass 1 and indicate musixflx a zbar
+%
+ \def\zbar{\zn@wbar\fil@{z \the\barno}}%
+%
+% \leftrightrepeat behaves different in mid of line and end of line
+% -> no line break during Pass 1, get the widths and
+% indicate musixflx a leftrightrepeat
+%
+ \let\leftrightrepeat\leftrightrepeat@I
+ \let\zleftrightrepeat\leftrightrepeat@I % RDT 1.28
+%
+% s.a.
+%
+ \let\leftrepeat\leftrepeat@I
+ \let\zleftrepeat\leftrepeat@I % RDT 1.28
+%
+% -> \hardspace
+%
+ \def\fil@spc{\fil@{h \the\y@v}}%
+%
+% makes the .mx2 more transparent
+%
+ \def\fil@barno{\fil@{b \the\barno}}%
+%
+% break line if value of \lin@pos (exclusive parindent, signs and clefs)
+% is larger than 0.5\hsize
+%
+ \def\T@bil{\getcurpos \ifdim\y@v<\h@lf\line@width}%
+%
+% close the file
+%
+ \def\endmuflex{\immediate\closeout\outmux}}%
+
+%%
+% Macros to set up the second pass
+%%
+
+\newread\inmux
+
+%%
+% Main macro: \pass@II
+% Function: %%%(a) Open the .mx2 file
+% %%%(b) Set the number of lines per page to #1
+% (c) Set the \everystaff macro to read and decode line
+% parameter settings
+% %%%(d) Define end of bar, end of line and repeat macros
+% %%% according to \autolines
+%%
+
+\def\pass@II{\def\ragg@d{\hfilneg\ }%
+% \def\everyst@ff{\everystaff\read\inmux\@to\inline \inline}} % ancient
+ \def\everyst@ff{\read\inmux\@to\inline \inline\relax \everystaff}}
+
+%%
+% \inline expands to \lineset#1#2#3#4#5, so define the latter
+%%
+
+\def\lineset#1#2#3#4#5{\ifx\no@l\empty \message{<#1>}\fi
+ \maxbarsinlin@#2%
+ \@l@mskip#3%
+ \elemskip\@l@mskip
+ \afterruleskip#4%
+ \beforeruleskip#5}
+
+\def\musicparskip{\parskip\z@ plus\fiv@\Interligne minus\Interligne}
+
+\def\endcatcodesmusic{%
+ \catcode`\&\catcode@and
+ \catcode`\|\catcode@vert
+ \catcode`\>\catcode@gt
+ \catcode`\<\catcode@lt
+ \catcode`\!\catcode@excl
+ \catcode`\*\catcode@star
+ \catcode`\:\catcode@sc
+ \catcode`\.\catcode@pt
+ \let\bar\@@bar
+ \catcodesmusicfalse}
+
+\endcatcodesmusic
+
+%...\let\wlog=\@wloG
+
+\catcode`\@=\catcodeat
+\endinput
+
diff --git a/macros/musixtex/tex/musixtmr.tex b/macros/musixtex/tex/musixtmr.tex
new file mode 100644
index 0000000000..16f48a67e3
--- /dev/null
+++ b/macros/musixtex/tex/musixtmr.tex
@@ -0,0 +1,201 @@
+%%
+%% musixtmr.tex : Times-series fonts definition for MusiXTeX
+%%
+%% usage:
+%% \input musixtex
+%% \input musixtmr
+%% ...
+%%
+%% This file is public domain.
+%%
+%% Author:
+%% Hiroaki MORIMOTO <CQX05646 at nifty dot com>
+%% Tokyo, Japan
+%% URL(en): http://homepage1.nifty.com/kuuku/pub/musixtex/index-e.html
+%% (jp): http://homepage1.nifty.com/kuuku/pub/musixtex/index.html
+%% Extensions: Bob Tennent (rdt@cs.queensu.ca) 2016-02-22
+%%
+%% reference: musixtex.tex (0.99) 268-508
+%% MusiXTeX: (c) Daniel Taupin, et al.
+%%
+%% History: see trailer.
+%
+\immediate\write16{MusiXTimesFonts\space<2017/02/10>}
+\ifx\undefined\startpiece\errmessage{Input musixtex.tex before musixtmr.tex}\fi
+%
+% 7pt roman, bold, italic, bold italic, slanted and small-cap
+\font\sevenrm=ptmr8t at 7pt
+\font\sevenbf=ptmb8t at 7pt
+\font\sevenit=ptmri8t at 7pt
+\font\sevenbi=ptmbi8t at 7pt
+\font\sevensc=ptmrc8t at 7pt % artificial small-caps
+%
+% 8pt roman, bold, italic, bold italic, slanted and small-cap
+\font\eightrm=ptmr8t at 8pt
+\font\eightbf=ptmb8t at 8pt
+\font\eightit=ptmri8t at 8pt
+\font\eightbi=ptmbi8t at 8pt
+\font\eightsc=ptmrc8t at 8pt % artificial small-caps
+%
+% 9pt
+\font\ninerm=ptmr8t at 9pt
+\font\ninebf=ptmb8t at 9pt
+\font\nineit=ptmri8t at 9pt
+\font\ninebi=ptmbi8t at 9pt
+\font\ninesc=ptmrc8t at 9pt
+%
+% 10pt
+\font\tenrm=ptmr8t at 10pt
+\font\tenbf=ptmb8t at 10pt
+\font\tenit=ptmri8t at 10pt
+\font\tenbi=ptmbi8t at 10pt
+\font\tensc=ptmrc8t at 10pt
+%
+%
+% 11pt
+\font\elevenrm=ptmr8t scaled \magstephalf
+\font\elevenbf=ptmb8t scaled \magstephalf
+\font\elevenit=ptmri8t scaled \magstephalf
+\font\elevenbi=ptmbi8t scaled \magstephalf
+\font\elevensc=ptmrc8t scaled \magstephalf
+%
+% 12pt
+\font\twelverm=ptmr8t scaled \magstep 1
+\font\twelvebf=ptmb8t scaled \magstep 1
+\font\twelveit=ptmri8t scaled \magstep 1
+\font\twelvebi=ptmbi8t scaled \magstep 1
+\font\twelvesc=ptmrc8t scaled \magstep 1
+%
+% 14pt
+\font\frtrm=ptmr8t scaled \magstep2
+\font\frtbf=ptmb8t scaled \magstep2
+\font\frtit=ptmri8t scaled \magstep2
+\font\frtbi=ptmbi8t scaled \magstep2
+\font\frtsc=ptmrc8t scaled \magstep2
+%
+% 17pt
+\font\svtrm=ptmr8t scaled \magstep3
+\font\svtbf=ptmb8t scaled \magstep3
+\font\svtit=ptmri8t scaled \magstep3
+\font\svtbi=ptmbi8t scaled \magstep3
+\font\svtsc=ptmrc8t scaled \magstep3
+%
+% 20pt
+\font\twtyrm=ptmr8t scaled \magstep4
+\font\twtybf=ptmb8t scaled \magstep4
+\font\twtyit=ptmri8t scaled \magstep4
+\font\twtybi=ptmbi8t scaled \magstep4
+\font\twtysc=ptmrc8t scaled \magstep4
+%
+% 25pt
+\font\twfvrm=ptmr8t scaled \magstep5
+\font\twfvbf=ptmb8t scaled \magstep5
+\font\twfvit=ptmri8t scaled \magstep5
+\font\twfvbi=ptmbi8t scaled \magstep5
+\font\twfvsc=ptmrc8t scaled \magstep5
+%
+% large fonts for titles
+% (If you prefer Times-bold, use \bf)
+% (If you prefer small-caps, use \sc)
+%
+\def\bigtype{\bigfont\rm}
+\def\Bigtype{\Bigfont\rm}
+\def\BIgtype{\BIgfont\rm}
+\def\BIGtype{\BIGfont\rm}
+%
+%
+\font\ppfftwelve=ptmbi8t at 8pt
+\font\ppffsixteen=ptmbi8t at 10pt
+\font\ppfftwenty=ptmbi8t scaled \magstep 1
+\font\ppfftwentyfour=ptmbi8t scaled \magstep2
+\font\ppfftwentynine=ptmbi8t scaled \magstep3
+%
+%
+\def\f{{\ppff f}}
+\def\ff{{\ppff ff}}
+\def\fp{{\ppff fp}}
+\def\fff{{\ppff fff}}
+\def\ffff{{\ppff ffff}}
+\def\mf{{\ppff mf}}
+\def\p{{\ppff p}}
+\def\pp{{\ppff pp}}
+\def\ppp{{\ppff ppp}}
+\def\pppp{{\ppff pppp}}
+
+
+%
+% sl fonts needed by musixsty
+%
+\font\eightsl=ptmro8t at 8pt
+\font\ninesl=ptmro8t at 9pt
+\font\tensl=ptmro8t at 10pt
+\font\twelvesl=ptmro8t scaled \magstep1
+\font\frtsl=ptmro8t scaled \magstep2
+\font\svtsl=ptmro8t scaled \magstep3
+\font\twtysl=ptmro8t scaled \magstep4
+\font\twfvsl=ptmro8t scaled \magstep5
+%
+%
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+%
+\def\sF{{\ppff s\p@kern f}}
+\def\sfz{{\ppff s\p@kern f\f@kern z}}
+\def\sfzp{{\ppff s\p@kern f\f@kern z\p@kern p}}
+
+\def\mp@{{\ppff mp}}
+\let\mezzopiano\mp@
+
+%
+% Redefine accented characters for 8-bit font, suggested by David Carlisle:
+%
+\ifx\documentclass\undefined
+\def\ProvidesFile#1[#2]{}
+\def\DeclareFontEncoding#1#2#3{}
+\def\DeclareTextAccent#1#2#3{%
+\def#1##1{%
+\expandafter\ifx\csname T1\string#1-\string##1\endcsname\relax
+{\accent#1 ##1}%
+\else
+\csname T1\string#1-\string##1\expandafter\endcsname
+\fi}}
+\def\DeclareTextCommand#1#2{\xdtcmd}%not today
+\def\xdtcmd#1#{\xxdtcmd}%not today
+\def\xxdtcmd#1{}%not today
+\def\DeclareTextCompositeCommand#1#2#3#4{}%not today
+\def\DeclareTextSymbol#1#2#3{%
+\def#1{\char#3\relax}}
+\def\DeclareTextComposite#1#2#3#4{%
+\expandafter\def\csname T1\string#1-\string#3\endcsname{\char#4\relax}}
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+\input t1enc.def
+
+% \c needs special treatment
+\def\c#1{\leavevmode\ifx c#1\char231 \else\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent11 #1%
+ \else{\ooalign{\unhbox\z@\crcr
+ \hidewidth\char11\hidewidth}}\fi\fi}
+\catcode`\@=\catcodeat
+\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 1.14 final release.
+%% 2015/02/06
+%% 8-bit encoding and extensions, similar to musixplt.tex
+%% 2015-07-25
+%% change to ptmr8t fonts and use t1enc.def to re-defined accented characters
+%% 2016-07-11 RDT
+%% \catcode`\@=11 before inputting t1enc.def
diff --git a/macros/musixtex/tex/musixtri.tex b/macros/musixtex/tex/musixtri.tex
new file mode 100644
index 0000000000..52375e170d
--- /dev/null
+++ b/macros/musixtex/tex/musixtri.tex
@@ -0,0 +1,64 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+
+\immediate\write16{MusiXTRIplepoint 1.05\space<30 April 2002>}
+
+\ifx\undefined\hlppp \else \endinput \fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+
+\def\lppt{\g@pt\m@ne\tw@}
+
+\def\whppp{\def\w@h{\musixfont\nin@\roffset\qu@rt{\C@Point\tw@\raise}}%
+ \y@v\wn@width \g@w}
+\def\zwppp{\advancefalse\whppp}
+
+\def\@quppp{\let\st@m\upst@m \g@qppp}
+\def\@qlppp{\let\st@m\downst@m \g@qppp}
+\def\@zqppp{\let\st@m\setst@m \advancefalse\g@qppp}
+\def\@nqppp{\let\st@m\resetst@m \g@qppp}
+
+\def\q@uppp{\q@u\C@Point\tw@\raise}
+\def\g@qppp#1{\getn@i#1\relax \let\n@fon\g@qppp \let\n@sym\q@uppp
+ \y@v\qn@width \writ@note}
+
+\def\@qbppp#1{\s@l@ctbeam#1\relax \let\st@m\beamst@m \g@qppp}
+
+\def\@cuppp{\n@vii\@xl \let\st@m\up@flag \g@qppp}
+\def\@clppp{\n@vii45\let\st@m\down@flag \g@qppp}
+
+\def\huppp{\h@symbol\@quppp}
+\def\hlppp{\h@symbol\@qlppp}
+\def\zhppp{\h@symbol\@zqppp}
+\def\zhuppp{\advancefalse\huppp}
+\def\zhlppp{\advancefalse\hlppp}
+\def\quppp{\q@symbol\@quppp}
+\def\qlppp{\q@symbol\@qlppp}
+\def\zquppp{\advancefalse\quppp}
+\def\zqlppp{\advancefalse\qlppp}
+\def\zqppp{\q@symbol\@zqppp}
+\def\cuppp{\q@symbol\@cuppp}
+\def\zcuppp{\advancefalse\cuppp}
+\def\clppp{\q@symbol\@clppp}
+\def\zclppp{\advancefalse\clppp}
+\def\qbppp{\q@symbol\@qbppp}
+\def\zqbppp{\advancefalse\qbppp}
+
+\catcode`\@=\catcodeat
+\endinput
diff --git a/macros/musixtex/tex/tuplet.tex b/macros/musixtex/tex/tuplet.tex
new file mode 100644
index 0000000000..8ea0dfc030
--- /dev/null
+++ b/macros/musixtex/tex/tuplet.tex
@@ -0,0 +1,27 @@
+%
+% This file is part of MusiXTeX
+%
+% MusiXTeX 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, or (at your option)
+% any later version.
+%
+% MusiXTeX 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 MusiXTeX; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+%
+% tuplet.tex
+%
+\immediate\write16{tuplet.tex <2017-03-16>}%
+%
+% (nothing to do. - T.116 or later provide the definitions
+% by Col. Sicherman formerly in tuplet.tex)
+%
+\endinput