summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pmx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-04-07 17:20:40 +0000
committerKarl Berry <karl@freefriends.org>2016-04-07 17:20:40 +0000
commit59aa260e9d95e9aa3ad62a8c0c8d14832ea282db (patch)
treeaa3dcb65010ea8737729067f0b1c45a34c6c7add /Master/texmf-dist/tex/generic/pmx
parentc125719633d76d136a955ef3d0ef68249dfd9f25 (diff)
pmx 2.74, pmx2pdf binary gone (20feb16)
git-svn-id: svn://tug.org/texlive/trunk@40308 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pmx')
-rw-r--r--Master/texmf-dist/tex/generic/pmx/pmx.tex158
1 files changed, 126 insertions, 32 deletions
diff --git a/Master/texmf-dist/tex/generic/pmx/pmx.tex b/Master/texmf-dist/tex/generic/pmx/pmx.tex
index 80131a498cc..3dcd94e4391 100644
--- a/Master/texmf-dist/tex/generic/pmx/pmx.tex
+++ b/Master/texmf-dist/tex/generic/pmx/pmx.tex
@@ -3,8 +3,10 @@
%% pmx.tex %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%
-\def\pmxversion{2.7}\def\pmxdate{3 April 13}
-
+\ifx\pmxversion\undefined\else\endinput\fi
+\def\pmxversion{2.74}\def\pmxdate{4 Feb 20}
+% 2.73 4 Feb 16 Fix \pmxclefsym to include \smalltreblelowoct
+% 2.73 Added \pmxlyr command.
% 2.619 At movement break, directly set \nbinstruments in \newmovement;
% probably don't need \newnoi any more.
% (2.619a) Added \resetlyrics in \newmovement.
@@ -37,9 +39,16 @@
% 1 July inserted stuff for hairpins
% 31 May 99 Redefined \smno
%
-\ifx\pmxnewclefs\undefined\else\endinput\fi
\immediate\write10%
-{PMX, a Preprocessor for MusiXTeX, Version\space\pmxversion a\space<\pmxdate>}%
+{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
%
@@ -70,7 +79,8 @@
\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%
+\else\ifnum#1=8\def\pmxclefsym{\smalltreblelowoct}%
+\else\def\pmxclefsym{\smallbassclef}\fi\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%
@@ -94,7 +104,8 @@
%
%\def\Gshl#1{\off{-#1pt}\tinynotesize}%
%\def\Gshr#1{\normalnotesize\off{#1pt}}%
-\def\segnoo#1#2{\zcharnote{#2}{\kern#1pt\musicsmallfont\char"56}}
+\def\segnoo#1#2{\zcharnote{#2}{\kern#1pt\musicsmallfont\char"56}}%
+\def\ssegno#1{\zcharnote{#1}{\musictinyfont\char86}}%
%
% Some ornaments...
%
@@ -207,8 +218,9 @@ depth \h@lf\pcil width \razclef\kern-\h@lf\razclef\kern-\h@lf\pcil\kern-.1pt
%\font\BIGfont=cmbx10 scaled\magstep4
%\font\Bigfont=cmbx10 scaled\magstep2
\font\xtrfont=cmsy10
-\font\BIGfont=\fontid bx10 scaled\magstep4
-\font\Bigfont=\fontid bx10 scaled\magstep2
+% 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
@@ -319,21 +331,25 @@ depth \h@lf\pcil width \razclef\kern-\h@lf\razclef\kern-\h@lf\pcil\kern-.1pt
%
\smallaccid%
%
-% Put in a new time signature
+% 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\addspace\afterruleskip%
+ \Writ@meters\lastbarpos\lin@pos\addspace\afterruleskip%
\else\ifnum#1=1%
\alaligne
\else
+ \wbarno@x%
%
-% Start new page
+% Added 151226
%
- \wbarno@x%
+\addspace\afterruleskip
%
% -0.7 gave too much space before meter.
%
@@ -409,9 +425,13 @@ depth \h@lf\pcil width \razclef\kern-\h@lf\razclef\kern-\h@lf\pcil\kern-.1pt
\kern-3.2\Interligne\kern-\parindent\kern-\afterruleskip%
\kern-\sign@skip%
\vbox{\vskip#1\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}}%
+% 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
%
@@ -733,31 +753,41 @@ depth \h@lf\pcil width \razclef\kern-\h@lf\razclef\kern-\h@lf\pcil\kern-.1pt
\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{%
-\ifnum #1<10\raise 9\internote\lrlap{\meterfont #1}\fi%
\ifcase #1%
\relax%
-%\or\lrlap{\pause\off{\qn@width}}%
-\or\pausc%
-%\or\lrlap{\PAuse\off{\txt@ff}}%
-\or\PAusc%
-\or\lrlap{\PAuse\qsk\pause\off{\qn@width}}%
-\or\lrlap{\PAUSe\off{0.5\txt@ff}}%
-\or\lrlap{\PAUSe\qsk\pause\off{\qn@width}}%
-\or\lrlap{\PAUSe\qsk\PAuse\off{\txt@ff}}%
-\or\lrlap{\PAUSe\qsk\PAuse\qsk\pause\off{\txt@ff}\off{\qn@width}}%
-\or\lrlap{\PAUSe\qsk\PAUSe\off{\txt@ff}}%
-\or\lrlap{\PAUSe\qsk\PAUSe\qsk\pause\off{\txt@ff}\off{\qn@width}}%
-\else\def\vertpart{\hbox{\vrule width.6pt height1.5\internote depth1.5\internote}}%
-\raise\f@ur\internote\hbox{%
-\vertpart\hbox{%
-\advance\y@ii-\cut@v\advance\y@ii-\volta@startcor\advance\y@ii-\volta@endcor%
+\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%
-\kern-0.35\y@ii\raise5\internote\lrlap{\meterfont #1}\kern0.35\y@ii}%
\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{%
@@ -776,4 +806,68 @@ depth \h@lf\pcil width \razclef\kern-\h@lf\razclef\kern-\h@lf\pcil\kern-.1pt
\roffset{#2}{\zcharnote0{\raise#1\internote\hbox{\varline0{6pt}{20}}}}}%
\def\arpgu#1{\arpg{#1}{.8}}%
%
+% \pmxlyr command, see Usage afer \endinput. Dirk Laurie 2016-01-24
+% The unrolled loops are necessary because \assignlyricshere must have
+% a raw string literal as argument.
+\def\pmxlyr#1{%
+\ifnum\noinstrum@nt=1%
+ \ifnum\noport@@=1%
+ \if@pmx@nextvoice\setlyrics{I1P1V2}{#1}\assignlyricshere{I1P1V2}%
+ \else\setlyrics{I1P1V1}{#1}\assignlyricshere{I1P1V1}\fi\fi%
+ \ifnum\noport@@=2%
+ \if@pmx@nextvoice\setlyrics{I1P2V2}{#1}\assignlyricshere{I1P2V2}%
+ \else\setlyrics{I1P2V1}{#1}\assignlyricshere{I1P2V1}\fi\fi\fi%
+\ifnum\noinstrum@nt=2%
+ \ifnum\noport@@=1%
+ \if@pmx@nextvoice\setlyrics{I2P1V2}{#1}\assignlyricshere{I2P1V2}%
+ \else\setlyrics{I2P1V1}{#1}\assignlyricshere{I2P1V1}\fi\fi%
+ \ifnum\noport@@=2%
+ \if@pmx@nextvoice\setlyrics{I2P2V2}{#1}\assignlyricshere{I2P2V2}%
+ \else\setlyrics{I2P2V1}{#1}\assignlyricshere{I2P2V1}\fi\fi\fi%
+\ifnum\noinstrum@nt=3%
+ \ifnum\noport@@=1%
+ \if@pmx@nextvoice\setlyrics{I3P1V2}{#1}\assignlyricshere{I3P1V2}%
+ \else\setlyrics{I3P1V1}{#1}\assignlyricshere{I3P1V1}\fi\fi%
+ \ifnum\noport@@=2%
+ \if@pmx@nextvoice\setlyrics{I3P2V2}{#1}\assignlyricshere{I3P2V2}%
+ \else\setlyrics{I3P2V1}{#1}\assignlyricshere{I3P2V1}\fi\fi\fi%
+\ifnum\noinstrum@nt=4%
+ \ifnum\noport@@=1%
+ \if@pmx@nextvoice\setlyrics{I4P1V2}{#1}\assignlyricshere{I4P1V2}%
+ \else\setlyrics{I4P1V1}{#1}\assignlyricshere{I4P1V1}\fi\fi%
+ \ifnum\noport@@=2%
+ \if@pmx@nextvoice\setlyrics{I4P2V2}{#1}\assignlyricshere{I4P2V2}%
+ \else\setlyrics{I4P2V1}{#1}\assignlyricshere{I4P2V1}\fi\fi\fi%
+}%
+%
+% Definition for \lyrlink&\at, used with pmxlyr strings with '~'and '@'
+%
+\def\lk{\lyrlink}%
+\def\at#1{\lyrraisehere{#1\internote}}%
+
\catcode`\@=\catcodeat
+\endinput
+
+Usage:
+ \pmxlyr{TEXT} (assigns TEXT as lyrics in the current context)
+
+In PMX, enter the command with a trailing backslash. Starting at PMX 2.73,
+"TEXT" on a music line is equivalent to \pmxlyr{TEXT}.
+
+Spaces and hyphens separate TEXT into syllables. An underscore between
+words combines syllables from different words into a single syllable.
+
+TEXT may contain any TeX macro, in particular:
+ \space Space character that does not separate syllables
+ \lyrhyphenchar Hyphen that does not separate syllables
+ {\empty} Invisible syllable (for notes that get no lyrics)
+
+\pmxlyr uses the unexpanded contents of TEXT when looking for the
+syllable splitters, e.g. \def\mylyrics{many words of poetry} followed
+by \pmxlyr{\mylyrics} will put all those words on one note.
+
+For more information on what is acceptable in TEXT, consult mxlyrdoc.pdf.
+
+Limits: Lyrics are recognized only on the first two staves of instruments
+1 to 4. Elsewhere they are ignored.
+