summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/m-tx/pmx.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/m-tx/pmx.tex')
-rw-r--r--Master/texmf-dist/doc/generic/m-tx/pmx.tex807
1 files changed, 807 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/m-tx/pmx.tex b/Master/texmf-dist/doc/generic/m-tx/pmx.tex
new file mode 100644
index 00000000000..916eda321fc
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/m-tx/pmx.tex
@@ -0,0 +1,807 @@
+%%%%%%%%%%%%%%%%%%%%%%%
+%% %%
+%% pmx.tex %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%
+\ifx\pmxversion\undefined\else\endinput\fi
+\def\pmxversion{2.72}\def\pmxdate{10 Jan 16}
+% 2.619 At movement break, directly set \nbinstruments in \newmovement;
+% probably don't need \newnoi any more.
+% (2.619a) Added \resetlyrics in \newmovement.
+% 2.614 Comment out definitions of some dotted rests, since either in
+% musixtex.tex or not needed.
+% Modified for two figured bass lines 081115
+% 2.502 (Olivier Vogel) change all the commands of the form
+% \font\...=\fontid sy1000 to \font\...=cmsy10
+% 2.408 comment out extra definition of \mdot
+% tweak \hpausep, replace \liftPAuse, add \liftPAusep
+% 2.406 redefine \starteq to put down strut for first system inside \znotes
+% 2.354a add \zcharnote{##2}{~} to \tieforsl
+% 2.354
+% Macros \tieforisu, etc, to replace slurs with ties, for use with musixps
+% 2.353
+% Define \pmxversion
+% Insert Dirk's 2nd set of (LaTeX-aware) redefinitions for \centerline etc.
+% Add 5th option for \endset to \newmovement, for Rz.
+% 12/24/01 add \setzalaligne
+% 12/23/01 Remove \parskip re-definition.
+% 12/16/01 Define \psforts (postscript slur endings to replace \midslur)
+% 10/20/01 added defn's of \bigcna, etc
+% 10/20/01 define \resetsize, redefine \gaft, \grace, and \shlft so resizing
+% is conditional on current staff line spacing.
+% 11 September Redefine liftpausc to include ledger line.
+% 26 Aug 01 Add \pcaesura, \pbreath
+% 10/21/00 Added PMXbarnotrue/false and stopped PMX zapping writezbarno
+% 15 October added vertical equalization macros
+% 4 July added \PAusep, \brevep, dynamic mark placement \pmxdyn, \sfz
+% 1 July inserted stuff for hairpins
+% 31 May 99 Redefined \smno
+%
+\immediate\write10%
+{PMX, a Preprocessor for MusiXTeX, Version\space\pmxversion b\space<\pmxdate>}%
+% Check for MusiXTeX version. TeX generates an error, not an ordinary
+% \end, because the \ifnum is not completed.
+\ifnum\mxvernumber<121\immediate\write16{ }
+\immediate\write16{****************}
+\immediate\write16{! STOPPING TeX because MusiXTeX Version = \mxvernumber}
+\immediate\write16{ while PMX 2.71+ requires at least 121}
+\immediate\write16{****************}
+\immediate\write16{ }\end{document}\fi
+%
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+%
+% The next 4 lines are for Don's home use only
+%
+\font\specfnt=cmssqi8%
+\def\mtr#1{\zcharnote{#1}%
+{\specfnt\kern 1.5\internote\raise 0.3\internote\hbox to 0pt{/\hss}%
+\kern -0.7\internote\raise 1.0\internote\hbox to 0pt{/\hss}}}
+%
+\newif\ifolder%
+%
+% Older fonts had clefs at different heights. If you have the older
+% version you should uncomment the following line
+%\oldertrue%
+%
+% The next 3 lines should be in musixmad. They were omitted in
+% some early versions!
+%
+%\newcount\s@Nx
+%\newcount\s@Nxi
+%\newcount\s@Nxii
+%
+% Special clef change stuff
+%
+\newcount\reflect
+\def\pmxnewclefs{\m@loop\s@l@ctclefs\o@c\a@c\repeat}%
+\newtoks\pmxclefsym
+\def\pmxclef#1#2{\ifnum#1=0\def\pmxclefsym{\smalltrebleclef}\else\ifnum#1<5%
+\def\pmxclefsym{\smallaltoclef}\else\ifnum#1=7\def\pmxclefsym{\smalltrebleclef}%
+\else\def\pmxclefsym{\smallbassclef}\fi\fi\fi%
+% Adjust height here for older clef default heights.
+\reflect#2\ifolder\ifnum#1=0\advance\reflect-2\else\ifnum#1<5\advance\reflect-4%
+\else\advance\reflect-6\fi\fi\fi%
+\lcharnote{0}{\raise\reflect\internote\hbox{\pmxclefsym}}}%
+%
+% Grace note stuff, incl. macro to reset size after going tiny.
+% This may assume that \musicsize is 20pt but some staves may have
+% \setsize#1\smallvalue
+%
+\def\resetsize{\ifdim\internote<.95\Internote%
+\let\musictinyfont\musicthirteen\smallnotesize\else\normalnotesize\fi}%
+\def\settiny{\ifdim\internote<.95\Internote\let\musictinyfont\musiceleven\fi%
+\tinynotesize}%
+\def\grace#1#2#3{\off{-#1pt}\settiny\stdstemfalse#2\zcu{#3}%
+\resetsize\off{#1pt}}%
+\def\shlft#1#2{\off{-#1pt}\settiny\stdstemfalse#2\resetsize\off{#1pt}}%
+\def\gaft#1#2{\bsk\roffset{#1}{{\settiny\stdstemfalse#2\resetsize}}\sk}%
+%
+% The following keep octaviation out of brackets.
+% 10/20/01: Are these used anywhere???
+%
+%\def\Gshl#1{\off{-#1pt}\tinynotesize}%
+%\def\Gshr#1{\normalnotesize\off{#1pt}}%
+\def\segnoo#1#2{\zcharnote{#2}{\kern#1pt\musicsmallfont\char"56}}%
+\def\ssegno#1{\zcharnote{#1}{\musictinyfont\char86}}%
+%
+% Some ornaments...
+%
+% Font for x-trill symbol. Could make this more general.
+%
+\def\xtr#1{\zcharnote{#1}{\xtrfont\char"02}}
+%
+% Plus-trill
+%
+\def\ptr#1{\ptrx{#1}{1.8}{.35}}
+\def\ptrx#1#2#3{\zcharnote{#1}{\raise.9\internote\hbox{%
+\pcil\h@lf\qn@width\kern\pcil%
+\razclef#2\internote\pcil#3\internote\kern-\h@lf\razclef\vrule height \h@lf\pcil
+depth \h@lf\pcil width \razclef\kern-\h@lf\razclef\kern-\h@lf\pcil\kern-.1pt
+\vrule height \h@lf\razclef depth \h@lf\razclef width \pcil}}%
+}%
+%
+% Put in a number for an xtuplet.
+%
+\def\xnum#1#2#3{\off{#1\elemskip}\zcharnote{#2}{\smalltype\it #3}%
+\off{-#1\elemskip}}
+%
+% accidental skips
+%
+\def\ast#1{\off{#1\elemskip}}
+%
+% Check for and read a .mod file; open the .ask file
+%
+\newread\pmxmod
+\def\readmod#1{\openin\pmxmod #1.mod\relax
+\ifeof\pmxmod\else\input #1.mod\fi\closein\pmxmod}
+%
+% Macros for optional small notes, usually w/ down stems. Offset to center
+% them below a large note. I used these in Matteis.
+%
+%\def\smno#1{\roffset{.17}{\tinynotesize#1\normalnotesize}}%
+%
+% Redefined, due to some mysterious problem with \roffset
+%
+\def\smno#1{\off{.17\qn@width}\tinynotesize#1\normalnotesize\off{-.17\qn@width}}%
+\def\pmno#1{\roffset{.08}{\smallnotesize#1\normalnotesize}}%
+\def\smq#1{\smno{\zql{#1}}}\def\smc#1{\smno{\zcl{#1}}}%
+\def\smh#1{\smno{\zhl{#1}}}%
+%
+% Single-digit meter symbol
+%
+\newbox\workbox%
+\def\meterN#1{\setbox\workbox=\vbox{\hbox{\ \meterfont #1}}%
+\vbox to 8\internote{\offinterlineskip\vss\hbox to \wd\workbox{\hss
+\meterfont #1\hss}\vss }}%
+%
+% Meter symbol '3' with vertical slash
+%
+\def\meterIIIS{\kern\internote\raise\Interligne\hbox{\meterfont 3}%
+\kern -2.0\internote
+\vrule height 7\internote depth -\internote width0.3\internote
+\kern 1.7\internote}%
+%
+% Fractional meter with a slash
+%
+\def\meterfracS#1#2{%
+\kern\internote\raise2\Interligne\rlap{\meterfont #1}%\lower2\Interligne%
+\hbox{\meterfont #2}%
+\kern -1.85\internote
+\vrule height 8\internote width0.3\internote
+\kern 1.55\internote}%
+%
+% *Symbols* for use in figures
+%
+\def\sharpfig{\musixchar92}
+\def\flatfig{\musixchar90}
+\def\natfig{\musixchar94}
+\def\fsmsh{\llap{\musixchar92}}
+\def\fsmfl{\llap{\musixchar90}}
+\def\fsmna{\llap{\musixchar94}}
+%
+% Macros for editorial accidentals
+%
+\def\qedit#1{\roffset{.2}{\zcharnote{#1}{\normtype\rm?}}}
+\def\qsharp#1{%
+\loffset{.2}{\zcharnote{#1}{\sharpfig\lower1.3\internote\hbox{\normtype\rm?}}}}
+\def\qflat#1{%
+\loffset{.2}{\zcharnote{#1}{\flatfig\lower.8\internote\hbox{\normtype\rm?}}}}
+\def\qnat#1{%
+\loffset{.2}{\zcharnote{#1}{\natfig\lower1.2\internote\hbox{\normtype\rm?}}}}
+\def\esharp#1{\roffset{.3}{\zcharnote{#1}{\sharpfig}}}
+\def\eflat#1{\roffset{.3}{\zcharnote{#1}{\flatfig}}}
+\def\enat#1{\roffset{.3}{\zcharnote{#1}{\natfig}}}
+%
+% Cautionary big accidentals
+%
+\def\bigcna{\cna} \def\bigcfl{\cfl} \def\bigcsh{\csh}
+%
+% Some fonts...for some reason my system can't do cmbx12 scaled \magstep4
+% 9/17/97 Must redo the following 3 lines to permit EC/DC fonts
+%
+%\font\BIGfont=cmbx10 scaled\magstep4\font\Bigfont=cmbx10 scaled\magstep2
+%\font\tempo=\fontid bx12%
+%\font\dyn=\fontid bx10%
+\iflongDCfontnames
+\font\xtrfont=cmsy10
+\font\tempo=\fontid bx1200
+\font\dyn=\fontid bx1000
+\else\iflongECfontnames
+\font\xtrfont=cmsy10
+\font\tempo=\fontid bx1200
+\font\dyn=\fontid bx1000
+\else
+%\font\xtrfont=cmsy10
+%\font\BIGfont=cmbx10 scaled\magstep4
+%\font\Bigfont=cmbx10 scaled\magstep2
+\font\xtrfont=cmsy10
+% Definitions deleted per Bob Tennent's request 150726
+%\font\BIGfont=\fontid bx10 scaled\magstep4
+%\font\Bigfont=\fontid bx10 scaled\magstep2
+\font\tempo=\fontid bx12%
+\font\dyn=\fontid bx10%
+\fi\fi
+%
+% Continuation figure
+%
+\def\Cont#1#2{\advance\figdrop by #1\lower\figdrop\internote%
+\hbox to \z@{\kern -0.3\noteskip%
+\vbox{\hrule height 1.4\lthick width #2\noteskip}\hss}%
+\advance\figdrop by -#1}%
+\def\Cott#1#2{\advance\figdtwo by #1\lower\figdtwo\internote%
+\hbox to \z@{\kern -0.3\noteskip%
+\vbox{\hrule height 1.4\lthick width #2\noteskip}\hss}%
+\advance\figdtwo by -#1}%
+
+%
+% Tiny C clef on line #1: Will need to mod with new fonts 11-4-96
+%
+\newdimen\razclef\newdimen\symwid%
+\newdimen\pcil %\ifnum\musicsize=20\pcil4pt\else\pcil3.25pt\fi%
+\def\preclef#1#2{%
+\ifnum#2=20\pcil4pt\else\pcil3.25pt\fi%
+\symwid3.692\pcil%
+\hbox{\vbox{\hrule height \lthick width \symwid}%
+\kern-\symwid\raise\pcil\vbox{\hrule height \lthick width \symwid}%
+\kern-\symwid\raise2\pcil\vbox{\hrule height \lthick width \symwid}%
+\kern-\symwid\raise3\pcil\vbox{\hrule height \lthick width \symwid}%
+\kern-\symwid\raise4\pcil\vbox{\hrule height \lthick width \symwid}%
+\razclef-2.43\pcil\advance\razclef#1\pcil%
+\kern-\symwid\raise\razclef\hbox to \symwid{\hss\smallaltoclef\hss}%
+}}%
+\def\namewpc#1#2#3#4#5{\raise#4pt\hbox to \parindent{\raise#5pt\hbox{#1}%
+\hfill\preclef{#2}{#3}}}
+%
+% Stuff for figure placements
+%
+% 9/17/97 redo font names
+%
+%\font\figfont=cmr10
+\def\figfont{\normtype\rm}%
+%
+\newcount\figdrop
+\newcount\figdtwo
+%\figdrop=6
+\newcount\sysno
+\global\sysno=0\relax%
+\def\Figu#1#2{\off{.9pt}\advance\figdrop by #1\lower\figdrop\internote%
+\hbox to \z@{\figfont#2\hss}\off{-.9pt}\advance\figdrop by -#1}%
+%
+% Special Figure macro for 2-bass parts
+%
+%\def\Figt#1#2{\zcharnote{#1}{\kern.9pt\figfont#2}}%
+\def\Figt#1#2{\off{.9pt}\advance\figdtwo by #1\lower\figdtwo\internote%
+\hbox to \z@{\figfont#2\hss}\off{-.9pt}\advance\figdtwo by -#1}%
+%
+% Bar numbering
+%
+\systemnumbers%
+\def\raisebarno{3.5\internote}%
+\def\shiftbarno{3.5\internote}%
+\newdimen\rbnbl\newdimen\sbnbl\newdimen\xrbn\newdimen\xsbn%
+\newdimen\rbndim\newdimen\sbndim%
+\global\rbndim\raisebarno\global\sbndim\shiftbarno%
+\global\def\raisebarno{\rbndim}\global\def\shiftbarno{\sbndim}%
+\global\rbnbl\rbndim\global\sbnbl\sbndim\global\xrbn0pt\global\xsbn0pt%
+%
+% The following 2 macros are messy, but they retain \raisebarno as a macro and
+% retain original definition in musixtex for the end-of-line utility.
+%
+\def\bnrs#1#2{%
+%
+% If here, baseline values will not change. On exit, \rbndim will
+% be the temporary value, \xrbn will be the increment (must save to check later;
+% if <>0 then baseline hasn't changed!), and \rbnbl is still the baseline value.
+%
+ \global\xrbn#1\internote\global\advance\rbndim\xrbn%
+ \global\xsbn#2\internote\global\advance\sbndim\xsbn%
+}%
+\def\writebarno{%
+ \ifnum\barno>1%
+ \boxit{\smalltype\bf\the\barno\barnoadd}%
+ \ifdim\raisebarno=\rbnbl%
+ \empty%
+ \else%
+ \ifdim\xrbn=0pt%
+ \global\rbnbl\raisebarno%
+ \global\def\raisebarno{\rbndim}%
+ \else%
+ \global\xrbn0pt%
+ \fi%
+ \global\rbndim\rbnbl%
+ \fi%
+ \ifdim\shiftbarno=\sbnbl%
+ \empty%
+ \else%
+ \ifdim\xsbn=0pt%
+ \global\sbnbl\shiftbarno%
+ \global\def\shiftbarno{\sbndim}%
+ \else%
+ \global\xsbn0pt%
+ \fi%
+ \global\sbndim\sbnbl%
+ \fi%
+ \fi%
+}%
+%
+% Make small accidentals the default
+%
+\smallaccid%
+%
+% Put in a new time signature. Modified 151226
+%
+\def\newtimes#1%
+{\ifnum#1=0%
+ \n@wbar\writ@newclefs\advance\barsinlin@\@ne%
+%
+% Added 151216
+%
+ \wbarno@x\Writ@newsigns%
+ \advance\n@skip0.3\afterruleskip\widthtyp@\@ne\t@rmskip%
+ \Writ@meters\lastbarpos\lin@pos\addspace\afterruleskip%
+\else\ifnum#1=1%
+ \alaligne
+\else
+ \wbarno@x%
+%
+% Added 151226
+%
+\addspace\afterruleskip
+%
+% -0.7 gave too much space before meter.
+%
+% \advance\n@skip-0.7\afterruleskip\widthtyp@\@ne\t@rmskip%
+ \advance\n@skip-\afterruleskip\widthtyp@\@ne\t@rmskip%
+ \Writ@meters\addspace\afterruleskip%
+\fi\fi}%
+%
+% changecontext with no line break
+%
+\def\xchangecontext{\n@wbar\writ@newclefs
+ \wbarno@x\Writ@newsigns\Writ@meters\addspace\afterruleskip}%
+%
+% changecontext with forced line break and no barline
+%
+\def\zachangecontext{\advance\n@skip\beforeruleskip \widthtyp@\@ne \t@rmskip
+ \zn@wbar \writ@newclefs \advance\barsinlin@\@ne
+ \Writ@newsigns\z@suspend\contpiece }
+%
+% Dotted rests.
+%
+%\def\hsp{\pt7\hs}
+%\def\hspp{\ppt7\hs}
+%\def\qsp{\pt5\qs}\def\dsp{\pt5\ds}\def\qpp{\pt5\qp}
+%\def\qspp{\ppt5\qs}\def\dspp{\ppt5\ds}\def\qppp{\ppt5\qp}
+%\def\pausep{\off{.33\qn@width}\pt5\off{-.33\qn@width}\pause}
+%\def\pausep{\wholeshift{\pt5}\pause}
+\def\hpausepp{\wholeshift{\ppt5}\hpause}
+\def\pausepp{\wholeshift{\ppt5}\pause}
+%
+% Redefine headline to lower pagenumber. The original defn:
+% \def\makeheadline{\vbox to\z@{\vskip-22.5\p@
+% \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}
+%
+\def\makeheadline{\vbox to\z@{\vskip-8\p@
+ \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}
+%
+% Dot at arbitrary height above a top line of staff
+%
+%\def\mdot#1{\zcharnote8{\kern-5.3pt\raise{#1}\internote\hbox{\musixchar0}}}
+%
+% Titles
+%
+%\def\titles#1#2#3#4#5#6#7{\kern-\lin@pos%
+%\kern-3.2\Interligne\kern-\parindent\kern-\afterruleskip%
+%\kern-\sign@skip%
+%\vbox{\vskip#1\Interligne
+%\ifx\relax#2\relax\else\leftline{\Bigtype #2}\fi\vskip#3\Interligne%
+%\ifx\relax#4\relax\else\centerline{\BIGtype #4}\fi\vskip#5\Interligne%
+%\ifx\relax#6\relax\else\rightline{\Bigtype #6}\fi\vskip#7\Interligne}}%
+%
+% New def'n per Dirk Laurie to allow multiple lines.
+%
+\ifx\documentclass\undefined
+\def\centerlines#1{{\def\\{\hss\egroup\medskip\par\line\bgroup\hss}%
+ \line\bgroup\hss#1\hss\egroup}}
+\def\leftlines#1{{\def\\{\hss\egroup\smallskip\par\line\bgroup}%
+ \line\bgroup#1\hss\egroup}}
+\def\rightlines#1{{\def\\{\egroup\smallskip\par\line\bgroup\hss}%
+ \line\bgroup\hss#1\egroup}}
+\else
+\def\centerlines#1{{\centering#1\\}}
+\def\leftlines#1{{\raggedright#1\\}}
+\def\rightlines#1{{\raggedleft#1\\}}
+\fi
+%\def\centerline#1{{\def\\{\hss\egroup\medskip\par\line\bgroup\hss}%
+% \line\bgroup\hss#1\hss\egroup}}
+%\def\leftline#1{{\def\\{\hss\egroup\smallskip\par\line\bgroup}%
+% \line\bgroup#1\hss\egroup}}
+%\def\rightline#1{{\def\\{\egroup\smallskip\par\line\bgroup\hss}%
+% \line\bgroup\hss#1\egroup}}
+\def\titles#1#2#3#4#5#6#7{\kern-\lin@pos%
+\kern-3.2\Interligne\kern-\parindent\kern-\afterruleskip%
+\kern-\sign@skip%
+\vbox{\vskip#1\Interligne
+% Next 3 lines replaced at Bob Tennent's request 150726
+%\ifx\relax#2\relax\else{\Bigtype\leftlines{#2}}\fi\vskip#3\Interligne%
+%\ifx\relax#4\relax\else{\BIGtype\centerlines{#4}}\fi\vskip#5\Interligne%
+%\ifx\relax#6\relax\else{\Bigtype\rightlines{#6}}\fi\vskip#7\Interligne}}%
+\ifx\relax#2\relax\else{\bigtype\leftlines{#2}}\fi\vskip#3\Interligne%
+\ifx\relax#4\relax\else{\BIgtype\centerlines{#4}}\fi\vskip#5\Interligne%
+\ifx\relax#6\relax\else{\bigtype\rightlines{#6}}\fi\vskip#7\Interligne}}%
+%
+% Slashes on stems
+%
+\def\usoff#1{%
+% Set \pcil to (stem length)-9\Internote
+ \ifnum#1>10
+ \pcil-3.8\Internote
+ \else
+ \pcil#1\Internote
+ \ifnum#1>3
+ \pcil-.38\pcil\advance\pcil-.5\Internote
+ \ifnum#1>7
+ \advance\pcil.38\Internote
+ \fi
+ \else
+ \ifnum#1<-2
+ \pcil-\pcil\advance\pcil-5\Internote
+ \else
+ \pcil-2\Internote
+ \fi
+ \fi
+ \fi
+ \advance\pcil#1\Internote
+}%
+%
+\def\us#1{\usoff{#1}%
+ \raise\pcil\hbox{\loffset{.5}{\ibu009}\roffset{.5}{\tbu0}}}%
+\def\ls#1{\reflect-#1\advance\reflect8 %
+\usoff{\reflect}\advance\pcil-7\Internote%
+ \lower\pcil\hbox{\loffset{.5}{\ibl009}\roffset{.5}{\tbl0}}}%
+%
+% Thinner slashes, better coding
+%
+\newdimen\pmxtop\def\aslash#1#2#3{%
+%
+% #1 = note level relative to bottom line. #2 = 0/1 for down/up stem
+% #3 = 0/1 for down/up slash, For downstem, reflect, do as up, then unreflect.
+%
+\ifcase#3\def\slchar{\char248}\or\def\slchar{\char184}\fi%
+\ifcase#2\pmxtop-#1\internote\advance\pmxtop8\internote\or\pmxtop#1\internote%
+\fi\advance\pmxtop4.66\interbeam\ifdim\pmxtop>11\internote\uptop{11}\uptop{12}%
+\uptop{13}\uptop{14}\uptop{15}\uptop{16}\fi%
+\ifdim\pmxtop<4\internote\pmxtop4\internote\fi%
+%
+% \pmxtop now top of stem for upstem. Unreflect if downstem
+%
+\ifcase#2\pmxtop-\pmxtop\advance\pmxtop8\internote\ifcase#3%
+\advance\pmxtop2.5\internote\or\advance\pmxtop.9\internote\fi%
+\ccharnote0{\raise\pmxtop\hbox{\musictinyfont\slchar}}%
+\or\ifcase#3\advance\pmxtop-.9\internote\or\advance\pmxtop-2.5\internote\fi%
+\roff{\ccharnote0{\raise\pmxtop\hbox{\musictinyfont\slchar}}}\fi}%
+\def\uptop#1{\ifdim\pmxtop>#1\internote\advance\pmxtop-.25\interbeam\fi}%
+%
+% Signature change at end of line
+%
+\def\sigatend#1#2{\setdoublebar\xbar\hardspace{-#2pt}\generalsignature{#1}%
+\zchangecontext\hardspace{-#2pt}\advance\barno-1\let\barrul@\empty}%
+%
+% Macros for beams
+%
+\def\rbbu#1{\roff{\tbbu{#1}}}
+\def\rbbbu#1{\roff{\tbbbu{#1}}}
+\def\rbbbbu#1{\roff{\tbbbbu{#1}}}
+\def\rbbl#1{\roff{\tbbl{#1}}}
+\def\rbbbl#1{\roff{\tbbbl{#1}}}
+\def\rbbbbl#1{\roff{\tbbbbl{#1}}}
+%
+% Stuff for second voice per staff
+%
+\def\nextvoice{%
+\@ndstaff\reflect\noport@@\advance\noport@@-1\beginstaff\noport@@\reflect}%
+%
+% Macros for moving slur starts and stops
+%
+\def\isu#1#2#3{\roffset{#3}{\isluru{#1}{#2}}}%
+\def\isd#1#2#3{\roffset{#3}{\islurd{#1}{#2}}}%
+\def\ts#1#2#3{\roffset{#3}{\tslur{#1}{#2}}}%
+%
+% Macro to replace old \tslur with special postscript slur endings
+%
+\def\psforts#1{\let\tst\tslur\def\tslur##1##2{%
+\ifnum#1=0\tst{##1}{##2}\else%
+\ifnum#1=1\tfslur{##1}{##2}\else%
+\ifnum#1<4\tst{##1}{##2}\else%
+\ifnum#1=4\thslur{##1}{##2}\else%
+\ifnum#1=5\tHslur{##1}{##2}\else%
+\tHHslur{##1}{##2}\fi\fi\fi\fi\fi\let\tslur\tst}}%
+%
+% Macros to replace slurs with ties
+%
+\def\tieforisu{\let\ist\isluru%
+\def\isluru##1##2{\itieu{##1}{##2}\let\isluru\ist}}%
+\def\tieforisd{\let\ist\islurd%
+\def\islurd##1##2{\itied{##1}{##2}\let\islurd\ist}}%
+\def\tieforts{\let\ist\tslur%
+\def\tslur##1##2{\ttie{##1}\zcharnote{##2}{~}\let\tslur\ist}}%
+%
+% Replacement trill macros, to avoid overfull boxes on 1st pass
+%
+\let\savtr\trille\let\savTr\Trille%
+\def\trille#1#2{\ifeof\inmux\else\savtr{#1}{#2}\fi}%
+\def\Trille#1#2{\ifeof\inmux\else\savTr{#1}{#2}\fi}%
+%
+% Mordent as \rpar. If dotted, must move dot to right.
+%
+\def\lpn#1{\loffset{.3}{\lpar{#1}}}% '('
+\def\rpn#1{\roffset{.3}{\rpar{#1}}}% Beam or not, no dot [ ')' only ]
+\def\clm#1#2{\mdot{#1}{#2}\cl{#2}}% Non-beam, dot [ '.' + ')' + note ]
+\def\cum#1#2{\mdot{#1}{#2}\cu{#2}}%
+\def\qlm#1#2{\mdot{#1}{#2}\ql{#2}}%
+\def\qum#1#2{\mdot{#1}{#2}\qu{#2}}%
+\def\hlm#1#2{\mdot{#1}{#2}\hl{#2}}%
+\def\hum#1#2{\mdot{#1}{#2}\hu{#2}}%
+\def\qbm#1#2#3{\mdot{#2}{#3}\qb{#1}{#3}}% Beamed & dotted
+\def\mdot#1#2{\roffset{.32}{\pt{#1}}\roffset{.24}{\rpar{#2}}}%
+\def\lpnu#1{\smallnotesize\loffset{.3}{\zcharnote{#1}%
+{\raise1pt\hbox{\musixchar3}}}\normalnotesize}%
+\def\lpnd#1{\smallnotesize\loffset{.3}{\zcharnote{#1}%
+{\lower1pt\hbox{\musixchar3}}}\normalnotesize}%
+\def\rpnu#1{\smallnotesize\roffset{.6}{\zcharnote{#1}%
+{\raise1pt\hbox{\musixchar4}}}\normalnotesize}%
+\def\rpnd#1{\smallnotesize\roffset{.6}{\zcharnote{#1}%
+{\lower1pt\hbox{\musixchar4}}}\normalnotesize}%
+%
+% For use with mid-bar signature changes, to permit using \ast machinery
+%
+\def\rdoff{\let\toff\off\let\off\addspace}%
+%
+% For raising arpeggios by .5/internote
+%
+\def\raisearp#1#2{\zcharnote{#1}{%
+ \raise.5\internote\hbox{%
+ \uplap{\leaders\hbox{\musixchar70}\vskip#2\Interligne}}}}
+%
+% New Movement Macro
+%
+%\def\newmovement#1#2{\let\holdstop\stoppiece\let\holdcont\contpiece%
+\def\newmovement#1#2#3{\let\holdstop\stoppiece\let\holdcont\contpiece%
+\ifcase#2\def\endset{\setdoubleBAR}\or\def\endset{\setdoublebar}\or%
+%\def\endset{\setrightrepeat}\or\def\endset{\empty}\fi%
+\def\endset{\setrightrepeat}\or\def\endset{\empty}%
+ \or\def\endset{\empty}\fi%
+ \def\stoppiece{\endset%
+%
+%+++
+\ifnum#2=4\zstoppiece\else%
+%+++
+%
+\holdstop%
+%
+%+++
+\fi%
+%+++
+%
+\vskip#1\internote%
+\let\stoppiece\holdstop}%
+% \def\contpiece{
+ \def\contpiece{\def\nbinstruments{#3}% <-- assignment inserted here
+%
+% Added 120904 per Rainer's suggestion to fix problem with M-Tx at m-break.
+%
+\ifx\resetlyrics\undefined\else\resetlyrics\fi%
+%
+\startpiece\addspace\afterruleskip\let\contpiece\holdcont}%
+}%
+%
+% Redefinitions for moving dots vertically by x\interligne and
+% horizontally by y headwidths. Should work for all kinds of dotted notes.
+% Usage: \def\C@Point#1#2{\PMXpt{.0}{-.2}} (x and y hardwired by PMX)
+%
+\global\let\C@Psave\C@Point%
+\def\PMXpt#1#2#3{\ifodd\n@i\else\raise\internote\fi%
+\hbox{\raise#1\internote\hbox{\kern#2\qn@width\musixchar#3\kernm#2\qn@width}}%
+\global\let\C@Point\C@Psave}%
+%
+% Shifted, pointed chord notes (Missing in musixtex.tex ???)
+%
+\def\lhp#1{\loff{\zhp{#1}}}
+\def\rhp#1{\roff{\zhp{#1}}}
+\def\lqp#1{\loff{\zqp{#1}}}
+\def\rqp#1{\roff{\zqp{#1}}}
+\def\rhpp#1{\roff{\zhpp{#1}}}
+\def\lhpp#1{\loff{\zhpp{#1}}}
+\def\rqpp#1{\roff{\zqpp{#1}}}
+\def\lqpp#1{\loff{\zqpp{#1}}}
+%
+% Redefine to include \sk !!!
+%
+\def\liftpause#1{\C@ps\@l@v@n\si@{#1}\sk}
+%\def\liftPAuse#1{\C@ps{58}0{#1}\sk}
+% 1/19/03 Replaced old def'n; added \liftPAusep
+\def\liftPAuse#1{\reflect#1\multiply\reflect2%
+\zcharnote{0}{\raise\reflect\internote\hbox{\kern.4\qn@width\musixchar58}}\sk}%
+\def\liftPAusep#1{\reflect#1\multiply\reflect2%
+\zcharnote{0}{\raise\reflect\internote\hbox{\kern.4\qn@width\musixchar58%
+\kern-\qn@width\pt4}}\sk}%
+\def\lifthpause#1{\C@ps\t@n\f@ur{#1}\sk}%
+\def\liftpausep#1{\reflect#1\advance\reflect2%
+\wholeshift{\raise\reflect\Interligne\hbox{\pt0}}\liftpause{#1}}%
+\def\liftpausepp#1{\reflect#1\advance\reflect2%
+\wholeshift{\raise\reflect\Interligne\hbox{\ppt0}}\liftpause{#1}}%
+\def\lifthpausep#1{\reflect#1\advance\reflect2%
+\wholeshift{\raise\reflect\Interligne\hbox{\pt0}}\lifthpause{#1}}%
+\def\lifthpausepp#1{\reflect#1\advance\reflect2%
+\wholeshift{\raise\reflect\Interligne\hbox{\ppt0}}\lifthpause{#1}}%
+%
+% Text up to bar line. Use before last note, assume 1 noteskip to bar.
+%
+\def\bartext#1#2{\sk\loffset{.3}{\zcharnote{#1}{\llap{#2}}}\bsk}
+%
+% Macro used before movement break to change # of instruments.
+% 120818 Set \nbinstruments in \newmovement; probably don't need this any more.
+%
+\def\newnoi#1{\let\atnb\atnextbar\def\atnextbar{\atnb\def\nbinstruments{#1}}}%
+%
+% Set up top page numbers with optional centered heading
+%
+% #2=0 if odds on rt, else 1. #1 = initial page no. #3=name
+\def\toppageno#1#2#3{\pageno#1%
+\headline{\reflect#2\advance\reflect\pageno%
+\ifodd\reflect\rhead{#3}\else\lhead{#3}\fi}%
+\def\rhead##1{\tempo\ifnum\pageno>1\hfil{##1}\fi\hfil\llap\folio}%
+\def\lhead##1{\tempo\rlap\folio\hfil{##1}\hfil}}%
+%
+% Temporary date and file name. To use it:
+%
+% (1) Define a script to create a file tempdate.dat. The file will
+% contain a single line of text to be centered at the bottom of
+% each page. I use a 4DOS alias (makedate) that inserts current date
+% filename, and filedate as follows:
+%
+% echo \smalltype\rm Printed %_date from file %1.pmx %@filedate[c:\pmx\%1.pmx],
+% %@filetime[c:\pmx\%1.pmx] >tempdate.dat
+%
+% (2) Include a call to makedate in the batch file you use to run pmx+tex.
+% Be sure tempdate.dat is written to a directory accessible to TeX.
+%
+% (3) Include in-line tex \\tempdate\ at the top of the pmx file.
+%
+\def\tempdate{\def\makefootline{\baselineskip2pt\line{\the\footline}}
+\footline{\hss\input tempdate.dat\hss}}
+%
+\def\pnotes#1{\vnotes#1\elemskip}%
+%
+% Hairpins and other dynamic stuff
+%
+\newdimen\hpi\newdimen\hpii\newdimen\hpiii\newdimen\hpiv%
+\newdimen\hpv\newdimen\hpvi\newdimen\hpvii\newdimen\hpviii%
+\newdimen\hpix\newdimen\hpx\newdimen\hpxi\newdimen\hpxii\newdimen\hptmp%
+%
+\def\hpstrt#1#2{\getcurpos\advance\y@v#2\qn@width\advance\y@v\txt@ff%
+\global\csname hp\romannumeral#1\endcsname=\y@v}%
+%
+\def\hpendall#1#2#3#4{\getcurpos%
+\advance\y@v-\csname hp\romannumeral#1\endcsname%
+\zcharnote{#2}{\kernm\y@v\advance\y@v\txt@ff\advance\y@v#3\qn@width#4{\y@v}}}%
+%
+\def\hpcend#1#2#3{\hpendall{#1}{#2}{#3}\crescendo}%
+\def\hpdend#1#2#3{\hpendall{#1}{#2}{#3}\decrescendo}%
+%
+\def\pmxdyn#1#2#3{\ccharnote{#1}{\kern#2\qn@width#3}}
+\def\txtdyn#1#2#3{\zcharnote{#1}{\kern#2\qn@width#3}}
+%
+\def\sfz{{\ppff s\f@kern\f@kern f\f@kern z}}%
+%
+% Dotted breve and rest
+%
+\def\brevep{\def\w@h{\musixchar32\roffset\qu@rt{\C@Point\z@\raise}}%
+ \y@v\wn@width \g@w}
+\def\PAusep{\loffset{.5}{\pt5}\PAuse}%
+%
+% Vertical equalization macros
+%
+%\newskip\pssav\pssav\parskip%
+%
+% Remove this from here in 2.352, since it caused some incompatibilities.
+% (Let PMX write it into *.tex when needed).
+%
+%\parskip 0pt plus 12\Interligne minus 99\Interligne%
+\def\upamt{27}\def\dnamt{-20}%
+%\def\upstrut{\znotes\nextinstrument\nextinstrument\zcharnote{\upamt}{X}\en}%
+%
+% Let PMX write the def'n of \upstrut since I couldn't get the loop to work
+%
+\def\dnstrut{\znotes\zcharnote{\dnamt}{~}\en}%
+%
+% Call the following inline type1 anywhere in first line of equalization.
+%
+\def\starteq{\gdef\everystaff{\upstrut\dnstrut}\dnstrut}%
+%
+% And put this as type 1 in the next-to-last line of equalization!
+%
+%\def\endeq{\gdef\everystaff{\upstrut\global\parskip\pssav%
+\def\endeq{\gdef\everystaff{\upstrut%
+\gdef\everystaff{\empty}}}%
+%
+\gdef\spread#1{\global\let\cont\contpiece%
+\gdef\contpiece{\vskip#1\internote\cont\global\let\contpiece\cont}}%
+%
+% The following avoid zapping \writezbarno in several special situations
+%
+\def\PMXbarnotrue{\let\z@sw\empty}%
+\def\PMXbarnofalse{\let\z@sw\@ne}%
+%
+% Centered rests
+%
+\def\pausc{\lrlap{\pause\off{\qn@width}}}%
+\def\PAusc{\lrlap{\PAuse\off{\txt@ff}}}%
+%\def\liftpausc#1{\raise#1\Interligne\pausc}%
+\def\liftpausc#1{\raise#1\Interligne\lrlap{\
+\raise6\internote\hbox{\musixchar11}\off{1.2\qn@width}}}%
+\def\liftPAusc#1{\raise#1\Interligne\PAusc}%
+%
+% CenterBar and mbrest modified 2/01 to account for simick mods in
+% musixtex 1.01
+%
+\def\CenterBar#1#2#3{%
+\y@ii\lin@pos\advance\y@ii-\lastbarpos%
+\ifx\volta@startcor\undefined \else\advance\y@ii\cut@v\fi%
+\advance\y@ii-#2pt\advance\y@ii-#3pt\kern-#3pt%
+\kern-\h@lf\y@ii\lrlap{#1}\kern\h@lf\y@ii\kern#3pt}%
+%
+% mbrest mods 151226. Changed # of args in mbrest from 3 to 1;
+% changed pmx271 accordingly
+% 160103 back to 3 args
+%
+\def\mbgap{\qsk\hqsk}%
+\def\mbrest#1#2#3{%
+\CenterBar{\ccn{9}{\meterfont#1}}{#2}{#3}%
+\CenterBar{%
+\ifcase #1%
+\relax%
+\or\cpause% 1
+\or\cPAuse% 2
+\or\cPAuse\mbgap\cpause% 3
+\or\cPAUSe% 4
+\or\cPAUSe\mbgap\cpause% 5
+\or\cPAUSe\mbgap\cPAuse% 6
+\or\cPAUSe\mbgap\cPAuse\mbgap\cpause% 7
+\or\cPAUSe\mbgap\cPAUSe% 8
+\or\cPAUSe\mbgap\cPAUSe\mbgap\cpause% 9
+\else
+\def\vertpart{\hbox{\vrule width.6pt height1.5\internote depth1.5\internote}}%
+\raise4\internote\hbox{\vertpart%
+\vrule width0.7\y@ii height.5\internote depth.5\internote%
+\vertpart}%
+\fi}{#2}{#3}}%
+%
+% 151226 Redefine \xchangecontext to add in \afterruleskip
+%
+\def\xchangecontext{\n@wbar\writ@newclefs
+ \wbarno@x\Writ@newsigns\Writ@meters\lastbarpos\lin@pos\addspace\afterruleskip}%
+%
+% 151227 Define \ccoda so it positions like any other ornament
+%
+\def\ccoda{\n@iv85\@Char}%
+\def\pcaesura#1#2{\raise#1\internote\hbox{%
+\rlap{\kern.5\noteskip\kern#2\qn@width\musixchar79}}}%
+\def\pbreath#1#2{\zcharnote6{\raise#1\internote\hbox{%
+\rlap{\kern.5\noteskip\kern#2\qn@width\BIGfont'}}}}%
+%
+% Macro to set up for blank bar line
+%
+%\def\setzalaligne{\let\alat\alaligne%
+% \def\alaligne{\zalaligne\let\alaligne\alat}}%
+\def\setzalaligne{\let\zalat\stoppiece%
+ \def\stoppiece{\zstoppiece\let\stoppiece\zalat}}%
+%
+% Slanted line arpeggio or coule ornament
+%
+\def\arpg#1#2{%
+\roffset{#2}{\zcharnote0{\raise#1\internote\hbox{\varline0{6pt}{20}}}}}%
+\def\arpgu#1{\arpg{#1}{.8}}%
+%
+\catcode`\@=\catcodeat
+\message{Done loading PMX \pmxversion}