diff options
author | Karl Berry <karl@freefriends.org> | 2015-06-16 22:39:24 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-06-16 22:39:24 +0000 |
commit | c503311d0761d89aad2df2f14cec502d09aff82f (patch) | |
tree | e96782b037ad5b008bde0a36eaa8279802ac7911 /Master | |
parent | d8d7232f205cac9d8cda4988626b8b727ffda1e1 (diff) |
musixtex (30may15)
git-svn-id: svn://tug.org/texlive/trunk@37576 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
25 files changed, 6170 insertions, 268 deletions
diff --git a/Master/texmf-dist/doc/generic/musixtex/ChangeLog-117.txt b/Master/texmf-dist/doc/generic/musixtex/ChangeLog-117.txt new file mode 100644 index 00000000000..08bb03d9b64 --- /dev/null +++ b/Master/texmf-dist/doc/generic/musixtex/ChangeLog-117.txt @@ -0,0 +1,12 @@ +Changes from MusiXTeX 116 to 117: + +2015-05-25 + re-defined \txtfont for non-normal staff sizes + defined \tinyppff and \ppfftwelve, and re-defined \ppff to be staffsize dependent + introduced abbreviations \tqqb \tqqh \tqqqb \tqqqh + and synonyms \tqql \tqqu \tqqql \tqqqu + introduced ornaments \tr, \trt + re-defined \triolet to be consistent with musixdoc (prints \txt, not nec. 3) + introduced \cpause etc. and corrected definitions of \centerpause etc. + introduced double-dotted rests \qppp, \dspp, \qspp, etc. + diff --git a/Master/texmf-dist/doc/generic/musixtex/README b/Master/texmf-dist/doc/generic/musixtex/README index 8e9897d6a21..7d61f89ca7e 100644 --- a/Master/texmf-dist/doc/generic/musixtex/README +++ b/Master/texmf-dist/doc/generic/musixtex/README @@ -1,4 +1,4 @@ -This is MusiXTeX, version 1.16-2015-04-21. +This is MusiXTeX, version 1.17-2015-05-25. MusiXTeX is a TeX-based system for typesetting music. The main author was Daniel Taupin, who died in a climbing @@ -64,7 +64,9 @@ doc/generic/musixtex/scripts Many users, especially beginners, will find it easier to use the PMX and M-Tx pre-processors, which accept a simpler -input language than MusiXTeX itself. These pre-processor +input language than MusiXTeX itself. Another pre-processor, +autosp, simplifies input to MusiXTeX by automatically +generating note-spacing commands. These pre-processor packages may be found at CTAN under support. Additional documentation, additional add-on packages, and many examples of MusiXTeX typesetting may be found at the Werner Icking @@ -79,7 +81,8 @@ http://tug.org/mailman/listinfo/tex-music MusiXTeX may be freely copied, duplicated and used in conformance to the GNU General Public License (Version 2, -1991, see included file gpl.txt). +1991, see included file gpl.txt) or (at your option) any +later version. This distribution is maintained by Bob Tennent rdt(at)cs(dot)queensu(dot)ca. diff --git a/Master/texmf-dist/doc/generic/musixtex/examples/rests.tex b/Master/texmf-dist/doc/generic/musixtex/examples/rests.tex index 188c770f94d..075089d837d 100644 --- a/Master/texmf-dist/doc/generic/musixtex/examples/rests.tex +++ b/Master/texmf-dist/doc/generic/musixtex/examples/rests.tex @@ -1,5 +1,7 @@ % format plain musixTex musixtEx musIxtex musiCtex % (c) 1996, Werner Icking +% Multibar rests section revised 2015 for T1.17 by Bob Tennent. +% \ifx\mxversion\undefined \input musixtex \fi @@ -7,8 +9,8 @@ \hoffset-15.4mm\voffset-15.4mm \hsize210mm\advance\hsize-20mm \vsize11in\advance\vsize-20mm\advance\vsize-20pt -\footline{\smalltype Edited by Werner.Icking@gmd.de using \it Herbert Chlapik, - Die Praxis des Notensetzers, Doblinger Wien 1987, ISBN 3-9000~035-96-2 \hfil} +\footline{\smalltype Edited by Werner.Icking@gmd.de using {\it Herbert Chlapik, + Die Praxis des Notensetzers, Doblinger Wien 1987, ISBN 3-9000~035-96-2}.\hfil} \parskip 12pt minus 12pt \nobarnumbers %\smallmusicsize @@ -209,18 +211,18 @@ Multibar rests \scale{1.1} \def\TPF{\off{2.5\elemskip}} \def\CB#1{\centerbar{#1}} -\def\CN#1{\CB{\zcharnote{9}{\meterfont\lrlap{#1}}}} +\def\CN#1{\CB{\ccn{9}{\meterfont{#1}}}} \xtrct1\generalmeter{}\Startextract -\NOtesp\sk\en\def\atnextbar{\znotes\CN2\CB{\PAuse}\en}\bar -\NOTes \sk\en\def\atnextbar{\znotes\CN3\CB{\PAuse\TPF\pause}\en}\bar -\NOtesp\sk\en\def\atnextbar{\znotes\CN4\CB{\PAUSe}\en}\bar -\NOTes \sk\en\def\atnextbar{\znotes\CN5\CB{\PAUSe\TPF\pause}\en}\bar -\NOTes \sk\en\def\atnextbar{\znotes\CN6\CB{\PAUSe\TPF\PAuse}\en}\bar -\NOTEs \sk\en\def\atnextbar{\znotes\CN7\CB{\PAUSe\TPF\PAuse\TPF\pause}\en}\bar -\NOTes \sk\en\def\atnextbar{\znotes\CN8\CB{\PAUSe\TPF\PAUSe}\en}\bar -\NOTEs \sk\en\def\atnextbar{\znotes\CN9\CB{\PAUSe\TPF\PAUSe\TPF\pause}\en}\bar -\NOTEs \Hpause 4{0.83}\en\def\atnextbar{\znotes\CN{10}\en}\bar -\NOTEsp\Hpause 4{0.83}\en\def\atnextbar{\znotes\CN{11}\en}\endextract +\NOtesp\sk\en\def\atnextbar{\znotes\CN2\CB{\cPAuse}\en}\bar +\NOTes \sk\en\def\atnextbar{\znotes\CN3\CB{\cPAuse\TPF\cpause}\en}\bar +\NOtesp\sk\en\def\atnextbar{\znotes\CN4\CB{\cPAUSe}\en}\bar +\NOTes \sk\en\def\atnextbar{\znotes\CN5\CB{\cPAUSe\TPF\cpause}\en}\bar +\NOTes \sk\en\def\atnextbar{\znotes\CN6\CB{\cPAUSe\TPF\cPAuse}\en}\bar +\NOTEs \sk\en\def\atnextbar{\znotes\CN7\CB{\cPAUSe\TPF\cPAuse\TPF\cpause}\en}\bar +\NOTes \sk\en\def\atnextbar{\znotes\CN8\CB{\cPAUSe\TPF\cPAUSe}\en}\bar +\NOTEs \sk\en\def\atnextbar{\znotes\CN9\CB{\cPAUSe\TPF\cPAUSe\TPF\cpause}\en}\bar +\NOTEs \Hpause4{0.83}\en\def\atnextbar{\znotes\CN{10}\en}\bar +\NOTEsp\Hpause4{0.83}\en\def\atnextbar{\znotes\CN{11}\en}\endextract \writeextract \vfill\eject diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc.pdf b/Master/texmf-dist/doc/generic/musixtex/musixdoc.pdf Binary files differindex f003b908440..edcb42fb8f6 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc.pdf +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc.pdf diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/beams.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/beams.tex index 348955fb88a..060ed86a5ae 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/beams.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/beams.tex @@ -134,12 +134,10 @@ multiplicity. So for example an upper triple beam with following shortcut macros have been provided: \begin{quote}\begin{description}\setlength{\itemsep}{0ex} - \item \keyindex{tqb}\enpee~is equivalent to \verb|\tbl{|$n$\verb|}\qb|\enpee~. - \item \keyindex{tqh}\enpee~is equivalent to \verb|\tbu{|$n$\verb|}\qb|\enpee~. - \item \keyindex{ztqb}\enpee~is equivalent to \verb|\tbl{|$n$\verb|}\zqb|\enpee~, -i.e., no spacing afterwards. - \item \keyindex{ztqh}\enpee~is equivalent to \verb|\tbu{|$n$\verb|}\zqb|\enpee~, -i.e., no spacing afterwards. + \item \keyindex{tqb}\enpee~is equivalent to \verb|\tbl{|$n$\verb|}\qb|\enpee + \item \keyindex{tqh}\enpee~is equivalent to \verb|\tbu{|$n$\verb|}\qb|\enpee + \item \keyindex{ztqb}\enpee~is equivalent to \verb|\tbl{|$n$\verb|}\zqb|\enpee~i.e., no spacing afterwards + \item \keyindex{ztqh}\enpee~is equivalent to \verb|\tbu{|$n$\verb|}\zqb|\enpee~i.e., no spacing afterwards \end{description}\end{quote} The following synonyms may be used: @@ -201,27 +199,41 @@ Thus the following sequences \hbox to \hsize{% \hss \startextract - \Notes\ibu0e0\qbp0e\tbbu0\tbu0\qb0e\en + \Notes\ibu0e0\qbp0e\roff{\tbbu0\tqh0e}\en \zendextract \hss\hss \startextract - \Notes\ibu0e0\qbpp0e\tbbbu0\tbbu0\tbu0\qb0e\en + \Notes\ibu0e0\qbpp0e\roff{\tbbbu0\tbbu0\tqh0e}\en \zendextract \hss} \end{music} \noindent are coded \hspace*{\fill}\begin{minipage}{.4\textwidth}\begin{verbatim} \Notes\ibu0e0\qbp0e% - \tbbu0\tbu0\qb0e\en + \roff{\tbbu0\tqh0e}\en \end{verbatim}\end{minipage}\hfill \begin{minipage}{.4\textwidth}\begin{verbatim} \Notes\ibu0e0\qbpp0e% - \tbbbu0\tbbu0\tbu0\qb0e\en -\end{verbatim}\end{minipage}\hfill + \roff{\tbbbu0\tbbu0\tqh0e}\en +\end{verbatim}\end{minipage}\hfill\\[4ex] +The following abbreviations have been provided: +\begin{quote}\begin{description}\setlength{\itemsep}{0ex} + \item \keyindex{tqqb}\enpee~is equivalent to \verb|\tbbl{|$n$\verb|}\tqb|\enpee + \item \keyindex{tqqh}\enpee~is equivalent to \verb|\tbbu{|$n$\verb|}\tqh|\enpee + \item \keyindex{tqqqh}\enpee~is equivalent to \verb|\tbbbu{|$n$\verb|}\tqqh|\enpee + \item \keyindex{tqqqb}\enpee~is equivalent to \verb|\tbbbl{|$n$\verb|}\tqqb|\enpee +\end{description}\end{quote} +and the following +synonyms may be used: +\begin{quote}\begin{tabular}{lcl} +\keyindex{tqql} & for & \keyindex{tqqb}\\ +\keyindex{tqqu} & for & \keyindex{tqqh}\\ +\keyindex{tqqql} & for & \keyindex{tqqqb}\\ +\keyindex{tqqqu} & for & \keyindex{tqqqh}\\ +\end{tabular}\end{quote} \medskip - The symmetrical pattern is also possible. For example: \begin{music}\nostartrule diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/extensions.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/extensions.tex index 4447f44617a..a2cdf094b57 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/extensions.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/extensions.tex @@ -1350,14 +1350,11 @@ command in the \verb\soul\ package. The following bold-oblique fonts for dynamic marks are defined: \begin{quote}\begin{tabular}{lr} +\keyindex{ppfftwelve} & 8pt \\ \keyindex{ppffsixteen} & 10pt\\ \keyindex{ppfftwenty} & 12pt \\ \keyindex{ppfftwentyfour} & 14pt \\ \keyindex{ppfftwentynine} & 17pt \\ -\keyindex{tinyppff} & 8pt \\ -\keyindex{smallppff} & 10pt \\ -\keyindex{normppff} & 12pt \\ -\keyindex{medppff} & 14pt \\ \end{tabular}\end{quote} The default font for typesetting \keyindex{txt} and \keyindex{tuplettxt} @@ -1797,14 +1794,11 @@ command in the \verb\soul\ package. The following bold-italic fonts for dynamic marks are defined: \begin{quote}\begin{tabular}{lr} +\keyindex{ppfftwelve} & 8pt \\ \keyindex{ppffsixteen} & 10pt\\ \keyindex{ppfftwenty} & 12pt \\ \keyindex{ppfftwentyfour} & 14pt \\ \keyindex{ppfftwentynine} & 17pt \\ -\keyindex{tinyppff} & 8pt \\ -\keyindex{smallppff} & 10pt \\ -\keyindex{normppff} & 12pt \\ -\keyindex{medppff} & 14pt \\ \end{tabular}\end{quote} The default font for typesetting \keyindex{txt} and \keyindex{tuplettxt} @@ -2017,14 +2011,11 @@ command in the \verb\soul\ package. The following bold-italic fonts for dynamic marks are defined: \begin{quote}\begin{tabular}{lr} +\keyindex{ppfftwelve} & 8pt \\ \keyindex{ppffsixteen} & 10pt\\ \keyindex{ppfftwenty} & 12pt \\ \keyindex{ppfftwentyfour} & 14pt \\ \keyindex{ppfftwentynine} & 17pt \\ -\keyindex{tinyppff} & 8pt \\ -\keyindex{smallppff} & 10pt \\ -\keyindex{normppff} & 12pt \\ -\keyindex{medppff} & 14pt \\ \end{tabular}\end{quote} The default font for typesetting \keyindex{txt} and \keyindex{tuplettxt} diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/fonts.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/fonts.tex index e0c547834b2..a9ee236baac 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/fonts.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/fonts.tex @@ -11,7 +11,7 @@ sizes, which are intended for titles, are available only in bold style. The size selection macros from smallest to biggest are \keyindex{smalltype}, \keyindex{Smalltype}, \keyindex{normtype}, \keyindex{medtype}, \keyindex{bigtype}, -\keyindex{Bigtype} , +\keyindex{Bigtype}, \keyindex{BIgtype} and \keyindex{BIGtype}. Following size selection, the style may be selected or changed using \keyindex{rm} (Roman), \keyindex{bf} (bold) or \keyindex{it} (italic). If no style is explicitly selected, Roman style @@ -25,10 +25,10 @@ When \musixtex\ is started, the default font for ordinary text is ten point Roman, equivalent to \verb|\normtype\rm|. Another group of fonts, in bold extended italic style, is predefined in point sizes -$10$, $12$, $14$, and $17$ for dynamic markings. The appropriate font for the current +$8$, $10$, $12$, $14$, and $17$ for dynamic markings. The appropriate font for the current staff size may be selected simply by using \keyindex{ppff} as a -font specification. Macros \verb|\smalldyn|, \verb|\normdyn|, or \verb|\meddyn| may be -used to redefine \verb|\ppff| to represent one of the smallest three. +font specification. Macros \keyindex{tinydyn}, \keyindex{smalldyn}, \keyindex{normdyn}, or \keyindex{meddyn} may be +used to redefine \verb|\ppff| to represent one of the smallest four. All predefined fonts are summarized in Table~\ref{predefinedfonts}. The second column gives an @@ -49,6 +49,7 @@ explicit control sequence that can alternatively be used locally as a font speci \font\cBigtype=cmbx12 scaled \magstep2 \font\cBIgtype=cmbx12 scaled \magstep3 \font\cBIGtype=cmbx12 scaled \magstep4 +\font\cppfftwelve=cmbxti10 at 8pt \font\cppffsixteen=cmbxti10 \font\cppfftwenty=cmbxti10 scaled \magstep1 \font\cppfftwentyfour=cmbxti10 scaled \magstep2 @@ -79,6 +80,7 @@ explicit control sequence that can alternatively be used locally as a font speci \verb|\Bigtype| & \verb|\Bigfont| & {\cBigtype Big bold} \\ \verb|\BIgtype| & \verb|\BIgfont| & {\cBIgtype BIg bold} \\ \verb|\BIGtype| & \verb|\BIGfont| & {\cBIGtype BIG bold} \\ + \verb|\tinydyn| & \verb|\ppfftwelve| & {\cppfftwelve pp ff diminuendo}\\ \verb|\smalldyn| & \verb|\ppffsixteen| & {\cppffsixteen pp ff diminuendo}\\ \verb|\normdyn| & \verb|\ppfftwenty| & {\cppfftwenty pp ff crescendo}\\ \verb|\meddyn| & \verb|\ppfftwentyfour| & {\cppfftwentyfour pp ff crescendo}\\[.4ex] diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/frontmatter.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/frontmatter.tex index 76439f0ed9a..25907373d4c 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/frontmatter.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/frontmatter.tex @@ -1,6 +1,6 @@ \title{\Huge\bfseries\musixtex\\[\bigskipamount] \LARGE\bfseries Using \TeX{} to write polyphonic\\or -instrumental music\\\Large\itshape Version 1.16} +instrumental music\\\Large\itshape Version 1.17} %\author{\Large\rm Daniel \sc Taupin\\\large\sl @@ -65,16 +65,13 @@ event. You may read tributes to Daniel Taupin that are archived at the Since then, the only significant update to \musixtex\ has been in version 1.15 (April 2011) which takes advantage of the greater capacity of the e\TeX\ version of \TeX. -The current version~1.16 (February~2015) incorporates some minor -corrections in cautionary accidentals and ``hiding'' staffs, and a major correction -to a deep bug in the package for Postscript fonts. The \musixtex\ package -includes -new extension libraries for use of Palatino and Helvetica text fonts, the EC variants -of Computer Modern fonts, additional accents and improved dynamic marks. +The current version~1.17 (June~2015) incorporates +corrections to font-selection commands \verb|\txtfont| and \verb|\ppff|, +and to the bar-centering rest commands such as \verb|\centerpause|. This manual is the definitive reference to all features of -\musixtex\ version~1.16. +\musixtex\ version~1.17. -Novice users should not start here. +Novice users need not start here. Most music typesetting tasks can be accomplished entirely by using the \textbf{PMX} (for instrumental music) or \mbox{\textbf{M-Tx}} (for vocal music) diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/miscellaneous.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/miscellaneous.tex index aed55abdcfc..834c705194a 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/miscellaneous.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/miscellaneous.tex @@ -138,7 +138,7 @@ and is initially defined as \verb|\def\txt{3}|. The macro \verb|\tuplettxt| serves the same role for the last two macros. The font used is -\verb|\txtfont| which is by default \verb|\eightit| but may be re-defined. +\verb|\txtfont| which is by default \verb|\eightit| (in normal music size) but may be re-defined. The first four are to be used with beamed xtuplets. As indicated in the last column, the last four produce a sloping bracket and are to be used with @@ -254,6 +254,64 @@ use the macros without gaps. \section{Ornaments} + + \subsection{Simple ornaments}\index{ornaments} + +The argument $p$ in the following macros for ordinary ornaments is the +pitch at which the ornament itself appears. They are all nonspacing macros. +You may use +\begin{itemize}\setlength{\itemsep}{0ex} + \item \keyindex{mordent}\pitchp\ for \hbox to .75em{\mordent 0\hss} + \item \keyindex{Mordent}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Mordent 0\hss} + \item \keyindex{shake}\pitchp\ for \hbox to .75em{\shake 0\hss} + \item \keyindex{Shake}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shake 0\hss} + \item \keyindex{Shakel}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shakel 0\hss} + \item \keyindex{Shakesw}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shakesw 0\hss} + \item \keyindex{Shakene}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shakene 0\hss} + \item \keyindex{Shakenw}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shakenw 0\hss} + \item \keyindex{turn}\pitchp\ for \hbox to 1.5em{\kern 0.6em\turn 0\hss} + \item \keyindex{backturn}\pitchp\ for \hbox to 1.5em{\kern 0.6em\backturn 0\hss} + \item \keyindex{tr}\pitchp\ for \hbox to 1.5em{\kern 0.6em\tr 0\hss} + \item \keyindex{trt}\pitchp\ for \hbox to 1.5em{\kern 0.6em\trt 0\hss}\quad (J. S.~Bach's \textit{trillo und mordant}) + \end{itemize} + +In the following macros for fermatas, the argument $p$ is the pitch of the +notehead on which the fermata rests, assuming no additional vertical +adjustments are needed for stems or intervening staff lines. They are all +nonspacing macros. You may use +\begin{itemize}\setlength{\itemsep}{0ex} + \item \keyindex{fermataup}\pitchp\ for +\raisebox{0ex}[0ex][0ex]{\notesintext{\notes\fermataup1\en}}, +\end{itemize} +\begin{itemize}\setlength{\itemsep}{3ex} + \item \keyindex{fermatadown}\pitchp\ for +\raisebox{0ex}[0ex][0ex]{\notesintext{\notes\fermatadown2\en}}, + \item \keyindex{Fermataup}\pitchp\ for +\raisebox{-1ex}[-1ex][0ex]{\musicintextnoclef{\notes\Fermataup 7\zwh{'c}\en}}~, +centered over a whole note, + \item \keyindex{Fermatadown}\pitchp\ for +\raisebox{-1ex}[0ex][0ex]{\musicintextnoclef{\notes\Fermatadown1\zwh{'c}\en}}~, +centered under a whole note. + \end{itemize} +\bigskip + +A \itxem{breath} mark +\raisebox{-5ex}[0ex][0ex]{\notesintext{\notes\zbreath\en}} +can be put just above the staff with \keyindex{zbreath}. This is a nonspacing +macro. On the other hand, \keyindex{cbreath} will cause a space of one +\verb|\noteskip| and place the comma midway through the space. + +The \keyindex{caesura} command inserts a slash \verb|0.5\noteskip| before +the place it is entered, while adding no space: + +\begin{music}\nostartrule +\startextract +\NOTes\zhu j\hl{^e}\caesura\en +\Notes\zcu j\cl e\en +\zendextract +\end{music} + + \subsection{Arpeggios} \ital{Arpeggios} (i.e.~~~\arpeggio{-2}3) can be coded with the macro \keyindex{arpeggio}\pitchp\itbrace{m} @@ -370,60 +428,6 @@ in combination with \keyindex{zchar} or \keyindex{zcharnote}. Since the \hbox to .7cm{ \Ped\hss} symbol is rather wide, it might collide with adjacent bass notes. To shift it horizontally, you could use \verb|\loff{\PED}|. - \subsection{Other ornaments}\index{ornaments} - -The argument $p$ in the following macros for ordinary ornaments is the -pitch at which the ornament itself appears. They are all nonspacing macros. -You may use -\begin{itemize}\setlength{\itemsep}{0ex} - \item \keyindex{mordent}\pitchp\ for \hbox to .75em{\mordent 0\hss}, - \item \keyindex{Mordent}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Mordent 0\hss}, - \item \keyindex{shake}\pitchp\ for \hbox to .75em{\shake 0\hss}, - \item \keyindex{Shake}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shake 0\hss}, - \item \keyindex{Shakel}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shakel 0\hss}, - \item \keyindex{Shakesw}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shakesw 0\hss}, - \item \keyindex{Shakene}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shakene 0\hss}, - \item \keyindex{Shakenw}\pitchp\ for \hbox to 1.5em{\kern 0.6em\Shakenw 0\hss}, - \item \keyindex{turn}\pitchp\ for \hbox to 1.5em{\kern 0.6em\turn 0\hss}, - \item \keyindex{backturn}\pitchp\ for \hbox to 1.5em{\kern 0.6em\backturn 0\hss}. - \end{itemize} - -In the following macros for fermatas, the argument $p$ is the pitch of the -notehead on which the fermata rests, assuming no additional vertical -adjustments are needed for stems or intervening staff lines. They are all -nonspacing macros. You may use -\begin{itemize}\setlength{\itemsep}{0ex} - \item \keyindex{fermataup}\pitchp\ for -\raisebox{0ex}[0ex][0ex]{\notesintext{\notes\fermataup1\en}}, -\end{itemize} -\begin{itemize}\setlength{\itemsep}{3ex} - \item \keyindex{fermatadown}\pitchp\ for -\raisebox{0ex}[0ex][0ex]{\notesintext{\notes\fermatadown2\en}}, - \item \keyindex{Fermataup}\pitchp\ for -\raisebox{-1ex}[-1ex][0ex]{\musicintextnoclef{\notes\Fermataup 7\zwh{'c}\en}}~, -centered over a whole note, - \item \keyindex{Fermatadown}\pitchp\ for -\raisebox{-1ex}[0ex][0ex]{\musicintextnoclef{\notes\Fermatadown1\zwh{'c}\en}}~, -centered under a whole note. - \end{itemize} -\bigskip - -A \itxem{breath} mark -\raisebox{-5ex}[0ex][0ex]{\notesintext{\notes\zbreath\en}} -can be put just above the staff with \keyindex{zbreath}. This is a nonspacing -macro. On the other hand, \keyindex{cbreath} will cause a space of one -\verb|\noteskip| and place the comma midway through the space. - -The \keyindex{caesura} command inserts a slash \verb|0.5\noteskip| before -the place it is entered, while adding no space: - -\begin{music}\nostartrule -\startextract -\NOTes\zhu j\hl{^e}\caesura\en -\Notes\zcu j\cl e\en -\zendextract -\end{music} - \section{Alphabetic dynamic marks} Conventional dynamic symbols \pppp, \ppp, \pp, @@ -451,8 +455,8 @@ the place it is entered, while adding no space: \keyindex{fff}, \keyindex{ffff}, \keyindex{sfz} and -\keyindex{sfzp}, respectively, as the second argument of \verb|\zcharnote| or -\verb|\ccharnote|. +\keyindex{sfzp}, respectively, as the second argument of \verb|\zcn| (\verb|\zcharnote|) or +\verb|\ccn| (\verb|\ccharnote|). See also Section~\ref{musixppff} for an alternative set of dynamic marks. diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixdoc.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixdoc.tex index 8ac69a73f42..2c003646e91 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixdoc.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixdoc.tex @@ -23,7 +23,6 @@ \usepackage{musixdoc} -%\includeonly{extensions} %\includeonly{ %frontmatter, diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixhv.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixhv.tex new file mode 100644 index 00000000000..aea62833bb7 --- /dev/null +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixhv.tex @@ -0,0 +1,207 @@ +% 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 Bob Tennent rdt@cs.queensu.ca +% +\immediate\write16{MusiXhv\space<2015/05/04>} +% +% 7pt "Roman" (sans serif), bold, "italic" (oblique), "bold-italic" (bold-oblique), and small-cap +\font\sevenrm=phvr8r at 7pt +\font\sevenbf=phvb8r at 7pt +\font\sevenit=phvro8r at 7pt +\font\sevenbi=phvbo8r at 7pt +\font\sevensc=phvrc8t at 7pt +\font\sevensl=phvro8r at 7pt +% +% 8pt +\font\eightrm=phvr8r at 8pt +\font\eightbf=phvb8r at 8pt +\font\eightbi=phvbo8r at 8pt +\font\eightsc=phvrc8t at 8pt +\font\eightit=phvro8r at 8pt +\font\eightsl=phvro8r at 8pt +% +% 9pt +\font\ninerm=phvr8r at 9pt +\font\ninebf=phvb8r at 9pt +\font\nineit=phvro8r at 9pt +\font\ninebi=phvbo8r at 9pt +\font\ninesc=phvrc8t at 9pt +\font\ninesl=phvro8r at 9pt +% +% 10pt +\font\tenrm=phvr8r at 10pt +\font\tenbf=phvb8r at 10pt +\font\tenit=phvro8r at 10pt +\font\tenbi=phvbo8r at 10pt +\font\tensc=phvrc8t at 10pt +\font\tensl=phvro8r at 10pt +% +% 11pt +\font\elevenrm=phvr8r at 11pt +\font\elevenbf=phvb8r at 11pt +\font\elevenit=phvro8r at 11pt +\font\elevenbi=phvbo8r at 11pt +\font\elevensc=phvrc8t at 11pt +\font\elevensl=phvro8r at 11pt +% +% 12pt +\font\twelverm=phvr8r at 12pt +\font\twelvebf=phvb8r at 12pt +\font\twelveit=phvro8r at 12pt +\font\twelvebi=phvbo8r at 12pt +\font\twelvesc=phvrc8t at 12pt +\font\twelvesl=phvro8r at 12pt +% +% 14pt +\font\frtrm=phvr8r at 14pt +\font\frtbf=phvb8r at 14pt +\font\frtit=phvro8r at 14pt +\font\frtbi=phvbo8r at 14pt +\font\frtsc=phvrc8t at 14pt +\font\frtsl=phvro8r at 14pt +% +% 17pt +\font\svtrm=phvr8r at 17pt +\font\svtbf=phvb8r at 17pt +\font\svtit=phvro8r at 17pt +\font\svtbi=phvbo8r at 17pt +\font\svtsc=phvrc8t at 17pt +\font\svtsl=phvro8r at 17pt +% +% 20pt +\font\twtyrm=phvr8r at 20pt +\font\twtybf=phvb8r at 20pt +\font\twtyit=phvro8r at 20pt +\font\twtybi=phvbo8r at 20pt +\font\twtysc=phvrc8t at 20pt +\font\twtysl=phvro8r at 20pt +% +% 25pt +\font\twfvrm=phvr8r at 25pt +\font\twfvbf=phvb8r at 25pt +\font\twfvit=phvro8r at 25pt +\font\twfvbi=phvbo8r at 25pt +\font\twfvsc=phvrc8t at 25pt +\font\twfvsl=phvro8r at 25pt +% +% Large fonts for titles +% (If you prefer bold, use ..bf instead of ..rm) +\let\bigfont=\frtrm +\let\Bigfont=\svtrm +\let\BIgfont=\twtyrm +\let\BIGfont=\twfvrm +% +% +\font\ppfftwelve=phvbo8r at 8pt +\font\ppffsixteen=phvbo8r at 10pt +\font\ppfftwenty=phvbo8r at 12pt +\font\ppfftwentyfour=phvbo8r at 14pt +\font\ppfftwentynine=phvbo8r at 17pt +% +\def\tinydyn{\let\ppff\tinyppff} +\def\smalldyn{let\ppff\smallppff} +\def\normdyn{\let\ppff\normppff} +\def\meddyn{\let\ppff\medppff} +% +\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}} + +\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 + +\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} +\def\bigtype{% + \let\rm\bigfont + \let\bf\bigfont + \let\it\bigfont + \let\bi\bigfont + \let\sc\bigfont + \sc} +\def\Bigtype{% + \let\rm\Bigfont + \let\bf\Bigfont + \let\it\Bigfont + \let\bi\Bigfont + \let\sc\Bigfont + \sc} +\def\BIgtype{% + \let\rm\BIgfont + \let\bf\BIgfont + \let\it\BIgfont + \let\bi\Bigfont + \let\sc\Bigfont + \sc} +\def\BIGtype{% + \let\rm\BIGfont + \let\bf\BIGfont + \let\it\BIGfont + \let\bi\BIGfont + \let\sc\BIGfont + \sc} +% + +\normtype +\endinput diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixplt.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixplt.tex new file mode 100644 index 00000000000..e56f88833bf --- /dev/null +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixplt.tex @@ -0,0 +1,217 @@ +% 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 Bob Tennent rdt@cs.queensu.ca +% +\immediate\write16{MusiXplt\space<2015/05/04>} +% +% 7pt roman, bold, italic, bold italic, slanted and small-cap +\font\sevenrm=pplr8r at 7pt +\font\sevenbf=pplb8r at 7pt +\font\sevenit=pplri8r at 7pt +\font\sevenbi=pplbi8r at 7pt +\font\sevensc=pplrc8r at 7pt +\font\sevensl=pplro8r at 7pt +% +% 8pt roman, bold, italic, bold italic, slanted and small-cap +\font\eightrm=pplr8r at 8pt +\font\eightbf=pplb8r at 8pt +\font\eightit=pplri8r at 8pt +\font\eightbi=pplbi8r at 8pt +\font\eightsc=pplrc8r at 8pt +\font\eightsl=pplro8r at 8pt +% +% 9pt +\font\ninerm=pplr8r at 9pt +\font\ninebf=pplb8r at 9pt +\font\nineit=pplri8r at 9pt +\font\ninebi=pplbi8r at 9pt +\font\ninesc=pplrc8r at 9pt +\font\ninesl=pplro8r at 9pt +% +% 10pt +\font\tenrm=pplr8r at 10pt +\font\tenbf=pplb8r at 10pt +\font\tenit=pplri8r at 10pt +\font\tenbi=pplbi8r at 10pt +\font\tensc=pplrc8r at 10pt +\font\tensl=pplro8r at 10pt +% +% 11pt +\font\elevenrm=pplr8r at 11pt +\font\elevenbf=pplb8r at 11pt +\font\elevenit=pplri8r at 11pt +\font\elevenbi=pplbi8r at 11pt +\font\elevensc=pplrc8r at 11pt +\font\elevensl=pplro8r at 11pt +% +% 12pt +\font\twelverm=pplr8r at 12pt +\font\twelvebf=pplb8r at 12pt +\font\twelveit=pplri8r at 12pt +\font\twelvebi=pplbi8r at 12pt +\font\twelvesc=pplrc8r at 12pt +\font\twelvesl=pplro8r at 12pt +% +% 14pt +\font\frtrm=pplr8r at 14pt +\font\frtbf=pplb8r at 14pt +\font\frtit=pplri8r at 14pt +\font\frtbi=pplbi8r at 14pt +\font\frtsc=pplrc8r at 14pt +\font\frtsl=pplro8r at 14pt +% +% 17pt +\font\svtrm=pplr8r at 17pt +\font\svtbf=pplb8r at 17pt +\font\svtit=pplri8r at 17pt +\font\svtbi=pplbi8r at 17pt +\font\svtsc=pplrc8r at 17pt +\font\svtsl=pplro8r at 17pt +% +% 20pt +\font\twtyrm=pplr8r at 20pt +\font\twtybf=pplb8r at 20pt +\font\twtyit=pplri8r at 20pt +\font\twtybi=pplbi8r at 20pt +\font\twtysc=pplrc8r at 20pt +\font\twtysl=pplro8r at 20pt +% +% 25pt +\font\twfvrm=pplr8r at 25pt +\font\twfvbf=pplb8r at 25pt +\font\twfvit=pplri8r at 25pt +\font\twfvbi=pplbi8r at 25pt +\font\twfvsc=pplrc8r at 25pt +\font\twfvsl=pplro8r at 25pt +% +% Large fonts for titles +% (If you prefer bold, use ..bf instead of ..sc) +% (If you prefer roman, use ..rm instead of ..sc) +\let\bigfont=\frtsc +\let\Bigfont=\svtsc +\let\BIgfont=\twtysc +\let\BIGfont=\twfvsc +% +% +\font\ppfftwelve=pplbi8r at 8pt +\font\ppffsixteen=pplbi8r at 10pt +\font\ppfftwenty=pplbi8r at 12pt +\font\ppfftwentyfour=pplbi8r at 14pt +\font\ppfftwentynine=pplbi8r at 17pt +% +\def\tinydyn{\let\ppff\tinyppff} +\def\smalldyn{let\ppff\smallppff} +\def\normdyn{\let\ppff\normppff} +\def\meddyn{\let\ppff\medppff} + +\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}} + +\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 + +\def\smalltype{% + \let\rm\eightrm + \let\bf\eightbf + \let\it\eightit + \let\bi\eightbi + \let\sc\eightsc + \let\sl\eightsl + \rm} +\def\Smalltype{% + \let\rm\ninerm + \let\bf\ninebf + \let\it\nineit + \let\bi\ninebi + \let\sc\ninesc + \let\sl\ninesl + \rm} +\def\normtype{% + \let\rm\tenrm + \let\bf\tenbf + \let\it\tenit + \let\bi\tenbi + \let\sc\tensc + \let\sl\tensl + \rm} +\def\medtype{% + \let\rm\twelverm + \let\bf\twelvebf + \let\it\twelveit + \let\bi\twelvebi + \let\sc\twelvesc + \let\sl\twelvesl + \rm} +\def\bigtype{% + \let\rm\bigfont + \let\bf\bigfont + \let\it\bigfont + \let\bi\bigfont + \let\sc\bigfont + \let\sl\bigfont + \sc} +\def\Bigtype{% + \let\rm\Bigfont + \let\bf\Bigfont + \let\it\Bigfont + \let\bi\Bigfont + \let\sc\Bigfont + \let\sl\Bigfont + \sc} +\def\BIgtype{% + \let\rm\BIgfont + \let\bf\BIgfont + \let\it\BIgfont + \let\bi\Bigfont + \let\sc\Bigfont + \let\sl\Bigfont + \sc} +\def\BIGtype{% + \let\rm\BIGfont + \let\bf\BIGfont + \let\it\BIGfont + \let\bi\BIGfont + \let\sc\BIGfont + \let\sl\BIGfont + \sc} +% + + +\normtype +\endinput diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixtex.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixtex.tex new file mode 100644 index 00000000000..c6e5135a7db --- /dev/null +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixtex.tex @@ -0,0 +1,5078 @@ +% +% 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{17} +\def\mxvernumber{\mxmajorvernumber\mxminorvernumber}% make it possible to compare with \ifnum +\def\mxversuffix{}% +\edef\mxversion{\mxmajorvernumber.\mxminorvernumber\mxversuffix} +\def\mxdate{2015-05-25} + +\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}% +\everyjob{\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}}% + +% T117: + +% 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. + +% T116: + +% 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 + +% T115: + +% 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 "T115" 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@ % [T115] 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@ %=\count255 def'd in plain + +\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 + +% [T115] 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 + +% [T115] moved out to the new register allocation code -- until here -- +% \let\maxgroups\thr@@ % maximum three groups of instruments or choirs [T115] moved to later, using \setmaxgroups +\newcount\group@no + +%%% [T115] 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 + % + % 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. +% +%%% [T115] 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 + +%% +% Seven point fonts: roman, bold, and italic. +%% + +%\ifx\undefined\sevenrm % T117 RDT unconditional font definitions + \font\sevenrm=cmr7 + \font\sevenbf=cmbx7 + \font\sevenit=cmti7 +%\fi + +%% +% Eight point fonts: roman, bold, and italic; tt and sl needed for musixsty +%% + +%\ifx\undefined\eightrm + \font\eightrm=cmr8 + \font\eightbf=cmbx8 + \font\eightit=cmti8 + \font\eighttt=cmtt8 + \font\eightsl=cmsl8 +%\fi + +%% +% Nine point fonts +%% + +%\ifx\undefined\ninerm + \font\ninerm=cmr9 + \font\ninebf=cmbx9 + \font\nineit=cmti9 + \font\ninett=cmtt9 + \font\ninesl=cmsl9 +%\fi + +%% +% Ten point fonts +%% + +%\ifx\undefined\tenrm + \font\tenrm=cmr10 + \font\tenbf=cmbx10 + \font\tenit=cmti10 + \font\tentt=cmtt10 + \font\tensl=cmsl10 +%\fi + + +%% +% Eleven point fonts +%% +%\ifx\undefined\elevenrm + \font\elevenrm=cmr9 scaled \magstephalf + \font\elevenbf=cmbx9 scaled \magstephalf + \font\elevenit=cmti9 scaled \magstephalf + \font\eleventt=cmtt9 scaled \magstephalf + \font\elevensl=cmsl9 scaled \magstephalf +%\fi + +%% +% Twelve point fonts +%% +%\ifx\undefined\twelverm + \font\twelverm=cmr12 + \font\twelvebf=cmbx12 + \font\twelveit=cmti12 + \font\twelvett=cmtt12 + \font\twelvesl=cmsl12 +%\fi + +% 14pt: roman, bold, italic and small caps; tt and sl needed for musixsty +%\ifx\undefined\frtrm + \font\frtrm=cmr12 scaled \magstep1 + \font\frtbf=cmbx12 scaled \magstep1 + \font\frtit=cmti12 scaled \magstep1 + \font\frtsc=cmcsc10 scaled \magstep2 + \font\frttt=cmtt12 scaled \magstep1 + \font\frtsl=cmsl12 scaled \magstep1 +%\fi +% +% 17pt +%\ifx\undefined\svtrm + \font\svtrm=cmr12 scaled \magstep2 + \font\svtbf=cmbx12 scaled \magstep2 + \font\svtit=cmti12 scaled \magstep2 + \font\svtsc=cmcsc10 scaled \magstep3 + \font\svttt=cmtt12 scaled \magstep2 +%\fi +% +% 20pt +%\ifx\undefined\twtyrm + \font\twtyrm=cmr12 scaled \magstep3 + \font\twtybf=cmbx12 scaled \magstep3 + \font\twtyit=cmti12 scaled \magstep3 + \font\twtysc=cmcsc10 scaled \magstep4 + \font\twtytt=cmtt12 scaled \magstep3 + \font\twtysl=cmsl12 scaled \magstep3 +%\fi +% +% 25pt +%\ifx\undefined\twfvrm + \font\twfvrm=cmr12 scaled \magstep4 + \font\twfvbf=cmbx12 scaled \magstep4 + \font\twfvit=cmti12 scaled \magstep4 + \font\twfvsc=cmcsc10 scaled \magstep5 + \font\twfvtt=cmtt12 scaled \magstep4 + \font\twfvsl=cmsl12 scaled \magstep4 +%\fi +% +% Large fonts for titles +% (If you prefer Roman, use ..rm instead of ..bf) +% (If you prefer small-caps, use ..sc instead of ..bf) +\let\bigfont=\frtbf +\let\Bigfont=\svtbf +\let\BIgfont=\twtybf +\let\BIGfont=\twfvbf +% +%% +%% +% Define six font families. +%% + +\def\smalltype{% + \let\rm\eightrm + \let\bf\eightbf + \let\it\eightit + \rm} +\def\Smalltype{% + \let\rm\ninerm + \let\bf\ninebf + \let\it\nineit + \rm} +\def\normtype{% + \let\rm\tenrm + \let\bf\tenbf + \let\it\tenit + \rm} +\def\medtype{% + \let\rm\twelverm + \let\bf\twelvebf + \let\it\twelveit + \rm} +\def\bigtype{% + \let\rm\bigfont + \let\bf\bigfont + \let\it\bigfont + \bf} +\def\Bigtype{% + \let\rm\Bigfont + \let\bf\Bigfont + \let\it\Bigfont + \bf} +\def\BIgtype{% + \let\rm\BIgfont + \let\bf\BIgfont + \let\it\BIgfont + \bf} +\def\BIGtype{% + \let\rm\BIGfont + \let\bf\BIGfont + \let\it\BIGfont + \bf} +% +%% +% Bold italic fonts for dynamic markings. +%% + +\font\ppfftwelve=cmbxti10 at 8pt % T117 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% T117 RDT +\else\ifdim\internote<.95\Internote\smallppff% +\else\ifdim\internote<1.19\Internote\normppff% +\else\medppff\fi\fi\fi}% + +\def\tinydyn{\let\ppff\tinyppff} % T117 RDT +\def\smalldyn{let\ppff\smallppff} +\def\normdyn{\let\ppff\normppff} +\def\meddyn{\let\ppff\medppff} + + +\font\musiceleven=musix11 +\font\musicthirteen=musix13 +\font\musicsixteen=musix16 +\font\musictwenty=musix20 +\font\musictwentyfour=musix24 +\font\musictwentynine=musix29 + +% 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 + +% [T115] 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} + +% +% [T115] 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@)}% [T115] + \n@i\z@% [T115] + \fi + \advance\n@i\@ne}% +% +\def\s@l@ctslur#1\relax{% + \n@i#1\relax\test@slurnum% [T115] 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 + +\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\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} + +\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 % T116 RDT + \let\meterbigfont\twelvebf \let\meterlargefont\frtbf + \let\meterLargefont\svtbf + \let\tinyppff\ppfftwelve % T117 RDT + \let\smallppff\ppfftwelve + \let\normppff\ppffsixteen + \let\medppff\ppfftwenty + \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 % T116 RDT + \let\meterbigfont\svtbf \let\meterlargefont\twtybf + \let\meterlargefont\twfvbf + \let\tinyppff\ppffsixteen % T117 RDT + \let\smallppff\ppfftwenty + \let\normppff\ppfftwentyfour + \let\medppff\ppfftwentynine + \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 % T116 RDT + \let\meterbigfont\twtybf \let\meterlargefont\twfvbf + \let\meterLargefont\twfvbf + \let\tinyppff\ppfftwenty % T117 RDT + \let\smallppff\ppfftwentyfour + \let\normppff\ppfftwentynine + \let\medppff\ppfftwentynine +\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 % T116 RDT + \let\meterbigfont\frtbf \let\meterlargefont\svtbf + \let\meterLargefont\twtybf + \let\tinyppff\ppfftwelve % T117 RDT + \let\smallppff\ppffsixteen + \let\normppff\ppfftwenty + \let\medppff\ppfftwentyfour +\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}} + +% [T115] 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 % [T115] -- from here -- + \errmessage{Wrong instrument reference number \the\noinstrum@nt, maxinstruments=\the\maxinstruments} + \fi % [T115] -- 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}% + \interportee\interfacteur\internote \interportee\tw@\interportee} + +\def\C@Inter{\stem@skip\interportee \advance\stem@skip-\@ight\internote + \ifnum\nblines=\f@ur \advance\stem@skip\tw@\internote \fi + \ifnum\nblines>\fiv@ \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} + +% [T115] 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@)}% [T115] + \group@no\z@% [T115] + \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) + +% [T115] moved out to the above of the new register allocation code +% \newdimen\interinstrument +% [T115] 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}} + +%%% 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 + \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\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 \addspace\afterruleskip +} + +% 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} + +%%% 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 +% 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 [T115] (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 + +\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\addspace\afterruleskip} + +% 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{\lastbarpos\lin@pos + \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 + \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\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} +\def\leftrepeat@II{\T@bil \setleftrepeat\@bar\else\@LeftRp \fi} +\let\leftrepeat\leftrepeat@II +\def\leftrightrepeat@II{\T@bil \setleftrightrepeat + %\setbox\toks@box\l@eftrightrepeat \global\cut@v=\wd\toks@box + \@bar + \else\setrightrepeat\@LeftRp \fi} +\let\leftrightrepeat\leftrightrepeat@II +\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\addspace\afterruleskip + \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\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\w@coli{\p@loop + \raise\altportee\hbox{\raise4\internote\hbox{\keychar55}}\count@portee\repeat} + +%%% 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{\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}} + +%%% 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} + +\def\trebleoct{\trebleclef\raise 9\internote\hbox\@to\z@{\smalltype\it\kern -1.8\Interligne 8\hss}} +\def\bassoct{\bassclef\raise 2\internote\hbox\@to\z@{\smalltype\it\kern -2.3\Interligne 8\hss}} +\def\treblelowoct{\trebleclef\raise -7\internote\hbox\@to\z@{\smalltype\it\kern -2.3\Interligne 8\hss}} +\def\basslowoct{\bassclef\raise -6\internote\hbox\@to\z@{\smalltype\it\kern -2.5\Interligne 8\hss}} + +% [T115] reqest from Hermann Hinsch +\def\smalltrebleoct{\smalltrebleclef\raise 7.2\internote\hbox\@to\z@{\smalltype\it\kern -1.8\Interligne 8\hss}} +\def\smalltreblelowoct{\smalltrebleclef\raise-6.8\internote\hbox\@to\z@{\smalltype\it\kern -2.1\Interligne 8\hss}} +\def\smallbassoct{\smallbassclef\raise 2\internote\hbox\@to\z@{\smalltype\it\kern -2.0\Interligne 8\hss}} +\def\smallbasslowoct{\smallbassclef\raise-6.2\internote\hbox\@to\z@{\smalltype\it\kern -2.2\Interligne 8\hss}} +% [T115] reqest from Hermann Hinsch: end + + +\newskip\clef@skip + +\def\changeclefs{\t@rmskip\writ@newclefs} + +\def\zchangeclefs{\t@rmskip\zwrit@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}}% [T115] 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\ds\ds@oup \let\mp\mp@ + \locx@skip\x@skip} + +\def\@ndstaff{\egroup + \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 + \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 + \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 % T116 + \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 % T116 + \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\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\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} % T116 RDT +\def\tqb{\q@symbol\@tqb} +\def\tql{\q@symbol\@tqb} % T116 RDT +\def\tqqh#1#2{\tbbu{#1}\tqh{#1}{#2}} % T117 RDT +\def\tqqu#1#2{\tbbu{#1}\tqu{#1}{#2}} % T117 RDT +\def\tqqb#1#2{\tbbl{#1}\tqb{#1}{#2}} % T117 RDT +\def\tqql#1#2{\tbbl{#1}\tql{#1}{#2}} % T117 RDT +\def\tqqqh#1#2{\tbbbu{#1}\tqqh{#1}{#2}} % T117 RDT +\def\tqqqu#1#2{\tbbbu{#1}\tqqu{#1}{#2}} % T117 RDT +\def\tqqqb#1#2{\tbbbl{#1}\tqqb{#1}{#2}} % T117 RDT +\def\tqqql#1#2{\tbbbl{#1}\tqql{#1}{#2}} % T117 RDT + +\def\ztqh{\advancefalse\q@symbol\@tqh} +\def\ztqu{\advancefalse\q@symbol\@tqh} % T116 RDT +\def\ztqb{\advancefalse\q@symbol\@tqb} +\def\ztql{\advancefalse\q@symbol\@tqb} % T116 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{% [T115] 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 % [T115] 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\centerpause{\centerbar{\cpause}} +\def\centerhpause{\centerbar{\chpause}} +\def\centerPAuse{\centerbar{\cPAuse}} +\def\centerPAUSe{\centerbar{\cPAUSe}} + +\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}} +\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 T116 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 T117 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}} + + +%%% 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} % T116 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 % [T115] (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}}} + +%%% special metersigns + +\def\allabreve{\raise4\internote\hbox{\keychar82}} %-> 2/2 +\def\reverseallabreve{\raise4\internote\hbox{\keychar123}} +\def\meterC{\raise4\internote\hbox{\musickeyfont\@lxxxiii}} %-> 4/4 +\def\reverseC{\raise4\internote\hbox{\keychar84}} %-> 4/2 +\def\meterplus{{\keychar57}} + +%%% 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\tr#1{\zcn{#1}{\ppff tr}} +\def\trt#1{\loffset{0.65}{\shake{#1}}\roffset{0.65}{\mordent{#1}}} + +%%% 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} +\def\Ped{\musixchar35} +\def\PED{\zchar\raiseped\Ped} +\def\Dep{\musixchar33} +\def\DEP{\zchar\raiseped\Dep} +\def\sDep{\musixchar104} +\def\sDEP{\zchar\raiseped\sDep} + +%%% 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{\it tr }\C@trille} +\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. [T115] + +\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{\it tr }\C@tri} + +\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 +% [T115] 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@)}% [T115] + \n@i\z@ % [T115] + \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={{\it tr }}% + \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}}% + +%%% octave lines + +\def\octnumberup{\octnumberdefault\vrule width 0pt height2ex} +\def\octnumberdefault{\smallppff8} % T117 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 +% [T115] 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@)}% [T115] + \n@i\z@% [T115] + \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}} +\def\metronequiv#1#2{{\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2 1}} + + +\def\txtfont{% % T117 RDT +\ifdim\internote<.95\Internote \sevenit +\else\ifdim\internote<1.19\Internote \eightit +\else\ifdim\internote<1.43\Internote \tenit +\else\twelveit\fi\fi\fi} + +\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} % T117 RDT + +% +% Following definitions based on tuplet.tex - conventional tuplet brackets for MusiXTeX. +% Col. G. L. Sicherman. Last revised 2003-05-17. +% +% Added to musixtex.tex T116 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{\BIGfont'}\fi} +\def\cbreath{\check@staff\adv@box{\raise\si@\internote + \hbox\@to\noteskip{\hss\BIGfont'\hss}}\fi} + +% The following macros can be used to surround a note by parentheses +% \l[r]par p produces a left[right] parenthesis at pitch p (Ian Collier) + +\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{{\it s\ppff \p@kern f}} +\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}} % T116 +\def\sfzp{{\ppff s\p@kern f\f@kern z\p@kern p}} % T116 + +%%% 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}} + +%% +% 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}} % T116 RDT +\def\hqsk{\off{\h@lf\@l@mskip}} +\def\qsk{\off\@l@mskip} + +\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} % T116 RDT (corrected 2015-03-31) +\def\nnnotes{\vnotes1.28\elemskip} % T116 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} % T116 +\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}} + +% [T115] 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} + +%%% standard settings +% [115] make them compatible to >12 instruments +\def\resetlayout{\let\interfacteur\nin@ + \stafftopmarg\thr@@\Interligne \staffbotmarg\thr@@\Interligne + \count@\z@ \loop + \advance\count@ by\@ne + \expandafter \let\csname n@l\roman@c@\endcsname \fiv@ + \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 +} + +% [T115] 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 +% + +% [T115] 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 + +%%% +% +% 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 T116 by RDT % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\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 +% +% s.a. +% + \let\leftrepeat\leftrepeat@I +% +% -> \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/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixtmr.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixtmr.tex new file mode 100644 index 00000000000..572320ae41d --- /dev/null +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/musixtmr.tex @@ -0,0 +1,230 @@ +%% +%% 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) 2015-02-06 +%% +%% reference: musixtex.tex (T.99) 268-508 +%% MusiXTeX: (c) Daniel Taupin, et al. +%% +%% History: see trailer. +% +\immediate\write16{MusiXTimesFonts\space<2015/05/04>} +% +% 8pt roman, bold, italic, bold italic, slanted and small-cap +\font\eightrm=ptmr8r at 8pt +\font\eightbf=ptmb8r at 8pt +\font\eightit=ptmri8r at 8pt +\font\eightbi=ptmbi8r at 8pt +\font\eightsc=ptmrc8t at 8pt % artificial small-caps +\font\eightsl=ptmro8r at 8pt +% +% 9pt +\font\ninerm=ptmr8r at 9pt +\font\ninebf=ptmb8r at 9pt +\font\nineit=ptmri8r at 9pt +\font\ninebi=ptmbi8r at 9pt +\font\ninesc=ptmrc8t at 9pt +\font\ninesl=ptmro8r at 9pt +% +% 10pt +\font\tenrm=ptmr8r at 10pt +\font\tenbf=ptmb8r at 10pt +\font\tenit=ptmri8r at 10pt +\font\tenbi=ptmbi8r at 10pt +\font\tensc=ptmrc8t at 10pt +\font\tensl=ptmro8r at 10pt +% +% +% 11pt +\font\elevenrm=ptmr8r at 11pt +\font\elevenbf=ptmb8r at 11pt +\font\elevenit=ptmri8r at 11pt +\font\elevenbi=ptmbi8r at 11pt +\font\elevensc=ptmrc8t at 11pt +\font\elevensl=ptmro8r at 11pt +% +% 12pt +\font\twelverm=ptmr8r scaled \magstep 1 +\font\twelvebf=ptmb8r scaled \magstep 1 +\font\twelveit=ptmri8r scaled \magstep 1 +\font\twelvebi=ptmbi8r scaled \magstep 1 +\font\twelvesc=ptmrc8t scaled \magstep 1 +\font\twelvesl=ptmro8r scaled \magstep 1 +% +% 14pt +\font\frtrm=ptmr8r scaled \magstep2 +\font\frtbf=ptmb8r scaled \magstep2 +\font\frtit=ptmri8r scaled \magstep2 +\font\frtbi=ptmbi8r scaled \magstep2 +\font\frtsc=ptmrc8t scaled \magstep2 +\font\frtsl=ptmro8r scaled \magstep2 +% +% 17pt +\font\svtrm=ptmr8r scaled \magstep3 +\font\svtbf=ptmb8r scaled \magstep3 +\font\svtit=ptmri8r scaled \magstep3 +\font\svtbi=ptmbi8r scaled \magstep3 +\font\svtsc=ptmrc8t scaled \magstep3 +\font\svtsl=ptmro8r scaled \magstep3 +% +% 20pt +\font\twtyrm=ptmr8r scaled \magstep4 +\font\twtybf=ptmb8r scaled \magstep4 +\font\twtyit=ptmri8r scaled \magstep4 +\font\twtybi=ptmbi8r scaled \magstep4 +\font\twtysc=ptmrc8t scaled \magstep4 +\font\twtysl=ptmro8r scaled \magstep4 +% +% 25pt +\font\twfvrm=ptmr8r scaled \magstep5 +\font\twfvbf=ptmb8r scaled \magstep5 +\font\twfvit=ptmri8r scaled \magstep5 +\font\twfvbi=ptmbi8r scaled \magstep5 +\font\twfvsc=ptmrc8t scaled \magstep5 +\font\twfvsl=ptmro8r scaled \magstep5 +% +% Large fonts for titles +% (If you prefer Times-bold, use ..bf instead of ..rm) +% (If you prefer small-caps, use ..sc instead of ..rm) +\let\bigfont=\frtrm +\let\Bigfont=\svtrm +\let\BIgfont=\twtyrm +\let\BIGfont=\twfvrm +% +% +\font\ppfftwelve=ptmbi8r at 8pt +\font\ppffsixteen=ptmbi8r at 10pt +\font\ppfftwenty=ptmbi8r scaled \magstep 1 +\font\ppfftwentyfour=ptmbi8r scaled \magstep2 +\font\ppfftwentynine=ptmbi8r scaled \magstep3 +% +\def\tinydyn{\let\ppff\tinyppff} +\def\smalldyn{let\ppff\smallppff} +\def\normdyn{\let\ppff\normppff} +\def\meddyn{\let\ppff\medppff} +% +\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}} + +\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 + +\def\smalltype{% + \let\rm\eightrm + \let\bf\eightbf + \let\it\eightit + \let\bi\eightbi + \let\sc\eightsc + \let\sl\eightsl + \rm} +\def\Smalltype{% + \let\rm\ninerm + \let\bf\ninebf + \let\it\nineit + \let\bi\ninebi + \let\sc\ninesc + \let\sl\ninesl + \rm} +\def\normtype{% + \let\rm\tenrm + \let\bf\tenbf + \let\it\tenit + \let\bi\tenbi + \let\sc\tensc + \let\sl\tensl + \rm} +\def\medtype{% + \let\rm\twelverm + \let\bf\twelvebf + \let\it\twelveit + \let\bi\twelvebi + \let\sc\twelvesc + \let\sl\twelvesl + \rm} +\def\bigtype{% + \let\rm\bigfont + \let\bf\bigfont + \let\it\bigfont + \let\bi\bigfont + \let\sc\bigfont + \let\sl\bigfont + \rm} +\def\Bigtype{% + \let\rm\Bigfont + \let\bf\Bigfont + \let\it\Bigfont + \let\bi\Bigfont + \let\sc\Bigfont + \let\sl\Bigfont + \rm} +\def\BIgtype{% + \let\rm\BIgfont + \let\bf\BIgfont + \let\it\BIgfont + \let\bi\Bigfont + \let\sc\Bigfont + \let\sl\Bigfont + \rm} +\def\BIGtype{% + \let\rm\BIGfont + \let\bf\BIGfont + \let\it\BIGfont + \let\bi\BIGfont + \let\sc\BIGfont + \let\sl\BIGfont + \rm} + +% +% PMX changes font assignment in pmx.tex +% \BIGfont=\fontid bx10 scaled\magstep4 +% \Bigfont=\fontid bx10 scaled\magstep2 +%\ifx\pmxversion\undefined\relax\else +% \font\Bigfont=ptmr8r scaled \magstep2 +% \font\BIGfont=ptmr8r scaled \magstep4 +%\fi +% + +\normtype +\endinput +%% +%% History +%% +%% 2001/08/21 +%% first publish +%% 2004/12/24 +%% no functional change. (email & real address change) +%% 2007/06/11 +%% no functional change. (email protection, real address change, URL change) +%% 2008/08/01 +%% Font assignment change on PMX. +%% 2009/10/15 +%% small update for MusiXTeX T.114 final release. +%% 2015/02/06 +%% 8-bit encoding and extensions, similar to musixplt.tex diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/preparing.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/preparing.tex index f139c96c56c..32fa770934e 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/preparing.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/preparing.tex @@ -98,6 +98,13 @@ that \musixtex\ uses it for the predefined progressions. So for example \verb|\def\NOtes{\vnotes5.34\elemskip}| will redefine \verb|\NOtes| in the obvious way, and the extension to the other spacing macros should likewise be obvious. +The following abbreviations may be useful: +\begin{quote} +\begin{tabular}{lcl} + \keyindex{nnotes} &for&\verb|\vnotes1.6\elemskip|\\ + \keyindex{nnnotes} &for&\verb|\vnotes1.28\elemskip| +\end{tabular} +\end{quote} In addition, inside any pair \verb|\notes...\en| there are two equivalent ways to @@ -106,11 +113,6 @@ issuing a command like \verb|\noteskip=2.4\noteskip| or \keyindex{multnoteskip}\verb|{2.4}|, which have the expected effect until the notes group is terminated or \verb|\noteskip| is further redefined. -The following abbreviations may be useful: -\begin{quote} - \keyindex{nnotes} for \verb|\vnotes1.6\elemskip|\\ - \keyindex{nnnotes} for \verb|\vnotes1.28\elemskip| -\end{quote} Finally, by issuing a command like \keyindex{scale}\verb|{2.4}| outside any notes group, you can scale all subsequent \verb|\noteskip|s by any desired factor. @@ -172,7 +174,7 @@ in the table above, it appears that by default \verb|\afterruleskip| is %of \musixtex\ didn't simply define \Bslash{\tt beforeruleskip} and \Bslash{\tt afterruleskip} as %specific multiples of \Bslash{\tt elemskip}}. of \musixtex\ didn't simply define \Bslash\texttt{beforeruleskip} and \Bslash\texttt{afterruleskip} as -specific multiples of \Bslash\texttt{elemskip}}. +specific multiples of \Bslash\texttt{elemskip}.}. Note that if you do want to change any of these values, you have to do so \ital{after} setting the @@ -243,3 +245,29 @@ will receive an error message. You can enter part of a successive voice on the \ital{current} staff. +\section{Automatic Note Spacing} +\label{autosp} + +A preprocessor called \texttt{autosp} automates the generation +of note-spacing commands by converting (non-standard) commands +of the form \verb|\anotes ... \en| into one or more conventional +note-spacing commands, as determined by the note values +themselves, with \verb|\sk| spacing commands inserted as necessary. +The coding for an entire measure can be entered one part at +a time, without concern for note-spacing changes within the +part or spacing requirements of other parts. +For example, from the input +\begin{verbatim} + \anotes\qa J\qa K&\ca l\qa m\ca n\en +\end{verbatim} +\texttt{autosp} generates +\begin{verbatim} + \Notes\qa J\sk\qa K\sk&\ca l\qa m\sk\ca n\en +\end{verbatim} +The \texttt{autosp} package can be found at +the \href{http://icking-music-archive.org/software/autosp/autosp.zip} +{\underline{Werner Icking Music Archive}} +or at +\href{http://mirrors.ctan.org/support/autosp.zip}{\underline{CTAN}} +(the Comprehensive \TeX\ Archive Network). + diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/repeats.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/repeats.tex index ceb45bfc856..6bb6fe340c2 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/repeats.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/repeats.tex @@ -152,15 +152,17 @@ with no argument. Their behavior is illustrated in this example: \end{verbatim}\end{quote} \section{Repeating a single bar} - The special symbol for a single bar repeat is generated by \keyindex{duevolte}, as shown + The special symbol for a single-bar repeat is generated by \keyindex{duevolte}, as shown in the following example: \begin{music} \generalmeter\meterC \setclef1\bass\setstaffs1{2} \startextract -\NOtes\sk\sk\pause|\qa{cegj}\en -\bar\NOtes\qa{cdef}|\sk\hsk\duevolte\en +\NOtes|\qa{cegj}\en +\def\atnextbar{\znotes\centerpause|\en}\bar +\NOtes\qa{cdef}|\en +\def\atnextbar{\znotes|\centerbar{\duevolte}\en}% \endextract \end{music} \noindent whose coding is: @@ -168,11 +170,9 @@ in the following example: \generalmeter\meterC \setclef1\bass\setstaffs1{2} \startextract -\NOtes\sk\sk\pause|\qa{cegj}\en -\bar\NOtes\qa{cdef}|\sk\hsk\duevolte\en +\NOtes|\qa{cegj}\en +\def\atnextbar{\znotes\centerpause|\en}\bar +\NOtes\qa{cdef}|\en +\def\atnextbar{\znotes|\centerbar{\duevolte}\en}% \endextract \end{verbatim}\end{quote} - -\noindent This is often used with \verb|\centerbar| to more easily center the -symbol between bar lines, as shown in the example in Section~\ref{barcentered}. - diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/rests.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/rests.tex index e908e09e955..63109dace2d 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/rests.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/rests.tex @@ -10,8 +10,14 @@ eighth rest \keyindex{ds}, sixteenth rest \keyindex{qs}, $32$nd~rest \keyindex{hs}, and $64$th rest \keyindex{qqs}. Dotted rests may be obtained by using +\keyindex{pausep}, \keyindex{hpausep} or \keyindex{hpp}, \keyindex{qpp}, \keyindex{dsp}, \keyindex{qsp}, -\keyindex{hsp} and \keyindex{qqsp}. +\keyindex{hsp} and \keyindex{qqsp}, +and double-dotted rests by +\keyindex{pausepp}, +\keyindex{hpausepp} or \keyindex{hppp}, \keyindex{qppp}, \keyindex{dspp}, \keyindex{qspp}, +\keyindex{hspp} and \keyindex{qqspp},. + Longer rests, normally interpreted as lasting two or four bars respectively, can be coded as \keyindex{PAuse} @@ -66,15 +72,15 @@ as non-spacing is not obvious}, are \end{itemize} %\check - \section{Bar centered rests}\label{barcentered} -Sometimes it is necessary to place a rest (or any other symbol) exactly in the middle -of a bar. This can be done with combinations of the commands + \section{Bar-centered rests}\label{barcentered} +Sometimes it is necessary to place a rest (or some other symbols) exactly in the middle +of a bar. This can usually be done with combinations of the commands \keyindex{atnextbar}, \keyindex{centerbar}, -\keyindex{centerPAUSe}, -\keyindex{centerPAuse}, -\keyindex{centerpause}, -\keyindex{centerhpause}, +\keyindex{cPAUSe}, +\keyindex{cPAuse}, +\keyindex{cpause}, +\keyindex{chpause}, as demonstrated in the following example: \begin{music} @@ -82,17 +88,14 @@ as demonstrated in the following example: \setclef1\bass \setstaffs1{2} \parindent0pt -\startpiece\addspace\afterruleskip +\startextract \NOtes|\qa{cegj}\en -\def\atnextbar{\znotes\centerpause\en}\bar -\NOtes|\qa{jgec}\en -\def\atnextbar{\znotes\centerpause\en}\bar -\Notes\ca{`jihgfedc}\en -\def\atnextbar{\znotes|\centerpause\en}\bar -\NOTes\ha{Nc}\en -\def\atnextbar{\znotes|\centerpause\en}\bar -\addspace{10\elemskip}% -\def\atnextbar{\znotes\centerbar\duevolte|\centerbar\duevolte\en}\endpiece +\def\atnextbar{\znotes\centerbar{\cpause}|\en}\bar +\NOTes\ha{Nc}|\en +\def\atnextbar{\znotes|\centerbar{\cpause}\en}\bar +\NOTEs|\en +\def\atnextbar{\znotes\centerbar{\cPAuse}|\centerbar{\cPAuse}\en}% +\endextract \end{music} \noindent with the coding \begin{verbatim} @@ -100,15 +103,59 @@ as demonstrated in the following example: \setclef1\bass \setstaffs1{2} \parindent0pt -\startpiece\addspace\afterruleskip +\startextract \NOtes|\qa{cegj}\en -\def\atnextbar{\znotes\centerpause\en}\bar -\NOtes|\qa{jgec}\en -\def\atnextbar{\znotes\centerpause\en}\bar -\Notes\ca{`jihgfedc}\en -\def\atnextbar{\znotes|\centerpause\en}\bar -\NOTes\ha{Nc}\en -\def\atnextbar{\znotes|\centerpause\en}\bar -\addspace{10\elemskip}% -\def\atnextbar{\znotes\centerbar{\duevolte}|\centerbar{\duevolte}\en}\endpiece +\def\atnextbar{\znotes\centerbar{\cpause}|\en}\bar +\NOTes\ha{Nc}|\en +\def\atnextbar{\znotes|\centerbar{\cpause}\en}\bar +\NOTEs|\en +\def\atnextbar{\znotes\centerbar{\cPAuse}|\centerbar{\cPAuse}\en}% +\endextract +\end{verbatim} +The following abbreviations are provided: +\begin{quote} +\begin{tabular}{lcl} +\keyindex{centerpause}& for & \verb|\centerbar{\cpause}|\\ +\keyindex{centerhpause}& for & \verb|\centerbar{\chpause}|\\ +\keyindex{centerPAuse}& for & \verb|\centerbar{\cPAuse}|\\ +\keyindex{centerPAUSe}& for & \verb|\centerbar{\cPAUSe}| +\end{tabular} +\end{quote} +Material other than these rests may be used as arguments to +\verb|\centerbar|, as in:\\ +\begin{music} +\generalmeter\meterC +\parindent0pt +\startextract +\NOtes\ql{ghij}\en +\def\atnextbar{\znotes\centerbar{\liftpause2}\en}\bar +\NOTes\en +\def\atnextbar{\znotes\centerbar{\duevolte}\en}\bar +\NOTes\en +\def\atnextbar{\znotes\loffset{0.6}{\centerbar{\Fermataup l\wh j}}\en}\bar +\NOTEs\en\def\atnextbar{\znotes\centerbar{\ccn{9}{\meterfont7}}% +\centerbar{\cPAUSe\off{2.5\elemskip}\cPAuse\off{2.5\elemskip}\cpause}\en}\bar +\NOTEs\Hpause4{0.83}\en +\def\atnextbar{\znotes\centerbar{\ccn{9}{\meterfont10}}\en}\endextract +\end{music} +\noindent for which the coding is: +\pagebreak% +\begin{verbatim} +\generalmeter\meterC +\parindent0pt +\startextract +\NOtes\ql{ghij}\en +\def\atnextbar{\znotes\centerbar{\liftpause2}\en}\bar +\NOTes\en +\def\atnextbar{\znotes\centerbar{\duevolte}\en}\bar +\NOTes\en +\def\atnextbar{\znotes\loffset{0.6}{\centerbar{\Fermataup l\wh j}}\en}\bar +\NOTEs\en\def\atnextbar{\znotes\centerbar{\ccn{9}{\meterfont7}}% +\centerbar{\cPAUSe\off{2.5\elemskip}\cPAuse\off{2.5\elemskip}\cpause}\en}\bar +\NOTEs\Hpause4{0.83}\en +\def\atnextbar{\znotes\centerbar{\ccn{9}{\meterfont10}}\en}\endextract \end{verbatim} +Note that, for the off-center command +\verb|\wh|\ldots, +it has been necessary to use \keyindex{loffset} to correct the centering. + diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/summary.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/summary.tex index 0b5675f9ffe..69e8ded7f2f 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/summary.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/summary.tex @@ -222,25 +222,25 @@ number instead of the pitch}% % \nostartrule \contpiece -\NOtes - \zchar{14}{\bs Trille}\zchar{-4}{\bs allabreve}\Trille n1% - \zchar0\allabreve\sk - \zchar{14}{\bs trille}\zchar{-8}{\bs meterC}\trille n1\zchar0\meterC\sk +\Notes\multnoteskip{0.25}\zchar{-4}{\bs allabreve}% + \zchar{14}{\bs tr}\tr n% + \zchar0\allabreve\qqsk + \zchar{14}{\bs Trille}\Trille n{0.9}\sk + \zchar{14}{\bs trille}\zchar{-4}{\bs meterC}\trille n{0.9}\zchar0\meterC\sk \zchar{14}{\bs shake}\zchar{-4}{\bs reverseC}\shake n\zchar0\reverseC\sk \zchar{14}{\bs Shake}\zchar{-8}{\bs reverseallabreve}\Shake n% - \zchar0\reverseallabreve\sk - \zchar{14}{\bs mordent}\mordent n\sk + \zchar0\reverseallabreve\hqsk + \zchar{18}{\bs mordent}\mordent n\hqsk \zchar{14}{\bs Mordent}\Mordent n\zchar{-4}{\bs meterplus}% - \zchar0{\meterfrac{3\meterplus2\meterplus3}8}\sk -\multnoteskip{.66}% - \zchar{14}{\bs turn}\turn n\sk -\multnoteskip{1.5}% - \zchar{18}{\bs backturn}\backturn n\zchar{-4}{\bs duevolte}\duevolte\sk + \zchar0{\meterfrac{3\meterplus2\meterplus3}8}\hqsk + \zchar{18}{\bs turn}\turn n\hqsk + \zchar{18}{\bs backturn}\backturn n\zchar{-4}{\bs duevolte}\duevolte\hqsk \zchar{14}{\bs Shakel}\Shakel n\sk \zchar{18}{\bs Shakesw}\Shakesw n\zchar{-4}{\bs l[r]par}% \lpar f\rpar f{\stemlength4\qu f}% \zchar{14}{\bs Shakene}\Shakene n\sk - \zchar{18}{\bs Shakenw}\Shakenw n\sk\en + \zchar{18}{\bs Shakenw}\Shakenw n\sk + \zchar{14}{\bs trt}\trt n\hqsk\en \stoppiece % % again diff --git a/Master/texmf-dist/doc/generic/musixtex/reference/musixre1.pdf b/Master/texmf-dist/doc/generic/musixtex/reference/musixre1.pdf Binary files differindex 52b23d85812..0ba557279d9 100644 --- a/Master/texmf-dist/doc/generic/musixtex/reference/musixre1.pdf +++ b/Master/texmf-dist/doc/generic/musixtex/reference/musixre1.pdf diff --git a/Master/texmf-dist/scripts/musixtex/musixtex.lua b/Master/texmf-dist/scripts/musixtex/musixtex.lua index 3d7b2a08f74..2add6751408 100755 --- a/Master/texmf-dist/scripts/musixtex/musixtex.lua +++ b/Master/texmf-dist/scripts/musixtex/musixtex.lua @@ -1,11 +1,11 @@ #!/usr/bin/env texlua -VERSION = "0.9" +VERSION = "0.10" --[[ musixtex.lua: processes MusiXTeX files (and deletes intermediate files) - (c) Copyright 2012-14 Bob Tennent rdt@cs.queensu.ca + (c) Copyright 2012-15 Bob Tennent rdt@cs.queensu.ca 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 @@ -26,6 +26,9 @@ VERSION = "0.9" --[[ ChangeLog: + version 0.10 2015-04-23 RDT + Add -a option to preprocess using autosp + version 0.9 2015-02-13 RDT Add an additional latex pass to resolve cross-references. Add -e0 option to dvips as given in musixdoc.tex @@ -70,6 +73,7 @@ function usage() print(" -1 one-pass [pdf][la]tex processing") print(" -F fmt use fmt as the TeX processor") print(" -x run makeindex") + print(" -a preprocess using autosp") print(" -f restore default processing") end @@ -92,6 +96,7 @@ ps2pdf = "ps2pdf" intermediate = 1 passes = 2 index = 0 +preprocess = 0 exit_code = 0 narg = 1 @@ -124,22 +129,41 @@ repeat elseif this_arg == "-1" then passes = 1 elseif this_arg == "-f" then - tex = "etex"; dvi = dvips; ps2pdf = "ps2pdf"; intermediate = 1; passes = 2; index = 0 + tex = "etex"; dvi = dvips; ps2pdf = "ps2pdf"; intermediate = 1; passes = 2; index = 0; preprocess = 0 elseif this_arg == "-g" then dvi = dvips; ps2pdf = "" elseif this_arg == "-x" then index = 1 + elseif this_arg == "-a" then + preprocess = 1 elseif this_arg == "-F" then narg = narg+1 tex = arg[narg] else - filename = this_arg - if filename ~= "" and string.sub(filename, -4, -1) == ".tex" then - filename = string.sub(filename, 1, -5) - end - if not io.open(filename .. ".tex", "r") then - print("Non-existent file: ", filename .. ".tex") - else + repeat -- pseudo loop to get effect of "continue" using "break" + filename = this_arg + if preprocess == 1 then + if filename ~= "" and string.sub(filename, -5, -1) == ".aspc" then + filename = string.sub(filename, 1, -6) + end + if not io.open(filename .. ".aspc", "r") then + print("Non-existent file: ", filename .. ".aspc") + break -- out of pseudo loop + end + print("Processing ".. filename .. ".aspc.") + if (os.execute("autosp " .. filename ) ~= 0) then + print ("Preprocessing fails.") + break -- out of pseudo loop + end + else -- preprocess == 0 + if filename ~= "" and string.sub(filename, -4, -1) == ".tex" then + filename = string.sub(filename, 1, -5) + end + end + if not io.open(filename .. ".tex", "r") then + print("Non-existent file: ", filename .. ".tex") + break -- out of pseudo loop + end print("Processing ".. filename .. ".tex.") os.remove( filename .. ".mx2" ) if (passes == 1 or os.execute(tex .. " " .. filename) == 0) and @@ -179,8 +203,8 @@ repeat print("ps2pdf = ", ps2pdf) --]] end + until true -- end of pseudo loop - end --if not io.open ... end --if this_arg == ... narg = narg+1 until narg > #arg diff --git a/Master/texmf-dist/tex/generic/musixtex/musixhv.tex b/Master/texmf-dist/tex/generic/musixtex/musixhv.tex index 4e64d67951c..aea62833bb7 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixhv.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixhv.tex @@ -23,7 +23,7 @@ % % Copyright 2015 Bob Tennent rdt@cs.queensu.ca % -\immediate\write16{MusiXhv\space<2015/02/24>} +\immediate\write16{MusiXhv\space<2015/05/04>} % % 7pt "Roman" (sans serif), bold, "italic" (oblique), "bold-italic" (bold-oblique), and small-cap \font\sevenrm=phvr8r at 7pt @@ -113,14 +113,16 @@ \let\BIGfont=\twfvrm % % +\font\ppfftwelve=phvbo8r at 8pt \font\ppffsixteen=phvbo8r at 10pt \font\ppfftwenty=phvbo8r at 12pt \font\ppfftwentyfour=phvbo8r at 14pt \font\ppfftwentynine=phvbo8r at 17pt -\font\tinyppff=phvbo8r at 8pt -\font\smallppff=phvbo8r at 10pt -\font\normppff=phvbo8r at 12pt -\font\medppff=phvbo8r at 14pt +% +\def\tinydyn{\let\ppff\tinyppff} +\def\smalldyn{let\ppff\smallppff} +\def\normdyn{\let\ppff\normppff} +\def\meddyn{\let\ppff\medppff} % \def\f{{\ppff f}} \def\ff{{\ppff ff}} @@ -135,10 +137,6 @@ \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 % -\def\smalldyn{\let\ppff\smallppff \let\p@@f\ppff}% -\def\normdyn{\let\ppff\normppff \let\p@@f\ppff}% -\def\meddyn{\let\ppff\medppff \let\p@@f\ppff}% -% \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}} diff --git a/Master/texmf-dist/tex/generic/musixtex/musixplt.tex b/Master/texmf-dist/tex/generic/musixtex/musixplt.tex index 89e77db5a2d..e56f88833bf 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixplt.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixplt.tex @@ -23,7 +23,7 @@ % % Copyright 2015 Bob Tennent rdt@cs.queensu.ca % -\immediate\write16{MusiXplt\space<2015/02/23>} +\immediate\write16{MusiXplt\space<2015/05/04>} % % 7pt roman, bold, italic, bold italic, slanted and small-cap \font\sevenrm=pplr8r at 7pt @@ -114,15 +114,17 @@ \let\BIGfont=\twfvsc % % +\font\ppfftwelve=pplbi8r at 8pt \font\ppffsixteen=pplbi8r at 10pt \font\ppfftwenty=pplbi8r at 12pt \font\ppfftwentyfour=pplbi8r at 14pt \font\ppfftwentynine=pplbi8r at 17pt -\font\tinyppff=pplbi8r at 8pt -\font\smallppff=pplbi8r at 10pt -\font\normppff=pplbi8r at 12pt -\font\medppff=pplbi8r at 14pt % +\def\tinydyn{\let\ppff\tinyppff} +\def\smalldyn{let\ppff\smallppff} +\def\normdyn{\let\ppff\normppff} +\def\meddyn{\let\ppff\medppff} + \def\f{{\ppff f}} \def\ff{{\ppff ff}} \def\fp{{\ppff fp}} @@ -136,10 +138,6 @@ \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 % -\def\smalldyn{\let\ppff\smallppff \let\p@@f\ppff}% -\def\normdyn{\let\ppff\normppff \let\p@@f\ppff}% -\def\meddyn{\let\ppff\medppff \let\p@@f\ppff}% -% \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}} diff --git a/Master/texmf-dist/tex/generic/musixtex/musixppff.tex b/Master/texmf-dist/tex/generic/musixtex/musixppff.tex index bfdf8ae638b..e547fea6e6f 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixppff.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixppff.tex @@ -12,18 +12,25 @@ %% ... %% %% -\immediate\write16{MusiXppff \noexpand\ppff font replacement <2015/02/23>}% +\immediate\write16{MusiXppff \noexpand\ppff font replacement <2015/05/04>}% \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}}% @@ -57,8 +64,6 @@ \let\meternorfont\tenbf \let\metersmallfont\eightbf % T116 RDT \let\meterbigfont\twelvebf \let\meterlargefont\frtbf \let\meterLargefont\svtbf - \let\ppff\ppffsixteen - \let\xppff\xppffsixteen \else\ifnum\musicsize=\@xxiv \let\musicLargefont\musictwentynine \let\musiclargefont\musictwentynine @@ -75,8 +80,6 @@ \let\meternorfont\frtbf \let\metersmallfont\twelvebf % T116 RDT \let\meterbigfont\svtbf \let\meterlargefont\twtybf \let\meterlargefont\twfvbf - \let\ppff\ppfftwentyfour - \let\xppff\xppfftwentyfour \else\ifnum\musicsize=\@xxix \let\musicLargefont\musictwentynine \let\musiclargefont\musictwentynine @@ -95,8 +98,6 @@ \let\meternorfont\svtbf \let\metersmallfont\frtbf % T116 RDT \let\meterbigfont\twtybf \let\meterlargefont\twfvbf \let\meterLargefont\twfvbf - \let\ppff\ppfftwentynine - \let\xppff\xppfftwentynine \else \ifnum\musicsize=\tw@nty \else\ifnum\musicsize=\z@ @@ -119,14 +120,13 @@ \let\meternorfont\twelvebf \let\metersmallfont\tenbf % T116 RDT \let\meterbigfont\frtbf \let\meterlargefont\svtbf \let\meterLargefont\twtybf - \let\ppff\ppfftwenty - \let\xppff\xppfftwenty \fi\fi\fi }% % -\def\smalldyn{\let\ppff\smallppff\let\xppff\smallxppff\let\p@@f\ppff}% -\def\normdyn{\let\ppff\normppff\let\xppff\normxppff\let\p@@f\ppff}% -\def\meddyn{\let\ppff\medppff\let\xppff\medxppff\let\p@@f\ppff}% +\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}% \catcode`\@=\catcodeat diff --git a/Master/texmf-dist/tex/generic/musixtex/musixtex.tex b/Master/texmf-dist/tex/generic/musixtex/musixtex.tex index fedf981ab04..c6e5135a7db 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixtex.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixtex.tex @@ -25,15 +25,26 @@ \def\mufl@x{0.83}% \def\mxmajorvernumber{1} -\def\mxminorvernumber{16} +\def\mxminorvernumber{17} \def\mxvernumber{\mxmajorvernumber\mxminorvernumber}% make it possible to compare with \ifnum \def\mxversuffix{}% \edef\mxversion{\mxmajorvernumber.\mxminorvernumber\mxversuffix} -\def\mxdate{2015-04-21} +\def\mxdate{2015-05-25} \immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}% \everyjob{\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}}% +% T117: + +% 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. + % T116: % RDT corrected the definitions of \nnotes and \nnnotes @@ -537,109 +548,109 @@ % Seven point fonts: roman, bold, and italic. %% -\ifx\undefined\sevenrm +%\ifx\undefined\sevenrm % T117 RDT unconditional font definitions \font\sevenrm=cmr7 \font\sevenbf=cmbx7 \font\sevenit=cmti7 -\fi +%\fi %% % Eight point fonts: roman, bold, and italic; tt and sl needed for musixsty %% -\ifx\undefined\eightrm +%\ifx\undefined\eightrm \font\eightrm=cmr8 \font\eightbf=cmbx8 \font\eightit=cmti8 \font\eighttt=cmtt8 \font\eightsl=cmsl8 -\fi +%\fi %% % Nine point fonts %% -\ifx\undefined\ninerm +%\ifx\undefined\ninerm \font\ninerm=cmr9 \font\ninebf=cmbx9 \font\nineit=cmti9 \font\ninett=cmtt9 \font\ninesl=cmsl9 -\fi +%\fi %% % Ten point fonts %% -\ifx\undefined\tenrm +%\ifx\undefined\tenrm \font\tenrm=cmr10 \font\tenbf=cmbx10 \font\tenit=cmti10 \font\tentt=cmtt10 \font\tensl=cmsl10 -\fi +%\fi %% % Eleven point fonts %% -\ifx\undefined\elevenrm +%\ifx\undefined\elevenrm \font\elevenrm=cmr9 scaled \magstephalf \font\elevenbf=cmbx9 scaled \magstephalf \font\elevenit=cmti9 scaled \magstephalf \font\eleventt=cmtt9 scaled \magstephalf \font\elevensl=cmsl9 scaled \magstephalf -\fi +%\fi %% % Twelve point fonts %% -\ifx\undefined\twelverm +%\ifx\undefined\twelverm \font\twelverm=cmr12 \font\twelvebf=cmbx12 \font\twelveit=cmti12 \font\twelvett=cmtt12 \font\twelvesl=cmsl12 -\fi +%\fi % 14pt: roman, bold, italic and small caps; tt and sl needed for musixsty -\ifx\undefined\frtrm +%\ifx\undefined\frtrm \font\frtrm=cmr12 scaled \magstep1 \font\frtbf=cmbx12 scaled \magstep1 \font\frtit=cmti12 scaled \magstep1 \font\frtsc=cmcsc10 scaled \magstep2 \font\frttt=cmtt12 scaled \magstep1 \font\frtsl=cmsl12 scaled \magstep1 -\fi +%\fi % % 17pt -\ifx\undefined\svtrm +%\ifx\undefined\svtrm \font\svtrm=cmr12 scaled \magstep2 \font\svtbf=cmbx12 scaled \magstep2 \font\svtit=cmti12 scaled \magstep2 \font\svtsc=cmcsc10 scaled \magstep3 \font\svttt=cmtt12 scaled \magstep2 -\fi +%\fi % % 20pt -\ifx\undefined\twtyrm +%\ifx\undefined\twtyrm \font\twtyrm=cmr12 scaled \magstep3 \font\twtybf=cmbx12 scaled \magstep3 \font\twtyit=cmti12 scaled \magstep3 \font\twtysc=cmcsc10 scaled \magstep4 \font\twtytt=cmtt12 scaled \magstep3 \font\twtysl=cmsl12 scaled \magstep3 -\fi +%\fi % % 25pt -\ifx\undefined\twfvrm +%\ifx\undefined\twfvrm \font\twfvrm=cmr12 scaled \magstep4 \font\twfvbf=cmbx12 scaled \magstep4 \font\twfvit=cmti12 scaled \magstep4 \font\twfvsc=cmcsc10 scaled \magstep5 \font\twfvtt=cmtt12 scaled \magstep4 \font\twfvsl=cmsl12 scaled \magstep4 -\fi +%\fi % % Large fonts for titles % (If you prefer Roman, use ..rm instead of ..bf) @@ -699,17 +710,22 @@ % Bold italic fonts for dynamic markings. %% +\font\ppfftwelve=cmbxti10 at 8pt % T117 RDT \font\ppffsixteen=cmbxti10 \font\ppfftwenty=cmbxti10 scaled \magstep1 \font\ppfftwentyfour=cmbxti10 scaled \magstep2 \font\ppfftwentynine=cmbxti10 scaled \magstep3 -\font\smallppff=cmbxti10 -\font\normppff=cmbxti10 scaled \magstep1 -\font\medppff=cmbxti10 scaled \magstep2 -\def\smalldyn{\let\ppff\smallppff\let\p@@f\ppff} -\def\normdyn{\let\ppff\normppff\let\p@@f\ppff} -\def\meddyn{\let\ppff\medppff\let\p@@f\twelveit} +\def\ppff{\ifdim\internote<\p@seven6\Internote\tinyppff% T117 RDT +\else\ifdim\internote<.95\Internote\smallppff% +\else\ifdim\internote<1.19\Internote\normppff% +\else\medppff\fi\fi\fi}% + +\def\tinydyn{\let\ppff\tinyppff} % T117 RDT +\def\smalldyn{let\ppff\smallppff} +\def\normdyn{\let\ppff\normppff} +\def\meddyn{\let\ppff\medppff} + \font\musiceleven=musix11 \font\musicthirteen=musix13 @@ -1547,7 +1563,10 @@ \let\meternorfont\tenbf \let\metersmallfont\eightbf % T116 RDT \let\meterbigfont\twelvebf \let\meterlargefont\frtbf \let\meterLargefont\svtbf - \let\ppff\ppffsixteen + \let\tinyppff\ppfftwelve % T117 RDT + \let\smallppff\ppfftwelve + \let\normppff\ppffsixteen + \let\medppff\ppfftwenty \else\ifnum\musicsize=\@xxiv \let\musicLargefont\musictwentynine \let\musiclargefont\musictwentynine @@ -1564,7 +1583,10 @@ \let\meternorfont\frtbf \let\metersmallfont\twelvebf % T116 RDT \let\meterbigfont\svtbf \let\meterlargefont\twtybf \let\meterlargefont\twfvbf - \let\ppff\ppfftwentyfour + \let\tinyppff\ppffsixteen % T117 RDT + \let\smallppff\ppfftwenty + \let\normppff\ppfftwentyfour + \let\medppff\ppfftwentynine \else\ifnum\musicsize=\@xxix \let\musicLargefont\musictwentynine \let\musiclargefont\musictwentynine @@ -1583,8 +1605,11 @@ \let\meternorfont\svtbf \let\metersmallfont\frtbf % T116 RDT \let\meterbigfont\twtybf \let\meterlargefont\twfvbf \let\meterLargefont\twfvbf - \let\ppff\ppfftwentynine - \else + \let\tinyppff\ppfftwenty % T117 RDT + \let\smallppff\ppfftwentyfour + \let\normppff\ppfftwentynine + \let\medppff\ppfftwentynine +\else \ifnum\musicsize=\tw@nty \else\ifnum\musicsize=\z@ \else\errmessage{\noexpand\musicsize=\the\musicsize\space not supported, @@ -1606,10 +1631,11 @@ \let\meternorfont\twelvebf \let\metersmallfont\tenbf % T116 RDT \let\meterbigfont\frtbf \let\meterlargefont\svtbf \let\meterLargefont\twtybf - \let\ppff\ppfftwenty - \fi\fi\fi -}% - + \let\tinyppff\ppfftwelve % T117 RDT + \let\smallppff\ppffsixteen + \let\normppff\ppfftwenty + \let\medppff\ppfftwentyfour +\fi\fi\fi}% \def\comput@specifics{\comput@fonts\comput@sizes} @@ -3386,6 +3412,15 @@ \def\tqu{\q@symbol\@tqh} % T116 RDT \def\tqb{\q@symbol\@tqb} \def\tql{\q@symbol\@tqb} % T116 RDT +\def\tqqh#1#2{\tbbu{#1}\tqh{#1}{#2}} % T117 RDT +\def\tqqu#1#2{\tbbu{#1}\tqu{#1}{#2}} % T117 RDT +\def\tqqb#1#2{\tbbl{#1}\tqb{#1}{#2}} % T117 RDT +\def\tqql#1#2{\tbbl{#1}\tql{#1}{#2}} % T117 RDT +\def\tqqqh#1#2{\tbbbu{#1}\tqqh{#1}{#2}} % T117 RDT +\def\tqqqu#1#2{\tbbbu{#1}\tqqu{#1}{#2}} % T117 RDT +\def\tqqqb#1#2{\tbbbl{#1}\tqqb{#1}{#2}} % T117 RDT +\def\tqqql#1#2{\tbbbl{#1}\tqql{#1}{#2}} % T117 RDT + \def\ztqh{\advancefalse\q@symbol\@tqh} \def\ztqu{\advancefalse\q@symbol\@tqh} % T116 RDT \def\ztqb{\advancefalse\q@symbol\@tqb} @@ -3719,19 +3754,23 @@ \ifodd\n@i \else\advance\n@i#1\fi \pl@base \raise\y@i\hbox{\musixchar#2}\fi\fi} -%%% rests +%%% 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}% + \kern-\h@lf\y@ii\lrlap{#1}\kern\h@lf\y@ii}% + -\def\centerPAUSe{\centerbar\PAUSe} -\def\centerPAuse{\centerbar\PAuse} -%\def\centerpause{\let\adv@box\hbox \centerbar\pause} -%\def\centerhpause{\let\adv@box\hbox \centerbar\hpause} -\def\centerpause{\centerbar\pause} -\def\centerhpause{\centerbar\hpause} +\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\centerpause{\centerbar{\cpause}} +\def\centerhpause{\centerbar{\chpause}} +\def\centerPAuse{\centerbar{\cPAuse}} +\def\centerPAUSe{\centerbar{\cPAUSe}} \def\C@ps#1#2#3{\n@viii#3\multiply\n@viii\tw@ \advance\n@viii#2\raise\n@viii\internote \hbox{\musixchar#1}} @@ -3747,16 +3786,15 @@ \def\pause{\check@staff \adv@box{\raise\si@\internote\hbox{\musixchar61}}\fi} -\def\pausep{%\check@staff - \wholeshift{\pt5}\pause} +\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{%\check@staff - \wholeshift{\pt5}\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} @@ -3780,7 +3818,17 @@ \def\hsp{\adv@restbox{\check@staff\pt5\musixchar65\fi}} \def\qqsp{\adv@restbox{\check@staff\pt5\musixchar66\fi}} -\let\hpp\hpausep +% double-dotted rests T117 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}} + %%% accidentals @@ -3919,6 +3967,8 @@ \def\mordent{\n@iv89\@Char} \def\Mordent{\n@iv119\@Char} \def\doublethumb{\n@iv121\@Char} +\def\tr#1{\zcn{#1}{\ppff tr}} +\def\trt#1{\loffset{0.65}{\shake{#1}}\roffset{0.65}{\mordent{#1}}} %%% accents @@ -4149,7 +4199,7 @@ %%% octave lines \def\octnumberup{\octnumberdefault\vrule width 0pt height2ex} -\def\octnumberdefault{\ppffsixteen8} +\def\octnumberdefault{\smallppff8} % T117 RDT \def\octnumberdown{\octnumberdefault$^a$\txtfont\kern 0.3em bassa\vrule width 0pt depth \Internote} \def\octfinup{\check@staff @@ -4251,12 +4301,17 @@ \def\metronequiv#1#2{{\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2 1}} -\def\txtfont{\eightit} % T116 RDT +\def\txtfont{% % T117 RDT +\ifdim\internote<.95\Internote \sevenit +\else\ifdim\internote<1.19\Internote \eightit +\else\ifdim\internote<1.43\Internote \tenit +\else\twelveit\fi\fi\fi} + \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{\xtuplet3} +\def\triolet{\xtuplet\txt} % T117 RDT % % Following definitions based on tuplet.tex - conventional tuplet brackets for MusiXTeX. diff --git a/Master/texmf-dist/tex/generic/musixtex/musixtmr.tex b/Master/texmf-dist/tex/generic/musixtex/musixtmr.tex index ce99403f0d3..572320ae41d 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixtmr.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixtmr.tex @@ -20,7 +20,7 @@ %% %% History: see trailer. % -\immediate\write16{MusiXTimesFonts\space<2015/02/23>} +\immediate\write16{MusiXTimesFonts\space<2015/05/04>} % % 8pt roman, bold, italic, bold italic, slanted and small-cap \font\eightrm=ptmr8r at 8pt @@ -104,14 +104,16 @@ \let\BIGfont=\twfvrm % % +\font\ppfftwelve=ptmbi8r at 8pt \font\ppffsixteen=ptmbi8r at 10pt \font\ppfftwenty=ptmbi8r scaled \magstep 1 \font\ppfftwentyfour=ptmbi8r scaled \magstep2 \font\ppfftwentynine=ptmbi8r scaled \magstep3 -\font\tinyppff=ptmbi8r at 8pt -\font\smallppff=ptmbi8r at 10pt -\font\normppff=ptmbi8r scaled \magstep 1 -\font\medppff=ptmbi8r scaled \magstep2 +% +\def\tinydyn{\let\ppff\tinyppff} +\def\smalldyn{let\ppff\smallppff} +\def\normdyn{\let\ppff\normppff} +\def\meddyn{\let\ppff\medppff} % \def\f{{\ppff f}} \def\ff{{\ppff ff}} @@ -126,10 +128,6 @@ \edef\catcodeat{\the\catcode`\@}\catcode`\@=11 % -\def\smalldyn{\let\ppff\smallppff \let\p@@f\ppff}% -\def\normdyn{\let\ppff\normppff \let\p@@f\ppff}% -\def\meddyn{\let\ppff\medppff \let\p@@f\ppff}% -% \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}} |