diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/musictex')
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicadd.tex | 111 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicdoc.tex | 4118 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicext.tex | 225 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicnew.tex | 28 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicnft.tex | 938 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicper.tex | 227 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicpln.tex | 298 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicpos.tex | 43 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicpre.tex | 64 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicref.tex | 88 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicsix.tex | 11 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicsty.tex | 368 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musictex.tex | 2440 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musictrp.tex | 175 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musictex/musicvbm.tex | 94 |
15 files changed, 9228 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/musictex/musicadd.tex b/Master/texmf-dist/tex/generic/musictex/musicadd.tex new file mode 100644 index 00000000000..5867fb8165a --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicadd.tex @@ -0,0 +1,111 @@ +% +% MUSICADD.TEX version 4.81 October 1992 +\message{Version 5.02 -- February 28th, 1994}% +% +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 +\edef\catcode@gt{\the\catcode`\>}\catcode`\>=12 +\edef\catcode@lt{\the\catcode`\<}\catcode`\<=12 +% +\newcount\t@wvii +\newcount\t@wviii +\newcount\t@wix +\newcount\t@pvii\newcount\t@svii +\newcount\t@pviii\newcount\t@sviii +\newcount\t@pix\newcount\t@six +\newcount\t@px\newcount\t@sx +\newdimen\b@xvii\newdimen\b@zvii +\newdimen\b@xviii\newdimen\b@zviii +\newdimen\b@xix\newdimen\b@zix +\newdimen\b@xx\newdimen\b@zx +\newdimen\bb@xvii\newdimen\bb@zvii +\newdimen\bb@xviii\newdimen\bb@zviii +\newdimen\bb@xix\newdimen\bb@zix +\newdimen\bb@xx\newdimen\bb@zx +\newdimen\bbb@xvii\newdimen\bbb@zvii +\newdimen\bbb@xviii\newdimen\bbb@zviii +\newdimen\bbb@xix\newdimen\bbb@zix +\newdimen\bbb@xx\newdimen\bbb@zx +\newdimen\bbbb@zvii +\newdimen\bbbb@zviii +\newdimen\bbbb@zix +\newdimen\bbbb@zx +\newdimen\bbbbb@zvii +\newdimen\bbbbb@zviii +\newdimen\bbbbb@zix +\newdimen\bbbbb@zx +\newcount\b@pvii\newcount\b@nvii +\newcount\b@pviii\newcount\b@nviii +\newcount\b@pix\newcount\b@nix +\newcount\b@px\newcount\b@nx +\newcount\nbporteesvii +\newcount\nbporteesviii +\newcount\nbporteesix +% +\def\stafflinesnbvii{5} +\def\stafflinesnbviii{5} +\def\stafflinesnbix{5} +% +\def\clefdutvii{\clefdutsymbol} +\def\clefdutviii{\clefdutsymbol} +\def\clefdutix{\clefdutsymbol} +% +\def\clefdefavii{\clefdefasymbol} +\def\clefdefaviii{\clefdefasymbol} +\def\clefdefaix{\clefdefasymbol} +% +\def\clefdesolvii{\clefdesolsymbol}% +\def\clefdesolviii{\clefdesolsymbol}% +\def\clefdesolix{\clefdesolsymbol}% +% +\newcount\signvii +\newcount\signviii +\newcount\signix +% +\newcount\o@signvii +\newcount\o@signviii +\newcount\o@signix +% +\newtoks\cleftoksvii +\newtoks\cleftoksviii +\newtoks\cleftoksix +% +\newtoks\o@cksvii +\newtoks\o@cksviii +\newtoks\o@cksix +% +\newtoks\tempotoksvii +\newtoks\tempotoksviii +\newtoks\tempotoksix +% +\def\instrumentvii{}% +\def\instrumentviii{}% +\def\instrumentix{}% +% +\global\nbporteesvii=1\relax +\global\nbporteesviii=1\relax +\global\nbporteesix=1\relax +% +\global\cleftoksvii={{0}{0}{0}{0}}\relax +\global\cleftoksviii={{0}{0}{0}{0}}\relax +\global\cleftoksix={{0}{0}{0}{0}}\relax +% +\newtoks\metertoksvii +\newtoks\metertoksviii +\newtoks\metertoksix +% +\global\metertoksvii={{0}{0}{0}{0}}\relax +\global\metertoksviii={{0}{0}{0}{0}}\relax +\global\metertoksix={{0}{0}{0}{0}}\relax +% +\def\maxlegatenuti{9} +% +\newdimen\t@xvii\newdimen\t@zvii +\newdimen\t@xviii\newdimen\t@zviii +\newdimen\t@xix\newdimen\t@zix +\newdimen\t@xx\newdimen\t@zx + + +\catcode`\>=\catcode@gt +\catcode`\<=\catcode@lt +\catcode`\@=\catcodeat + diff --git a/Master/texmf-dist/tex/generic/musictex/musicdoc.tex b/Master/texmf-dist/tex/generic/musictex/musicdoc.tex new file mode 100644 index 00000000000..6a8db08dd6f --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicdoc.tex @@ -0,0 +1,4118 @@ +\documentstyle[twoside,multicol,musictex,musictrp,musicper,a4report,11pt]{report} + +\def\hboxit#1{\hbox{\vrule\vbox{\hrule\kern3pt + \hbox{\kern3pt\small\it #1\kern3pt}\kern3pt\hrule}\vrule}} +% +\def\tty{\csname normalshape\endcsname\csname mediumseries\endcsname\tt} +% +\def\text#1{\leavevmode\hbox{\rm #1}}% +%\check +\def\ital#1{{\sl #1\/}}% +\def\mutex{M\raise 2pt\hbox{\kern -1pt u\kern -1pt}\TeX} +\def\bslash{{\tty\char'134}}% +\def\unix{{\sc unix}}% +\def\Bslash{\tty\char'134}% +\def\|{{\tty\char'174}}% +\def\#{{\tty\char'043}}% +\def\{{{\char'173}}% +\def\}{{\char'175}}% +\def\musictex{Music\TeX}% +\def\musixtex{MusiX\TeX}% +\def\musicxx{\musictwenty} +\def\keyindex#1{\leavevmode + \hbox{\tty\bslash #1}\index{#1=\protect\tty\protect\bslash #1}} +\def\zkeyindex#1{\index{#1=\protect\tty\protect\bslash #1}} +\def\ixem#1{#1\index{#1}} +\def\itxem#1{\ital{#1}\index{#1}} +\def\aujourdhui{\today} +% +%\check +\tracingstats=1 +% +%%%% \input musicext : extracting the wanted macro + +\makeatletter + +\def\tmp@dimenb{\y@ii} +\newdimen\tmp@dimen +% \overbracket{p}{l}{s} draws a bracket over the music starting at the +% current position at pitch p, width l and slope s percent, causing no space. +\def\overbracket#1#2#3{\relax % height (note), length (dimen) slope (%) + \tmp@dimenb #2\multiply\tmp@dimenb by#3\divide\tmp@dimenb by100\relax + \getn@i{#1}\advance\tmp@dimenb by\n@i\internote\rlap{\relax + \raise\n@i\internote\rlap{\vrule width\lthick height \lthick + depth .8\Interligne}\oblique{#2}{#3}{\n@i\internote}\relax + \advance\tmp@dimenb by.5\lthick\relax + \raise\tmp@dimenb\hbox{\vrule width\lthick height \lthick + depth.8\Interligne}}} + +% \ovbkt{p}{n}{s} is the same as \overbracket, except that it draws the +% bracket to cover n notes (note however that glue inserted by \temps +% commands will expand the space between the notes but will not affect the +% bracket). +% I use this macro to indicate triplets, for instance. + +\def\ovbkt#1#2#3{\relax % height (note), length (number of notes) slope (%) + \tmp@dimen #2\noteskip\advance\tmp@dimen by\wd@skip\advance\tmp@dimen + by -\noteskip\advance\tmp@dimen by\lthick \overbracket{#1}{\tmp@dimen}{#3}} + +% \underbracket and \unbkt are similar to the above, but produce +% brackets under the music. +\def\underbracket#1#2#3{\relax % height (note), length (dimen) slope (%) + \tmp@dimenb #2\multiply\tmp@dimenb by#3\divide\tmp@dimenb by100\relax + \getn@i{#1}\advance\tmp@dimenb by\n@i\internote\rlap{\relax + \raise\n@i\internote\rlap{\vrule width\lthick depth -\lthick + height \Interligne}\oblique{#2}{#3}{\n@i\internote}\relax + \advance\tmp@dimenb by.5\lthick\relax + \raise\tmp@dimenb\hbox{\vrule width\lthick depth -\lthick + height\Interligne}}} +\def\unbkt#1#2#3{\relax % height (note), length (number of notes) slope (%) + \tmp@dimen #2\noteskip\advance\tmp@dimen by\wd@skip\advance\tmp@dimen + by -\noteskip\advance\tmp@dimen by\lthick + \kern-2\lthick\underbracket{#1}{\tmp@dimen}{#3}\kern2\lthick} + + +\newdimen\tmp@dimenc +\newdimen\z@iii\newdimen\z@iv\newdimen\z@v + +% \oblique {l}{s}{h} draws an oblique line of length l, slope s percent, and +% height h. This will cause an unrecorded space so it should be used within +% \rlap. Note that this macro is a hack and probably gobbles up resources! +% This macro is used by some of the others which follow. + +\def\oblique#1#2#3{\relax % length slope height +\ifnum #2=0\relax\raise #3\vbox{\hrule width #1 height\lthick depth\z@}\relax +\else\q@antum=25\lthick\divide\q@antum by #2\relax +\ifdim\q@antum<0pt\relax\multiply\q@antum by -1\fi +\global\z@iv=0pt\relax +\loop\ifdim\z@iv<#1\relax + {\z@v=#1\relax\advance\z@v by -\z@iv\relax\advance\z@v by -\q@antum\relax + \tmp@dimenc\z@iv\multiply\tmp@dimenc by#2\relax + \z@iii=#3\relax\advance\z@iii by .01\tmp@dimenc\relax\advance\z@iii by + -0.5\internote + \ifnum #2<0\relax\advance\z@iii by \lthick\relax\fi + \tmp@dimenc\z@v\multiply\tmp@dimenc by#2\relax + \ifdim\z@v<0pt\relax\advance\z@iii by .01\tmp@dimenc\relax\hskip\z@v\fi + \advance\z@iii by 0.6\internote\relax + \raise\z@iii\hbox to \q@antum{\vrule width\q@antum height .5\lthick depth + .5\lthick}\relax + \global\advance\z@iv by \q@antum\relax +}\repeat +\fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end musicext excerpt +\font\musext=musicbrb +\tolerance 10000 +\csname normalshape\endcsname\csname mediumseries\endcsname +\csname pnormalshape\endcsname\csname pmediumseries\endcsname +\makeindex + +\long\def\theindex{\chapter{Index} +\parindent \z@ +\parskip \z@ \@plus .3\p@ \relax \let \item \@idxitem \columnseprule \z@ +\columnsep 35\p@ \begin{multicols}{2} +} + +\def\endtheindex{\end{multicols}} + +% +\begin{document} +\title{\Huge\bf \musictex\\\LARGE\bf Using + \TeX\ to write polyphonic\\or +instrumental music\\\Large\sl Version 5.17 -- \today} +\author{\Large\rm Daniel \sc Taupin\\\large\sl + Laboratoire de Physique des Solides\\\normalsize\sl + (associ\'e au CNRS)\\\normalsize\sl + b\^atiment 510, Centre Universitaire, F-91405 ORSAY Cedex} + \date{} +\maketitle +\clearpage +\thispagestyle{empty} +\null +\setcounter{page}0 +\clearpage +\tableofcontents +\setcounter{secnumdepth}3 +\pagestyle{headings} +% +\chapter{What is \musictex\ ?} + \musictex\ is a set of \TeX\ macros to typeset polyphonic, orchestral or +polyphonic music. Therefore, it is mainly supposed to be used to type wide +scores -- just because true musicians seldom like to have to frequently turn +pages -- and this is not really compatible with \LaTeX's standard page +formats, even the {\tty A4.sty} the {\Bslash textheight} and {\Bslash +textwidth} of which are too small for musician needs. + + However, a \LaTeX\ style has been also provided (and it is used for the +typing of the present paper) but this {\tty musictex} style is fit for +musicographic books rather than for normal scores to be actually played. + + It should be emphasized that \musictex\ is not intended to be a +compiler which would translate some \ixem{standard musical +notation}s into \TeX\, nor to decide by itself about aesthetic problems in music typing. +\musictex\ only typesets staves, notes, chords, beams, slurs and ornaments as +requested by the composer. Since it makes very few typesetting decisions, +\musictex\ appears to be a versatile and rather powerful tool. However, due +to the important amount of information to be provided to the typesetting +process, coding \musictex\ might appear to be awfully complicated, just as +the real keyboard or orchestral music. Therefore, it should be interfaced therefore by +some pre-compiler in the case of the composer/typesetter wanting aesthetic +decisions to be automatically made by somebody (or something) else. + +\section{\musictex\ principal features} +\subsection{Music typesetting is two-dimensional} + + Most of the people who just learnt a bit of music at college probably think +that music is a linear sequence of symbols, just as literary texts to be +\TeX-ed. In fact, with the exception of strictly monodic instruments like +most orchestral wind instruments and solo voices, one should be aware that +reading music actually is a matricial operation: the non-soloist musician +successively reads \ital{columns} of simultaneous notes which he actually plays +if he is a pianist, clavichordist or organist, which he actually reads and +watches if he conducts an orchestra, and which he is supposed to check and +partially play when he is a soloist who wants to play in time with the +accompanying instrument or choir. + + In fact, our personal experience of playing piano and organ as well as +sometimes helping as an alternate Kapellmeister leads us to think that actual +music reading and composing is a slightly more complicated intellectual +process: music reading, music composing and music thinking seems to be a +three layer process. The musician usually reads or thinks several consecutive +notes (typically a long \ital{beat} or a group of logically connected notes), then +he goes down to the next instrument or voice and finally assembles the whole +to build a part of music lasting roughly a few seconds. Then he handles the +next \ital{beat} or \ital{bar} of his score. + + Thus, it appears that the humanly logical way of coding music consists +in horizontally accumulating a set of \ital{vertical combs} with +\ital{horizontal teeth} as described in Table \ref{readtable}. + + \begin{table} + \begin{center} + \begin{tabular}{|ll|ll|}\hboxit{note sequence one} + &\hboxit{note seq.\ four} + &\hboxit{note seq.\ seven} + &\hboxit{note seq.\ ten}\\\hboxit{note sequence two} + &\hboxit{note seq.\ five} + &\hboxit{note seq.\ eight} + &\hboxit{note seq.\ eleven}\\\hboxit{note seqence three} + &\hboxit{note seq.\ six} + &\hboxit{note seq.\ nine} + &\hboxit{note seq.\ twelve}\\ + \end{tabular} + \end{center} + \caption{The order in which a musician reads music}\label{readtable} + \end{table} + +This is the reason +why, in {\bf \musictex} the fundamental \ital{macro} is of the form + +\begin{center} +{\Bslash notes \dots\ \& \dots\ \& \dots\ \bslash enotes} +\end{center} + +\noindent where the character {\tty\&} is used to separate the notes to be +typeset on respective staffs of the various instruments, starting from the +bottom. + +In the case of an instrument whose score has to be written with +several staffs, these staffs are separated by the +character \|. Thus, a score written for a keyboard instrument and +a monodic instrument (for example piano and violin) +will be coded as follows: + +\begin{center} +{\Bslash notes \dots\ \| \dots\ \& \dots\ \bslash enotes} +\end{center} +\noindent for each column of simultaneous \ital{groups of notes}. +It is worth emphasizing that we actually said \ital{``groups of notes''}: +this means that in each section of the previous macro, the music typesetter is +welcome to insert, not only chord notes to be played at once, but small +sequences of consecutive notes which build something he understands as a +musical phrase. This is why note typing macros are of two kinds in \musictex, +namely the note macros which are not followed by spacing afterwards, and those +which induce horizontal spacing afterwards. + +\subsection{The spacing of the notes} + +It seems that many books have dealt with this problem. +Although it can lead to interesting algorithms, we think it is +not in practice an important point. + +In fact, each column of notes has not necessarily the same spacing +and, in principle, this \itxem{spacing} should depend on the shortest +duration of the simultaneous notes. But this cannot be established as a rule, +for at least two reasons: + +\begin{enumerate} + \item spacing does not depend only on the local notes, +but also on the context, at least in the same bar. +\item in the case of polyphonic music, exceptions can easily be found. +Here is an example: + + + \begin{music} +\def\nbinstruments{1}\relax +\computewidths +\generalmeter{\meterfrac{4}{4}}\relax +\debutextrait +\normal\elemskip=0.110\hsize +\temps\Notes\qsk\qsk\rlap{\hu j}\ql h\enotes +\temps\Notes\hl g\enotes +\temps\Notes\hu k\enotes +\temps\Notes\ql f\enotes +\finextrait + \end{music} + +%\check + +\noindent where it can be clearly seen that the half notes at beats 2 and 3 +must be spaced as if they were quarter notes since they overlap, which is +obvious only because of the presence of the indication of the \itxem{meter} 4/4. +\end{enumerate} +% + +Therefore, we preferred to provide the composer/typesetter with a +set of macros, the spacing of which increases by a factor of $\sqrt 2$ +(incidentally, this can be adjusted): + +\begin{center} +{\Bslash notes \dots\ \& \dots\ \& \dots\ \bslash enotes\ \ \% +\hbox to 2.5cm{\rm 1 spatial unit\hss}} +\\ +{\Bslash Notes \dots\ \& \dots\ \& \dots\ \bslash enotes\ \ \% +\hbox to 2.5cm{\rm 1.4 spacial unit\hss}} +\\ +{\Bslash NOtes \dots\ \& \dots\ \& \dots\ \bslash enotes\ \ \% +\hbox to 2.5cm{\rm 2 spatial units\hss}} +\\{\Bslash NOTes \dots\ \& \dots\ \& \dots\ \bslash enotes\ \ \% +\hbox to 2.5cm{\rm 2.8 spatial units\hss}} +\\{\Bslash NOTEs \dots\ \& \dots\ \& \dots\ \bslash enotes\ \ \% +\hbox to 2.5cm{\rm 4 spatial units\hss}} +\\{\Bslash NOTES \dots\ \& \dots\ \& \dots\ \bslash enotes\ \ \% +\hbox to 2.5cm{\rm 5.6 spatial units\hss}} +\end{center} + +%\check + The size of the spatial unit (\keyindex{elemskip}) can be freely adjusted. +In addition, \musictex\ provides a means of adjusting the note spacing +according to an average number of elementary spaces within a line (macro +\keyindex{autolines}). + +\subsection{Music tokens, rather than a readymade generator} +%\check + +The tokens provided by \musictex\ are: + +\begin{itemize} +\item the note symbols \ital{without stem}; +\item the note symbols \ital{with stems, and hooks for eighth notes and +beyond}; +\item the indications of beam beginnings and beam ends; +\item the indications of beginnings and ends of ties and slurs; +\item the indications of accidentals; +\item the ornaments: arpeggios, trills, mordents, pinc\'es, turns, staccatos +and pizzicatos, fermatas; +\item the bars, the meter and signature changes, etc. +\end{itemize} + + Thus, {\Bslash wh a} produces an \ital{A (of nominal frequency 222.5~Hz, +unless transposed)} of duration being a +\ital{whole note}. In the same way, {\Bslash wh h} produces an \ital{A +(445~Hz)} of duration represented by a \ital{whole note}, {\Bslash qu~c} +produces a \ital{C (250~Hz approx.)} whose value is a \ital{quarter note with +stem up}, {\Bslash cl J} produces a \ital{C (125~Hz approx.)} of +duration equal to an \ital{eighth note with stem down}, etc. + + To generate quarter, eighth, sixteenth, etc. chords, the macro +\keyindex{zq} can be used: it produces a quarter note head the vertical +position of which is +memorized and recalled when another stemmed note (possibly with a hook) is +coded; then the stem is adjusted to link all simultaneous notes. Thus, the +perfect C-major chord, i.e. + +%\check +{\def\nbinstruments{1}\relax +\cleftoksi={{0}{0}{0}{0}}\generalmeter{}\relax +\debutextrait +\normal +\NOTes\qsk\zq c\zq e\zq g\qu j\enotes +\finextrait} + +%\check +\noindent is coded + \hbox{\Bslash zq~c\bslash zq~e\bslash zq~g\bslash qu~j} +or, in a more concise way, \hbox{\Bslash zq\{ceg\}\bslash qu~j} (stem up): +in fact, single notes are treated\dots\ like one-note chords. + +\subsection{Beams} + \ital{Beams}\index{beams} are generated using macros which define their +beginning (at the current horizontal position), together with their altitude, +their direction (upper of lower), their multiplicity, their slope and their +reference number. This latter feature -- the reference number -- appears to +be necessary, since one may want to write beams whose horizontal extents +overlap: therefore, it is necessary to specify which beam the notes hang on +and which beam is terminated at a given position. + +%\check +\subsection{Setting anything on the score} + +A general macro (\keyindex{zcharnote}) provides a means of +putting any sequence of symbols (in fact, some {\Bslash hbox\{...\}}) at any +pitch of any staff of any instrument. Thus, any symbol defined in a font +(letters, math symbols, etc.) can be used to typeset music. + +\section{A simple example} + + Before giving more details, we give below an example of the two first +bars of the sonata in C-major K545 by {\sc\ixem{Mozart}}: + +\begin{music} +\parindent 1cm +\def\nbinstruments{1}\relax +\def\instrumenti{Piano}% +\nbporteesi=2\relax +\generalmeter{\meterfrac{4}{4}}\relax +\debutextrait +\normal +\temps\Notes\ibu0f0\qh0{cge}\tbu0\qh0g|\hl j\enotes +\temps\Notes\ibu0f0\qh0{cge}\tbu0\qh0g|\ql l\sk\ql n\enotes +\barre +\Notes\ibu0f0\qh0{dgf}|\qlp i\enotes +\notes\tbu0\qh0g|\ibbl1j3\qb1j\tbl1\qb1k\enotes +\temps\Notes\ibu0f0\qh0{cge}\tbu0\qh0g|\hl j\enotes +\finextrait +\end{music} +%\check + + The \ital{coding} is set as follows: + +\begin{quote}\begin{verbatim} +\begin{music} +\parindent 1cm +\def\nbinstruments{1}\relax % a single instrument +\def\instrumenti{Piano}% % whose name is Piano +\nbporteesi=2\relax % with two staffs +\generalmeter{\meterfrac{4}{4}}\relax % 4/4 meter chosen +\debutextrait % starting real score +\normal % normal 12 pt note spacing +\temps\Notes\ibu0f0\qh0{cge}\tbu0\qh0g|\hl j\enotes +\temps\Notes\ibu0f0\qh0{cge}\tbu0\qh0g|\ql l\sk\ql n\enotes +\barre % bar +\Notes\ibu0f0\qh0{dgf}|\qlp i\enotes +\notes\tbu0\qh0g|\ibbl1j3\qb1j\tbl1\qb1k\enotes +\temps\Notes\ibu0f0\qh0{cge}\tbu0\qh0g|\hl j\enotes +\finextrait % terminate excerpt +\end{music} + \end{verbatim}\end{quote} + +\begin{itemize} +\item {\Bslash ibu0f0} begins an upper beam, aligned on the +\ital{f}, reference number 0, slope 0 +\item {\Bslash tbu0} terminates this beam before writing +the second \ital{g} by means of {\Bslash qh0g} +\item {\Bslash qh..} indicates a note hanging on a beam. + \item {\Bslash sk } sets a space between the two quarters at the right +hand, so that the second is aligned with the third eighth of the left hand. + \item{\Bslash qlp} is a quarter with a point. + \item{\Bslash ibbl1j3} begins +a double beam, aligned on the \ital{C} ({\tty j} at this pitch) +of slope 0.15. +\end{itemize} + +\section{Some highlights} +\subsection{Signatures} + +Signatures can be stated either for all instruments, for example by +\keyindex{generalsignature}{\tty\{-2\}} which sets two flats on each staff, or +separately for each instrument. Thus, the \keyindex{generalsignature} +can be partly overridden by \keyindex{signii}{\tty=1} which puts one +sharp on the staffs of \itxem{instrument number} 2 (ii). Of course, the +current signature may change at any time as well as the meters and clefs. + +\subsection{Transposition} + + An important question is: \ital{``can \musictex\ transpose a score~?''}. +The answer is now 99.5~\% \ital{yes}. If fact, there is an internal register +named \keyindex{transpose} the default value of which is zero, but it may be +set to any reasonable positive of negative value. In that case, it offsets all +symbols pitched with letter symbols by that number of pitch steps. However, +it will neither change the signature nor the local accidentals, and if -- for +example -- you transpose a piece written in $C$ by 1 pitch, \musictex\ will +not know whether you want it in $D\flat$, in $D$ or in $D\sharp$. This might +become tricky if accidentals occur within the piece, which might have to be +converted into flats, naturals, sharps or double sharps, depending on the new +chosen signature. To avoid this trouble, \ital{relative} accidentals +have been implemented, the actual output of which depends on the pitch of +this accidental and of the current signature.\index{relative accidentals} + + +\subsection{Selecting special instrument scores} + +Another question is: \ital{``can I write an orchestral score and extract the +separate scores for individual instruments~?''} The answer is 95~\% +\ital{yes}: in fact, you can define your own macros {\Bslash +mynotes...\bslash enotes}, {\Bslash myNotes...\bslash enotes} with as many +arguments as there are in the orchestral score (hope this is less or equal to +9, but \TeX perts know how to work around) and change its definition +depending on the selected instrument (or insert a test on the value of some +selection register). But the limitation is that the numbering of instruments +may change, so that {\Bslash signiii} may have to become {\Bslash signi} if +instrument $iii$ is alone. But, in turn, this is not a serious problem for +average \TeX\ wizard apprentices. + + \subsection{Variable staff and note sizes} + + Although the staff size is 20 pt as a standard, \musictex\ allors scores of +16 pt staff sizes. In addition, any instrument may have a special staff size +(usually smaller than the overall staff size) and special commands +\verb|\smallnotesize| or \verb|\tinynotesize| enable notes (and also beams or +accidentals) to be of a smaller size, in order to quote optional notes or +\ital{cadenzas}. + + \section{How to get it} + + The whole \itxem{distribution} fits into a single 1.2Mbyte or +1.44Mbyte diskette. It can also be obtained through an \ital{anonymous ftp} +at {\tty rsovax.lps.u-psud.fr} (193.55.39.100), after selecting the +subdirectory {\tty [.musictex]}. All sources (including fonts) are provided, +either separately or ``zipped'' or as VMS ``\ixem{savesets}''. + +%\check +\section{Enhancements} +\subsection{Recent easy enhancements} + +Many enhancements have been asked for, and this is a proof that \musictex\ is +considered as useful by many people. Some of these enhancements which seemed +hard were in fact rather easy to implement, for example small notes to represent +grace notes and cadenzas. But others may induce heavy problems, for example +the need of having \ital{nice} slurs and ties. + +In the same way, we recently introduce Andreas {\sc Egler}'s fonts to have +nicer braces at the left of the score, for example for piano music. + +Besides, we recently found a hard incompatibility of \musictex\ and a genuine +product of the author's native country, namely {\tt french.sty} by Bernard +{\sc Gaulle} which is the \ital{standard} of the French \TeX\ user group, +namely the GUTenberg association. This was partly due to macro name collisions +--- easy to solve --- and to the fact that {\tt french.sty} sets a lot of +characters as \keyindex{active} characters in order to make them handle +correctly the French spacing before and after punctuation marks. This seems to +have been solved in the 4.99 version of \musictex, with the restriction that +French macros cannot be used --- at least easily --- within lyrics. + +Besides, \musictex\ has been adapted --- since version 5.00 --- to score +\ital{gregorian chant} and \ital{percussion music}. + +\subsection{The tie/slur problem} + +While typesetting notes and even beams is a rather simple problem because it +is a \ital{local typesetting}, ties and slurs are much more difficult to handle. + +Of course there is small problem in case of a typesetter wanting a slur or a +tie binding two consecutive notes, not separated by a bar. In practice this +\ital{very restricted} use of slurs or ties can easily be solved by putting +some symbols extracted from the {\tty slur16} or {\tty slurn16}/{\tty slurn20} +fonts somewhere on the staffs using the general use \keyindex{zcharnote} +macro. + + But serious music typesetters or composers know that many ties are supposed +to link notes which are on both sides of a bar, which is a likely place to +insert line breakings, so that the coding of \itxem{ties} must have various +versions and sizes to resist that possible line breaking. What has been said +about ties is still more serious in the case of \itxem{phrasing slurs} which +may extend over several bars, lines and sometimes pages. In this case, their +shape is not only a question of producing a long curved symbol of nice +looking shape, it also has to cope with \itxem{glue}. An then the worst is +that music way of typing does not accept \itxem{ragged lines} but equal +length lines, even for the last line of a music piece. Thus, long distance +slurs and ties need to be cut into separate parts (beginning, continuing(s), +endings) which \TeX\ can only link using \ital{horizontal line overlaps} +or \keyindex{leaders} to insure slur continuity over this unavoidable glue. + + +Therefore and up to now, ties and slurs have been implemented in a way which +may look rather ugly, but we think it is the only way of implementing +\ital{in one pass} ties and slurs which run \ital{across glue}. The principle +is to have tie/slur symbols with a rather long horizontal part. +Then, at each time a glue occurs and at each time a group of notes is coded +while a slur or tie is pending, an \keyindex{hrule} is issued which overlaps +the preceding tie/slur symbol so that the final output seems to contain a +continuous line. Unfortunately, this is possible only in the glue expansion +direction, namely in the horizontal direction. + +Variable size +initial and final curved slur symbols have recently been implemented; +the user has to choose them according +to his intention to have short or long range slur symbols. + +\subsection{\musixtex} + +\ixem{\musixtex} is a new package, heavily derived from \musictex\ by Andreas +{\sc Egler} and Ross {\sc Mitchell}. Its fundamentals are taken from +\musictex, but it works in three passes~:\index{Egler, A.}\index{Mitchell, R.} + \begin{enumerate} + \item The first pass \TeX es the source with a different set of macros, +which generate a special file telling where slurs/ties start and begin. + \item The second pass (a C program) computes the optimal length of the +slurs/recorded. + \item The third pass generates the definitive DVI from the initial source, +owing to information produced by the second pass, name to choose the adequate +slur/tie symbols according to the chosen final note spacing. + \end{enumerate} + We do not decribe \musixtex\ here, but we give some suggestion to make the +same \musictex\ source runable with both \musictex\ and \musixtex. + +\subsection{Enhancement limitations} +Many requested improvements have not been +\ital{yet} implemented for several reasons: + + \begin{itemize} + + \item The author's natural lazyness (!) + + \item More seriously: many of them would require using some more +registers; unfortunately, \TeX\ registers are not numerous (256 of each +kind and the limit of \keyindex{dimen} registers is nearly reached) and we +are afraid many requested new features would make \TeX\ stupidly crash even +when typesetting reasonable scores. + + \item We do not think it is wise to introduce in \musictex\ itself a great +number of macros which would be poorly used by most users: the reason is that +\TeX\ memory is hardly limited and that unused macros may occupy some \TeX\ +storage which could make things crash because of {\tty TeX capacity +exceeded}... + + \end{itemize} + + +\section{Acknowledgements} + +The idea of implementing the present package is due to the previous work +(\mutex)\index{mutex=\protect\mutex} of Andrea {\sc Steinbach} and Angelika +{\sc Schofer}\footnote{Steinbach A. \& Schofer A., \ital{Theses} (1987, 1988), +Rheinische Friedrich-Wilhelms Universit\"at, Bonn, Germany.}. This work +provided the basis of the Metafont codes and some line breaking procedures, +which both are still used here... with 99\% corrections and +updates.\index{Schofer, A.}\index{Steinbach, A.} + +Besides, the original fonts of \musictex, named {\tt musicn20}, {\tt +musicn16}, {\tt musicn13} and {\tt musicn11}, have been recently reviewed +by Andreas {\sc Egler} and the new release --- used in the version 5.00 and +above of \musictex\ --- is called {\tt musikn20}, {\tt musikn16}, {\tt +musikn13} {\tt musikn11} and {\tt musicbrb}.\index{Egler, A.} + + +\chapter{Practical use} +\section{Heading statements} + +Before any reference to \musictex\ macros: + +\medskip{\Bslash input musicnft } + +{\Bslash input musictex} + + \medskip\noindent which may be followed by {\Bslash input musicadd} +in the case you have more than six instruments (voice is two instruments: one +for the music, one for the text) or more than 6 simultaneous beams or ties or +slurs.\index{musicnft.tex}\index{musictex.tex}\index{musicadd.tex} +\index{musicnft.tex} + + \medskip After that, you may write a complete book of \TeX\ provided that +you do not use {\tty \&} as a tabulation character (its \keyindex{catcode} +has been changed) inside the music score and that you do not overwrite +\musictex's definitions. This means that no special macros have been designed +to help you write titles, author names, comments, literature excerpts, etc., +unless you use \LaTeX\ with the {\tt musictex} style. + +\section{Before you begin to write notes} + +You should first specify whether you want to typeset music in size +20pt\index{sizes} per staff or 16pt. This only optional, the default value +being 20pt. If you want the 16pt size, then you have to say: + +\medskip \keyindex{musicsize}{\tty=16} + +\medskip Then, the first compulsory declaration is: + +\medskip {\Bslash def\keyindex{nbinstruments}{\tty\{$n$\}}} + +\medskip \noindent where $n$ is the number of instruments, used by +\musictex\ to performs loops building staffs, setting signatures, meters, +etc. Therefore, it must be defined before any other statements. An instrument +may consist of several staffs, e.g. the piano. The difference between one +instrument of several staffs and several instruments is as follows: + +\begin{itemize} + \item distinct instruments may have distinct \itxem{signatures}, distinct +staffs of a unique instrument share the same signature. + \item \itxem{stems} may be hung to \itxem{beams} belonging to differents +staffs of the same instrument. + \item \itxem{chords} may extend across several staffs of the same +instrument. + \item staffs of a unique \itxem{instrument} are tied together +with a big brace at the beginning of each line. + +\end{itemize} + +\medskip If the number of staffs (in French ``\itxem{port\'ees}'') is not +equal to one, this number must be specified by: + +\medskip +%\check +{\tty\keyindex{nbportees$r$}=$p$\bslash relax} + + \medskip\noindent where $p$ is the number of staffs, and where $r$ is the +roman numeral of the instrument considered (e.g. \keyindex{nbporteesiii} +for the 3rd instrument, starting from the bottom). This value may be zero, in +which case the staff lines are omitted, and this instrument may be used to +code the \itxem{lyrics} of a song, below the actual ``instrument'' +representing the notes of the song. + +\medskip Unless all your instruments only use the \ital{violin} clef, you +have to specifiy all the clefs used for all the instruments. This is done by +coding: + +\medskip{\tty\keyindex{cleftoks$r$}=\{\{$s1$\}\{$s2$\}\{$s3$\}\{$s4$\}\}\%} + +\medskip\noindent where $r$ is the roman numeral of the instrument, $s1$ +specifies the clef of the lower staff, $s2$ the clef of the second staff, +etc. One must always give four values with the above syntax, otherwise\dots\ +$s1=0$ means the \ital{violin} clef (\ixem{clef de sol} in French), $s1=1$ +through $s1=4$ mean the \ital{alto} clef (\ixem{clef d'ut} in French) set on +first (lower) through fourth (next to upper line of the staff), $s1=5$ means +the \ital{bass} clef at third (middle) line, and $s1=6$ means the usual +\ital{bass} clef (\ixem{clef de fa} in French) at the usual fourth line. +\index{violin clef}\index{bass clef}\index{alto clef} As an example, a +standard piano score should include: + +\medskip{\tty\keyindex{cleftoksi}=\{\{6\}\{0\}\{0\}\{0\}\}\%} or {\Bslash +cleftoksi=\{6000\}\%} + +\medskip +If the signature is not void, one should code: + +\medskip{\tty\keyindex{generalsignature}{\tty\{$s$\}}\bslash relax} + +\medskip\noindent where $s>0$ indicates the number of \itxem{sharps} in the +signature and $s<0$ the number of \itxem{flats}\footnote{We have seen once a +score in G-minor where the signature consisted of two flats (B and E) plus +one sharp (F). This is not supported by \musictex.}. + +\medskip If there a \itxem{meter} indication is to be posted, it should be +specified using the macro + +\medskip {\tty\keyindex{generalmeter}\{$m$\}\%} + +\medskip \noindent where $m$ is the description of the meter indication which should +appear on each staff. If it is a \ital{fraction} (e.g. 3/4) on should code + +\medskip{\Bslash generalmeter\{\bslash meterfrac\{3\}\{4\}\}\%} + +\medskip\noindent or, in a simpler way (if the numbers are less than 10): + +\medskip{\Bslash generalmeter\{\bslash meterfrac 34\}\%} + +\medskip\rm Special denotations can be used, such as \keyindex{allabreve} to +get \raise -6pt\hbox{\allabreve} and \keyindex{meterC} to get \raise +-6pt\hbox{\meterC}. + +\medskip However, not all music scores have the same meter in each staff. +Especially, some staffs may have \ital{ternary} meters while others have +\ital{binary}. This can be specified by using the \keyindex{generalmeter} macro +to set the meter for most of the scores and overriding it by means of a more +sophisticated command: + + +%\check +\medskip{\Bslash metertoksii=\{\{\bslash +meterfrac\{12\}8\}\{\bslash +allabreve\}\{\}\{\}\}\%} +\zkeyindex{metertoks$i$} + +\medskip \rm\noindent which sets the meter to 12/8 for the first (lower) +staff, and \ital{alla breve} for the second staff of the instrument number 2 +(\ital{ii}). Note that there is room for 4 staffs and that void items must be +specified, otherwise \TeX\ weird errors occur. + +\subsection{Instrument names} If you want the \itxem{name of the instrument}s +(or the \itxem{name of the voice}s) to be displayed in front of their +respective staffs at the beginning, you may code: + +\medskip\Bslash def\bslash instrument$r$\{\ital{name of the instrument}\}\% +\zkeyindex{instrument$r$} + +\medskip \noindent\rm where $r$ is the roman numeral of the instrument +considered. In this case, you should also adjust the \keyindex{parindent} +dimension so that the long name of an instrument does not spill too far into +the left margin. + +\subsection{Polyphonic songs} +Except staffs of a unique instrument tied together with a big brace, staffs +normally begin on the left with a thin vertical rule. However, it is usual to +tie all human voices together with a left heavy and right thin vertical rule. +This can be specified (but only once per system) by specifying + +\medskip{\tty\bslash def\keyindex{lowersonginstrum}\{$m$\}} + +{\tty\bslash def\keyindex{uppersonginstrum}\{$n$\}} + +\medskip\noindent where $m$ and $n$ are the intrument numbers of the first +and last choral voices. An example of using this feature is given in +{\tty PRAETORI} and -- more complicated -- also in {\tty ANGESCAM} +and {\tty ANGESCAO}. + +%\check +\section{Starting your masterpiece} +\subsection{Typing the first system} + +Just code + +\medskip\keyindex{debutmorceau} + +\medskip\noindent which will initiate (with indentation \keyindex{parindent}) +the first set of staffs for all instruments you have previously defined. But +that is not sufficient to begin writing notes and silences. In fact, you also +must choose the spacing of the notes. + +\subsection{Easy selecting note spacing} +The easiest way of getting a reasonable note spacing is done by saying + +\medskip\keyindex{normal} + +\medskip This defines an elementary spacing of {\tty 10pt}. If you say +\keyindex{large}\footnote{To avoid problems with the \LaTeX\ +\index{LaTeX=\protect\LaTeX} +macro of the same name, this macro is only activated under \LaTeX\ when +\keyindex{begin\{music\}} is invoked.} the elementary spacing (\keyindex{elemskip}) is set to {\tty +12pt}. Once this is done, you can select $\sqrt 2$ multiples of this value to +select specific note spacing by initiating your note column with {\Bslash +notes} (spacing {\Bslash elemskip}), {\Bslash Notes} (spacing {\tty +1.4\bslash elemskip}), etc. + +The is also a macro named \keyindex{etroit} which yields +narrower\footnote{\ital{Etroit} means \ital{narrow} in French.} spacings but +not increasing in the same way. + +\medskip In practice, the choice of the macro {\Bslash notes}, {\Bslash +Notes}, {\Bslash NOtes}, etc., to initiate of column of notes sets an +internal dimension register, named \keyindex{noteskip} to the given multiple +of \keyindex{elemskip}. Thus, each \itxem{spacing note} (\keyindex{qu}, +\keyindex{qh}, \keyindex{hl}, etc.) will be followed by a spacing of +\keyindex{noteskip}. Then, the advantage of the definition of {\Bslash +elemskip} is that, whenever it is changed, all subsequent {\Bslash noteskip}s +will be updated proportionally so that a simple change of {\Bslash elemskip} +can expand or shrink all consecutive note spacings as a whole. + +If these values of {\Bslash elemskip} are not +fit to your needs, you can also say + +\medskip{\tty\keyindex{normal}\keyindex{elemskip}=15pt} + +\medskip\noindent or revert to the basic note introducing sequence: + +\medskip{\tty\keyindex{vnotes} $q$ \bslash elemskip +\ital{note specifications} \bslash enotes} + +\medskip\noindent where $q$ is a positive integer or decimal number. + +\medskip Of course, if you are sufficiently skilled with \TeX, you can also +compute \keyindex{elemskip} according to the number of bars you want in a +line and the number of notes in each bar. + + +\medskip However, you may also prefer to ask \musictex\ to compute the size +of \keyindex{elemskip} from the current page width (\keyindex{hsize}) after +assuming a constant number of bars of a constant number of beats within each +line\footnote{This does not meet the requirements of contemporaneous music, +but fits very well to baroque and romantic music.}. In this case, you have +better use the \keyindex{autolines} macro, which is described below (see: +\ref{linepagebreak}, ``Line and page breaking''). + +%\check + \section{Note pitch specification} + + Note pitches are usually specified by letters ranging from {\tty a} to {\tty +z} for those which are usually written under the G-clef ({\tty a} corresponds +to the $A$ of nominal frequency 222.5~Hz; the \ital{G} of the G-clef is denoted +{\tty g}). Lower pitch notes are specified using upper case letters ranging +from {\tty A} to {\tty N} (the \ital{F} of the F-clef is denoted {\tty M}, and +{\tty F} is one octave below). +%\check + +\medskip If necessary, a numeric symbol can be used to place a symbol +independently of the active clef. + +\medskip Besides, notes below {\tty A} (i.e. the $A$ of nominal frequency +55.625~Hz), namely the lowest octave of the modern pianos, can only be coded +using the transposition features (see below: \ital{transposition} and +\ital{octaviation}) or in absolute vertical position using numbers. + +\section{Writing notes} + +There are two major kinds of note macros: \begin{enumerate} \item those +which terminate a note/chord stem and are followed by a horizontal spacing of +value \keyindex{noteskip}, + \item those which initiate or extend a note/chord stem and do not cause +horizontal spacing. +\end{enumerate} + +\medskip The first kind is used to type a melody, the second kind is used to +type chords. +%\check + +\subsection{Single (spacing) notes} + +\begin{quote}\begin{description} +\item[\keyindex{wh}~$p$ : ]whole note at pitch $p$. +\item[\keyindex{hu}~$p$ : ]half note at pitch $p$ with stem up. +\item[\keyindex{hl}~$p$ : ]half note at pitch $p$ with stem down. +\item[\keyindex{qu}~$p$ : ]quarter note at pitch $p$ with stem up. +\item[\keyindex{ql}~$p$ : ]quarter note at pitch $p$ with stem down. +\item[\keyindex{cu}~$p$ : ]eighth note\footnote{The {\Bslash c} of this macro + name is taken from the French word {``croche''} which is by the way one + half of the english {``crotchet''}; {\Bslash cc...}, {\Bslash ccc...} + are standing for {``double croche''}, {``triple croche''}, etc.} + at pitch $p$ with stem up. +\item[\keyindex{cl}~$p$ : ]eighth note at pitch $p$ with stem down. +\item[\keyindex{ccu}~$p$ : ]sixteenth note at pitch $p$ with stem up. +\item[\keyindex{ccl}~$p$ : ]sixteenth note at pitch $p$ with stem down. +\item[\keyindex{cccu}~$p$ : ]32-th note at pitch $p$ with stem up. +\item[\keyindex{cccl}~$p$ : ]32-th note at pitch $p$ with stem down. +\item[\keyindex{ccccu}~$p$ : ]64-th note at pitch $p$ with stem up. +\item[\keyindex{ccccl}~$p$ : ]64-th note at pitch $p$ with stem down. +%\check +\end{description}\end{quote} + +\medskip As an example, the sequence: + +\begin{music}\parindent=0pt\def\nbinstruments{1}\def\instrumenti{} + \generalsignature{0}\savesignature\cleftoksi={{0}{0}{0}{0}} + \debutextrait\normal +\notes\cu c\temps\cl j\enotes\barre +\notes\ccu c\temps\ccl j\enotes\barre +\notes\cccu c\temps\cccl j\enotes\barre +\notes\ccccu c\temps\ccccl j\enotes\finextrait +\end{music} + +\medskip \noindent was coded as: + +%\check +\begin{quote}\begin{verbatim} +\notes\cu c\temps\cl j\enotes\barre +\notes\ccu c\temps\ccl j\enotes\barre +\notes\cccu c\temps\cccl j\enotes\barre +\notes\ccccu c\temps\ccccl j\enotes +\end{verbatim}\end{quote} + +\medskip If these notes are preceded by \ital{non-spacing} notes (i.e. +macros \keyindex{zq} or \keyindex{zh}) their stem is extended up or down so +as to join all notes into a single chord. + \subsection{Non-spacing (chord) notes} + +\begin{quote}\begin{description} +\item[\keyindex{zq}~$p$ : ]quarter (or shorter) note head at pitch $p$ with no +spacing after. +\item[\keyindex{zh}~$p$ : ]half note head at pitch $p$ with no spacing after. +\end{description}\end{quote} + +\medskip It must be pointed out that the pitch $p$ of these notes is +memorized so that the stem of the further spacing note will join them into +a chord. This stem top and bottom pitch is \ital{reset} at each spacing +note. + +\medskip \noindent{\sl REMARK : Notes of duration longer than whole notes are +always non-spacing. This saves one useless definition, since these notes are +always longer than other simultaneous ones. If needed they can be followed by +\keyindex{sk} to force spacing.} + \subsection{Shifted non-spacing (chord) +heads} These symbols are used mainly in chords where \ital{second} intervals +are present. It is the responsibility of the typist to choose which heads +should be shifted left or right. + +\rm\medskip \par\keyindex{rw}~$p$ : whole note head shifted right by one note +width ($\approx$ 6pt), no spacing. + \par\keyindex{lw}~$p$ : whole note head shifted left by one note +width ($\approx$ 6pt), no spacing. + \par\keyindex{rh}~$p$ : half note head shifted right by one note +width ($\approx$ 6pt), no spacing. + \par\keyindex{lh}~$p$ : half note head shifted left by one note +width ($\approx$ 6pt), no spacing. + \par\keyindex{rq}~$p$ : quarter note head shifted right by one note +width ($\approx$ 6pt), no spacing. + \par\keyindex{lq}~$p$ : quarter note head shifted left by +one note width ($\approx$ 6pt), no spacing. + +\medskip Except that they are shifted left of right, these macros act like +{\Bslash z...} macros for stem building. + +\subsection{Shifted notes} + +\begin{quote}\begin{description} + \item[\keyindex{rqu} : ]acts like {\Bslash qu} but the note head is +shifted one note width. This is used for \itxem{chords} with upper note +on the right side of the stem. + \item[\keyindex{rql} : ]same with stem down. + \item[\keyindex{rhu} : ]same as above for a half note, stem up. + \item[\keyindex{rhl} : ]same with stem down. +\end{description}\end{quote} + +In addition on can use the command \keyindex{roff} to offset any note +character by one quarter note head, e.g.: + + \verb|\roff{\zqup h}| + +\noindent which will post a pointed quarter note with stem up, offset by one +quarter note head with respect to its normal abscissa. \verb|\roff{...}| is +heavily recommended instead of \verb|\qsk| if the score is intended to be run +also with \musixtex. + +\subsection{Non-spacing single notes} + +\begin{quote}\begin{description} + \item[\keyindex{zhu} : ]half note with stem up but no spacing. It acts like +{\Bslash hu} for stem building. + \item[\keyindex{zhl} : ]half note with stem down but no spacing. It acts like +\keyindex{hl} for stem building. + \item[\keyindex{zqu} : ]quarter note with stem up but no spacing. It acts like +{\Bslash qu} for stem building. + \item[\keyindex{zql} : ]quarter note with stem down but no spacing. It acts +like {\Bslash ql} for stem building. + \item[\keyindex{zcu} : ]eighth note with stem up but no spacing. It acts like +{\Bslash cu} for stem building. + \item[\keyindex{zcl} : ]eighth note with stem down but no spacing. It acts +like {\Bslash cl} for stem building. + + +\item[\keyindex{lhu}, \keyindex{lhl}, \keyindex{lqu}, \keyindex{lql} : ]same +as above, but the whole of the note is shifted one note width on the left. + \item[\keyindex{zw}~$p$ : ]whole note at pitch $p$ with no spacing after. +\item[\keyindex{zwq}~$p$ : ]arbitrary duration note (\raise +2.5pt\hbox{\musicxx\char 125}) at pitch $p$ with no spacing after. +\item[\keyindex{zbv}~$p$ : ]breve note (\raise +2.5pt\hbox{\musicxx\char 36}) at pitch $p$ with no spacing after. +\item[\keyindex{zsb}~$p$ : ]semi-breve note (\raise +2.5pt\hbox{\musicxx\char 32}) at pitch $p$ with no spacing after. +\end{description}\end{quote} + +\subsection{Single (spacing) stemless notes} + + Although not standard in real music scores, one may need to have stemless +quarter and half noteheads posted in the same way as whole notes. This can be +done with the following commands: + +\begin{quote}\begin{description} +\item[\keyindex{nh}~$p$ : ]half notehead at pitch $p$. +\item[\keyindex{nq}~$p$ : ]quarter notehead at pitch $p$. +\end{description}\end{quote} + +\medskip As an example, the sequence: + +\begin{music}\parindent=0pt\def\nbinstruments{1}\def\instrumenti{} + \generalsignature{0}\savesignature\cleftoksi={{0}{0}{0}{0}} + \debutextrait\normal +\notes\nq c\temps\nq j\enotes\barre +\Notes\nh c\temps\nh j\enotes\barre +\notes\nq {cdef}\enotes\finextrait +\end{music} + +\medskip \noindent was coded as: + +%\check +\begin{quote}\begin{verbatim} +\notes\nq c\temps\nq j\enotes\barre +\Notes\nh c\temps\nh j\enotes\barre +\notes\nq {cdef}\enotes\finextrait +\end{verbatim}\end{quote} + + In case of special need, non spacing variants have been provided, namely +\keyindex{znh} and \keyindex{znq}. + +\subsection{Pointed notes} + One simple way of doing consists in putting \keyindex{pt +$p$} to get a \ital{dot} after the normal note head at pitch $p$. Thus a +quarter note with a point can be coded {\Bslash pt h\bslash qu h}. + + +\medskip A simpler way of doing consists in using compact macros, namely: +\keyindex{qup}, \keyindex{qupp}, \keyindex{quppp}, \keyindex{zqp}, +\keyindex{zhp}, \keyindex{zwp} (these three {\Bslash z...p} are useful in +chords), \keyindex{hup}, \keyindex{whp}, \keyindex{qhp}, \keyindex{qhpp}, +\keyindex{qlp}, \keyindex{qlpp}, etc. + + +\medskip You may also introduce pointed notes, especially in groups by coding +a \ital{period} before (not after) the letter representing the pitch: +{\Bslash qu\{.a.\^{}b.c\}} which is equivalent to: + +\medskip +\begin{quote}\begin{verbatim} +\pt{a}\qu{a}\pt{b}\sh{b}\qu{b}\pt{c}\qu{c} +\end{verbatim}\end{quote} + +Finally, pointed nots can also be produced without spacing aftef, using +\keyindex{zhup}, \keyindex{zhlp}, \keyindex{zqup}, \keyindex{zqlp}, +\keyindex{zcup}, \keyindex{zclp}, and the same with two {\tty p}'s for +double-pointed notes. + +\section{Beams} + + Beams are not automatically handled, but they must be declared explicitely, +\ital{before} the first spacing note involving them is coded. Two kinds of +macros are provided: + +\begin{enumerate} + +\item fixed slope beams have an arbitrary slope chosen by the user in +the range -45\% to +45\% (by multiples of 5\%); + +\item semi-automatic beams have their slope computed knowing the number +of \keyindex{noteskip} over which they are supposed to extend, and knowing the +initial and final pitch of the notes they are supposed to link. + +\end{enumerate} + +\subsection{Fixed slope beams} + +\begin{quote}\begin{description} +\item[\keyindex{ibu}~$nps$ : ]initiates an \ital{upper beam} 3 horizontal +line spacings above the pitch $p$~; $m$ is its reference number, which must be +in the range [0-5] ([0-9] if {\tty musicadd} file has been {\Bslash +input}); +$s$ is the slope of the beam. + +\end{description}\end{quote} + + $s$ is an integer in the range [-9,9]. +$s=1$ means a slope of 5\%, $s=9$ means a slope of 45\% (the maximum with the +{\tty beamn20} or {\tty beamn16} fonts), $s=-3$ means a slope of -15\%, etc. +With usual spacings a slope of 2 or 3 is fit for ascending scales. A slope of +6 to 9 is fit for ascending arpeggios. + +\begin{quote}\begin{description} + +\item[\keyindex{ibl}~$nps$ : ]initiates a \ital{lower beam} 3 horizontal line +spacings below the pitch $p$. Other parameters as above. + + +\item[\keyindex{ibbu}~$nps$ : ]initiates a \ital{double upper beam} (same +parameter meaning). + \item[\keyindex{ibbl}~$nps$ : ]initiates a \ital{double lower beam} (same +parameter meaning). + \item[\keyindex{ibbbu}~$nps$ : ]initiates a \ital{triple upper beam} (same +parameter meaning). + \item[\keyindex{ibbbl}~$nps$ : ]initiates a \ital{triple lower beam} (same +parameter meaning). + \item[\keyindex{ibbbbu}~$nps$ : ]initiates a \ital{quadruple upper beam} (same +parameter meaning). + \item[\keyindex{ibbbbl}~$nps$ : ]initiates a \ital{quadruple lower beam} (same +parameter meaning). + \item[\keyindex{ibbbbbu}~$nps$ : ]initiates a \ital{quintuple upper beam} (same +parameter meaning). + \item[\keyindex{ibbbbbl}~$nps$ : ]initiates a \ital{quintuple lower beam} (same +parameter meaning). +\end{description}\end{quote} + +\medskip Beam termination is also not automatic. The termination of a given +beam must be explicitely declared \ital{before} coding the last spacing note +connected to that beam. + +\begin{quote}\begin{description} +\item[\keyindex{tbu}~$n$ : ]terminates upper beam number $n$ at current +position. \item[\keyindex{tbl}~$n$ : ]terminates lower beam number $n$ at +current position. +\end{description}\end{quote} + +\medskip\keyindex{tbu} and \keyindex{tbl} terminate beams of any +multiplicity. Therefore 32-th notes hanging on a triple beam are initiated by +\keyindex{ibbbu}~$nps$ and terminated by \keyindex{tbu}~$n$. + +\medskip It is also possible to code beams whose multiplicity is not the same +at the beginning. The multiplicity can be increased at any position. For +instance, \keyindex{nbbu}~$n$ which sets the multiplicity of upper beam +number $n$ to 2 starting at the current position, \keyindex{nbbbu}~$n$ sets +its multiplicity to 3, \keyindex{nbbbbu}~$n$ sets its multiplicity to 4, and +\keyindex{nbbbbbu}~$n$ sets it to 5. \keyindex{nbbl}~$n$ \dots +\keyindex{nbbbbbl}~$n$ perform the same functions for lower beams. + +\medskip Notes hanging or standing on beams are coded in the form +{\Bslash qh$n\,\,p$} and {\Bslash qb$n\,\,p$} where $n$ is the beam number and $p$ +the pitch of the note head. \musictex\ adjusts the length of the note stem to +link the bottom of the chord to an upper beam (normally with \keyindex{qh}) and +the top of the chord to a lower beam (normally with \keyindex{qb}). + +\medskip Note that the difference between upper and lower beams does not +mainly consist in the beam being above or below the note heads; rather, it +specifies whether the abscissa of the beginning and the end of this beam is +aligned on the right (upper beam) or on the left (lower) beam. Thus, the +sequence: + +\begin{music} +\def\nbinstruments{1}\nbporteesi=1\relax +\cleftoksi={{0}{0}{0}{0}}\def\instrumenti{}\resetsignatures\debutextrait +\large\temps +\notes\ibu0h0\qh0e\nbbu0\qh0e\nbbbu0\qh0e\nbbbu0\relax +\qh0e\nbbbbu0\qh0e\nbbbbbu0\qh0e\tbu0\qh0e\enotes +\finextrait +\end{music} + +%\check +\noindent has been coded as +\begin{quote}\begin{verbatim} +\notes\ibu0h0\qh0e\nbbu0\qh0e\nbbbu0\qh0e\nbbbu0\relax +\qh0e\nbbbbu0\qh0e\nbbbbbu0\qh0e\tbu0\qh0e\enotes +\end{verbatim}\end{quote} +%\check + + \rm It is quite possible to terminate with \keyindex{tbu} a beam initiated +with \keyindex{ibl}. This may give: + + +\begin{music} +\def\nbinstruments{1}\nbporteesi=1\relax +\cleftoksi={{0}{0}{0}{0}}\def\instrumenti{}\resetsignatures\debutextrait +\large\temps +\notes\ibl0p0\qb0p\nbbl0\qb0p\nbbbl0\qb0p\tbu0\qh0e\enotes +\finextrait +\end{music} + +%\check +\noindent which has been coded as + +\begin{quote}\begin{verbatim} +\notes\ibl0p0\qb0p\nbbl0\qb0p\nbbbl0\qb0p\tbu0\qh0e\enotes +\end{verbatim}\end{quote} +%\check + \rm Partial termination of beams is also possible, by using \keyindex{tbbu} +or \keyindex{tbbl}~: these macros terminate the current beam except that of +order 1 (eighths). \keyindex{tbbbu} or \keyindex{tbbbl} terminate the current +beam except those of order 1 and 2, etc. + + +\medskip +The macros \keyindex{tbbu} and \keyindex{tbbl} may also be invoked when only +a single beam is active. Then, a second beam (upper or lower according +the initiating procedure) is opened \ital{one note width before +the current position, and closed immediately}. Thus the following sequence + +\begin{music} +\def\nbinstruments{1}\nbporteesi=1\relax +\cleftoksi={{0}{0}{0}{0}}\def\instrumenti{}\resetsignatures\debutextrait +\large \temps +\notes\ibu0e0\qh0e\tbbu0\tbu0\qh0e\enotes +\finextrait +\end{music} + +\medskip\noindent is coded: + +\medskip +\begin{quote}\begin{verbatim} +\notes\ibu0e0\qh0e\tbbu0\tbu0\qh0e\enotes +\end{verbatim}\end{quote} + +%\check + +\rm \medskip The same behaviour occurs in the case of \keyindex{tbbbu}, +\keyindex{tbbbl}, \keyindex{tbbbbu}, \keyindex{tbbbbl}, \keyindex{tbbbbbu} +and \keyindex{tbbbbbl}. + +\medskip The symmetrical pattern is also possible. For example: + +\begin{music}\def\nbinstruments{1}\nbporteesi=1\relax +\cleftoksi={{0}{0}{0}{0}}\def\instrumenti{}\resetsignatures +\debutextrait\normal +\Notes\ibbl0j0\rlap{\qsk\tbbl0}\qb0j\tbl0\qb0j\enotes +\finextrait +\end{music} + +\noindent has been coded as: + +\medskip +\begin{quote}\begin{verbatim} +\Notes\ibbl0j0\rlap{\qsk\tbbl0}\qb0j\tbl0\qb0j\enotes +\end{verbatim}\end{quote} + + +\medskip \noindent{\sl REMARK: these codings may seem complicated. In fact, +it is the responsibility of the user to define macros which perform the most +common sequences in his masterpiece. For example, one could define sets of +four sixteenths by the macro:} + +\medskip{\Bslash def\bslash qqh\#1\#2\#3\#4\#5\{\% + +\bslash ibbl0\#2\#1\bslash qh \#2\bslash qh \#3\bslash tbl0\bslash qh \#4\}} + +\medskip\noindent{\sl +where the first argument is the slope and the other four arguments are the +pitches of the four consecutive sixteenths wanted.} + %\check +\subsection{Repeated pattern beams}\index{repeated patterns} + Note heads hanging on beams are not necessarily quarter (or higher order) +note heads. It is possible to hang half note heads on beams using +\keyindex{hh} and \keyindex{hb} macros, e.g.: + +\begin{music}\def\nbinstruments{1}\nbporteesi=1\relax +\cleftoksi={{0}{0}{0}{0}}\def\instrumenti{}\resetsignatures +\debutextrait\normal +\Notes\ibbl0j0\hb0j\tbl0\hb0j\enotes +\Notes\ibbu0g0\hh0g\tbu0\hh0g\enotes +\finextrait +\end{music} + +\noindent has been coded as: + +\medskip +\begin{quote}\begin{verbatim} +\Notes\ibbl0j0\hb0j\tbl0\hb0j\enotes +\Notes\ibbu0g0\hh0g\tbu0\hh0g\enotes +\end{verbatim}\end{quote} + +It is also possible to write + +\begin{music}\def\nbinstruments{1}\nbporteesi=1\relax +\cleftoksi={{0}{0}{0}{0}}\def\instrumenti{}\resetsignatures +\debutextrait\normal +\Notes\ibbl0j3\wh j\tbl0\wh l\enotes +\Notes\ibbu0g3\wh g\tbu0\wh i\enotes +\finextrait +\end{music} + +\noindent which was coded as: + +\medskip +\begin{quote}\begin{verbatim} +\Notes\ibbl0j3\wh j\tbl0\wh l\enotes +\Notes\ibbu0g3\wh g\tbu0\wh i\enotes +\end{verbatim}\end{quote} + +\noindent However, a better look could be obtained in a more sophisticated +way\footnote{You are suggested to make your own macro if you have to type many +of these.}: + +\begin{music}\def\nbinstruments{1}\nbporteesi=1\relax +\cleftoksi={{0}{0}{0}{0}}\def\instrumenti{}\resetsignatures +\debutextrait\normal +\Notes\zw j\qsk\ibbl0j3\sk\tbl0\wh l\enotes +\Notes\ibbu0g3\wh g\tbu0\qsk\wh i\enotes +\finextrait +\end{music} + +\noindent which was simply coded as: + +\medskip +\begin{quote}\begin{verbatim} +\Notes\zw j\qsk\ibbl0j3\sk\tbl0\wh l\enotes +\Notes\ibbu0g3\wh g\tbu0\qsk\wh i\enotes +\end{verbatim}\end{quote} + + +\subsection{Semi-automatic beams} + In order to avoid tedious checks to adjust the slope (and even the starting +pitch) of beams in music with a lot of steep beams, a set of automatically +slope computing has recently been implemented (file {\tty musicvbm.tex}). If +you say {\Bslash Ibu2gj3} \musictex\ will understand that you want to +build an upper beam (beam number 2) horizontally extending \hbox{3\Bslash +noteskip}, the first note of which is a {\tty g} and the last note is a{\tty j}. +Knowing these parameters it will choose the highest slope number which +corresponds to a slope not more than $(\hbox{\tty j}-\hbox{\tty +g})/(3\keyindex{noteskip})$. Moreover, if there is no sufficiently steep beam +slope available, then it will raise the starting point. + + +\medskip Ten such macros are available: \keyindex{Ibu}, \keyindex{Ibbu}, +\keyindex{Ibbbu}, \keyindex{Ibbbbu}, \keyindex{Ibbbbbu}, \keyindex{Ibl}, +\keyindex{Ibbl}, \keyindex{Ibbbl}, \keyindex{Ibbbbl} and \keyindex{Ibbbbbl}. +Examples of their use is given in {\tty marcello.tex}. + +\par\penalty -8000 +\rm + \section{Rests} + + Except that difference that they have no specific pitch, rests are coded in a +very simple way. + +\subsection{ordinary rests} + + Full bar rests (also called ``pauses'') are coded as \keyindex{pause}; +smaller rests are \keyindex{hpause} (of duration equal to a \ital{half +note}), \keyindex{soupir} (duration equal to a \ital{quarter note}), +\keyindex{dsoupir} (duration equal to an \ital{eighth note}, also +\keyindex{ds}), \keyindex{quartsoupir} (duration equal to an +\ital{sixteenth note}, also \keyindex{qs}), \keyindex{huitsoupir} (duration +equal to an \ital{thirtysecond note}, also \keyindex{hs}), +\keyindex{seizsoupir} (duration equal to an \ital{sixty fourth note}, also +\keyindex{qqs}). + + Long rests (lasting several bars) can be coded as \keyindex{PAuse} +and \keyindex{PAUSe}, which respectively yield: + + \begin{music} +\def\nbinstruments{1}\relax +\computewidths +\generalmeter{\meterfrac{4}{4}}\relax +\debutextrait +\normal\elemskip=0.115\hsize +\temps\Notes\sk\PAuse\enotes +\barre\Notes\sk\PAUSe\enotes +\finextrait + \end{music} + +\subsection{Lifted rests} + All the previous rests are \ital{hboxes}; this means that they +can be vertically offset to meet polyphonic music requirements using the +standard \TeX\ command \keyindex{raise}. + + In addition, two symbols have been provided to put a \itxem{full rest} or a +\itxem{half rest} above or below the staff. Then the ordinary \verb|\pause| or +\verb|\hpause| cannot be used since there is a need for small horizontal line +to distinguish between the full and the half rest. They are~: + \begin{itemize} + \item \keyindex{expause}~$p$ (spacing) for \hbox to 1.5em{\hss\expause 1\hss} +at pitch position $p$, + \item \keyindex{exhpause}~$p$ (spacing) for \hbox to 1.5em{\hss\exhpause 1\hss}, + \item \keyindex{zexpause}~$p$ (non spacing) for \hbox to 1.5em{\hss\zexpause 1\hss}, + \item \keyindex{zexhpause}~$p$ (non spacing) for \hbox to +1.5em{\hss\zexhpause 1\hss}. + \end{itemize} + + \section{Phantom notes} + +It may be interesting, when coding a sequence of notes within a unique pair +{\Bslash notes...\bslash enotes}, to skip one note place in order -- for +example -- to set the third note of one staff at the same abscissa as that of +the second note of another staff. This can be done by inserting \keyindex{sk} +which causes a spacing of one \keyindex{noteskip}\footnote{Do not use +\keyindex{kern} nor \keyindex{hskip}~: in fact \keyindex{sk} not only causes +a space but also records that space for correct handling of beams.}. + +\medskip If you just want to shift a note or a symbol by one note head width, +you may write \keyindex{qsk}. However, if you want to offset a note by one +note head width in a chord, you have better use the \keyindex{roff} +macro\footnote{The reason for that pertains to \ixem{\musixtex} which might +dilate or shrink the {\bslash \qsk} spacing while the {\bslash roff} offset is +absolute.}. + +\medskip Note that these two latter macros must be used inside a pair {\tty +\bslash notes...\bslash enotes}. If you want to make a spacing of one note +head width outside, write \keyindex{nspace}. Conversely, a more general +spacing is allowed within the {\Bslash notes...\bslash enotes} pairs, namely: + +\medskip{\tty\keyindex{off} $d$} + +\medskip\noindent where $d$ is any \TeX\ valid dimension, for example +{\Bslash noteskip} or {\tty 5\bslash Interligne}. In fact, if you look to the +\musictex\ source, you will find that {\Bslash off} is the basic control +sequence used to define \keyindex{sk}, \keyindex{qsk}, etc. + + +\section{Collective coding: sequences of notes} + + +As seen in the {\sc Mozart} example, it is not necessary to write a macro +sequence {\Bslash notes...\bslash enotes} for each column. If, on all +staffs of all instruments, spacings are equal or multiple of a unique value, +the notes may be concatenated in each staff: each note in each staff makes +the current position horizontally advance by the elementary spacing specified +by the choice of {\Bslash notes}, {\Bslash Notes}, {\Bslash +NOtes}, etc. + +%\check + + + +\medskip The major interest of this feature resides in that fact that +the note macros are able to write several items; for instance +{\Bslash qu\{cdefghij\}} writes the \ital{C-major} scale in quarters with +stem up. In the same way {\Bslash cl\{abcdef\^{ }gh\}} writes the +\ital{A-minor} scale in eighths. Not all note generating macros can be used +to perform collective coding, but most of them can. They are: + +\begin{itemize} \item all the spacing notes: \keyindex{wh}, \keyindex{hu}, +\keyindex{hl}... \keyindex{ccccl} and the beam hooked notes, i.e. +\keyindex{qh}$n$ and \keyindex{qb}$n$. \item all the chord notes with names +of the form {\Bslash z...}. \end{itemize} + + Conversely, shifted notes are not supposed to be used in collective coding, +mainly because they are used in very special cases which do not deserve +wasting memory space to make them collective. + +\medskip If necessary a void space can be inserted in a collective coding by +using {\tty*}\index{*}. + + +%\check +\section{Accidentals} + + +Accidentals can be introduced in two ways. + +\medskip The first way, the \ital{manual} way of coding them, consists for +example in coding {\tty\keyindex{fl} a} to put a \ital{flat} at the pitch $a$, +supposedly before the further note of that pitch. There is no control upon +the fact that a note will be put at this position and at this pitch. +Naturals, sharps, double flats and double sharps are coded \keyindex{na}~$p$, +\keyindex{sh}~$p$, \keyindex{dfl}~$p$ and \keyindex{dsh}~$p$ respectively. + +\medskip +Alternate procedures \keyindex{lfl}, \keyindex{lna}, \keyindex{lsh}, +\keyindex{ldfl} and \keyindex{ldsh} +place the same accidentals, but their abscissa is shifted one note head width +on the left. The purpose of this is to avoid collision of accidentals +in a chord with narrow intervals. + +\medskip +%\check + The second way of coding accidentals consists in putting the symbol {\tty +\^{ }} (sharp), the symbol {\tty\_} (flat), the symbol {\tty=} (natural), the +symbol {\tty>\relax} (double sharp), or the symbol {\tty<\relax} (double +flat) within the coding of the note, e.g.: {\Bslash qh\{\^{ }g\}} yields a +$G\sharp$. This may very well be combined with collective coding, e.g.: +{\Bslash qu\{ac\^{ }d\}}. + + +\medskip Two sizes are available for accidentals. They revert to the small +version when notes are supposed to be too close to each other. These two +sizes can be forces by coding \keyindex{bigfl}, \keyindex{bigsh}, etc., or +\keyindex{smallfl}, \keyindex{smallsh}, etc. If one does not want to have any +small accidentals, then one can declare \keyindex{bigaccid} (conversely +\keyindex{smallaccid} or \keyindex{varaccid} -- the latter restoring variable +sizes). + + +\medskip Small accidentals can also be put \ital{above} the note +heads. This is done using \keyindex{uppersh}~$p$, \keyindex{upperna}~$p$ or +\keyindex{upperfl}~$p$: + + \begin{music} +\def\nbinstruments{1}\relax +\computewidths +\debutextrait +\normal +\temps\NOtes\sk\uppersh l\ql l\enotes +\temps\NOtes\upperna m\ql m\enotes +\temps\NOtes\upperfl l\ql l\enotes +\finextrait + \end{music} + + It also possible to introduce \ital{\ixem{cautionary accidental}s} on a +score, i.e.\ small size accidentals between parentheses. This done by preceding +the name of the accidental keyword by a {\tty c}, e.g. +by coding {\tty\keyindex{cfl}}$p$ to get a cautionary flat. + Available cautionary accidentals are \keyindex{csh}, \keyindex{cfl}, \keyindex{cna}, +\keyindex{cdfl} and \keyindex{cdsh}, which give: + + \begin{music} +\def\nbinstruments{1}\relax +\computewidths +\debutextrait +\normal +\temps\NOtes\sk\csh g\qu g\enotes +\temps\NOtes\cfl h\qu h\enotes +\temps\NOtes\cna i\qu i\enotes +\temps\NOtes\cdfl j\qu j\enotes +\temps\NOtes\cdsh k\qu k\enotes +\finextrait + \end{music} + + Since cautionary accidentals are wider +that normal ones, it might be useful to insert some spacing before them, either +using \keyindex{temps} or a \keyindex{sk} within a {\Bslash notes...\bslash +enotes} group. + + + \section{Transposition and octaviation} + + +An important feature is the existence of a special register +\keyindex{transpose} the normal value of which is 0. If you say + +\medskip +{\Bslash transpose=3} + +\medskip\rm\noindent all subsequent pitches specified by +upper or lower case letters will be transposed 3 positions. If you set +\keyindex{transpose} to 7 you may write your music one octave below its final +pitch. Thus, you can define \ital{octaviation} macros like +%\check + +\medskip +\Bslash def\bslash soqu\#1\{\bslash zq\{\#1\}\{\bslash transpose=7\bslash relax +\bslash qu\{\#1\}\}\} + +\medskip\rm\noindent to build quarter note octaves in a single call. Note +that the octaviated note is coded within braces so that the transposition +is only local. +%\check + + +\medskip + \ital{Octaviation}\index{octaviation} can also be performed in is another +way, namely unsing special codes to transpose by multiples of 7 intervals. +For example {\Bslash qu\{'ab\}} is equivalent to {\Bslash qu\{hi\}} and +{\Bslash qu\{\`{}kl\}} is equivalent to {\Bslash qu\{de\}}. It should be +emphasized here that the {\tty'} (\itxem{acute accent}) and the {\tty\`{}} +(\itxem{grave accent}) have cumulative effects, so that {\Bslash qu\{''A'A\}} +is equivalent to {\Bslash qu\{ah\}} and that the {\Bslash transpose} +parameter is only reset to its initial value (not necessarily zero) when +changing staff or instrument (i.e. {\tty \|} or {\tty \&}) or at {\Bslash +enotes}. Since this may be confusing, it is useful to use the {\tty !} prefix +to reset the {\Bslash transpose} register explicitely to the value it had +when entering {\Bslash notes}\footnote{This value is saved in another +register named \keyindex{normaltranspose}.}. Thus {\Bslash qu\{!a'a\}} always +gives the note {\tty a} and its upper octave {\tty h} \ital{shifted by the +value of {\Bslash transpose} at the beginning of the current} \noindent +{\Bslash notes...\bslash enotes} group (or {\Bslash Notes...\bslash enotes}, +etc.) whatever the number of previous grave and acute accents occurring +inbetween. + +\medskip + The above processes indeed change the vertical position of the note heads +and associated symbols (note stems, accents and beams) but they do not +take care of the necessary changes of accidentals when transposing, i.e. the +fact that an $F\sharp$ occurring with a zero signature should become a +$B\natural$ when transposing from the tonality of $C$ major to $F$ major where +the normal $B$ is the $B\flat$. Since the intent of the composer is not +obvious -- he may want to shift a group of notes within the same tonality +or conversely to transpose it in another tonality -- this is not done +automatically. Thus the \keyindex{sh}, \keyindex{fl}, \keyindex{na}, \keyindex{dsh} and +\keyindex{dfl} symbols \ital{are not affected} by a change of the \keyindex{transpose} +register. + + +\medskip + But the composer/typesetter may ask \musictex\ to do that work. In this +case, he should code \keyindex{Sh}, \keyindex{Fl}, \keyindex{Na}, +\keyindex{dSh} and \keyindex{dFl} (or \keyindex{bigSh}, \keyindex{bigFl}, +\keyindex{bigNa}, \keyindex{bigdSh} and \keyindex{bigdFl} or +\keyindex{smallSh}, \keyindex{smallFl}, \keyindex{smallNa}, +\keyindex{smalldSh}, \keyindex{smalldFl}, \keyindex{cSh}, \keyindex{cFl}, +\keyindex{cNa}, \keyindex{cdSh} and \keyindex{cdFl}) instead of the usual +lower case accidental symbols. The symbol \keyindex{Sh} (resp. +\keyindex{bigSh} and \keyindex{smallSh}) means that the corresponding pitch +has to be raised by \ital{one half pitch} with respect to its normal value +\ital{according to the current signature}. Thus {\Bslash Sh b} means a +$B\sharp$ if the signature is zero or positive, and a $B\natural$ if it is +negative. The same logic applies for all accidentals having an upper case +forelast letter. + + +\medskip + Obviously, the computation is done after taking account of the value of +the \keyindex{transpose} register. + + +\medskip The compact codes {\tty \^{}}, {\tty \_}, {\tty =} are normally not +affected by transposition and signatures, but their behaviour can be changed +by saying \keyindex{relativeaccidentals} and reset by +\keyindex{absoluteaccidentals} (the default situation). + +%\check + + +\medskip Although \ital{relative accidental coding} is an easy and safe way +of coding \ital{transposable} scores, care should be exercised in getting rid +of the habit of saying {\Bslash na b} to rise the pitch of a $B$ when the +tonality is $F$ major (i.e. with {\tty\keyindex{sign$n$}=-1} or +{\tty\keyindex{generalsignature}\{-1\}}). An example of sophisticated +transposition is given in the score {\tty souvenir.tex} (which {\Bslash +input}s {\tty souvenix.tex}). It should be noted that \ital{relative accidental +coding} is compatible with \itxem{cautionary accidental} coding: in this +case, one should code \keyindex{cNa}, \keyindex{cSh}, \keyindex{cFl}, +\keyindex{cdSh}, \keyindex{cdFl} respectively. + +\medskip + Besides, the typical piano octave transposition \hbox{\sl 8 - - - - - } can +be obtained by coding: + +%\check +\medskip \keyindex{octfin} $p$ $n$ + +\medskip\noindent which puts the 8 and dotted line symbols at the pitch $p$ +(usually {\tty p} to {\tty r}). The length is $n$\keyindex{noteskip}. This +obviously fit for short octaviation denotations. To transpose a whole line, +use \keyindex{octline}~$p$. Since \keyindex{octfin} terminates with a small +hook down, to indicate clearly where octaviation stops, you may also like to +use \keyindex{octsup} which behaves like \keyindex{octfin} without the final +hook. All this supposes you have an idea of the actual line breaking of your +score in that section, and this is admittedly difficult to handle when octave +transposition is supposed to long a large number of lines. In that latter +case, you can use the {\Bslash def\keyindex{everystaff}\{...\}} to insert +whatever code you like at each new line of score. This has been used to set +octaviation in the score of the \ital{Toccata in F} by Charles-Marie +\index{Widor, C.-M.}{\sc Widor}\footnote{A French organist (1844-1937) and +composer who was in charge of the organ of St-Sulpice in Paris, from 1864 to +1934.}: at each bar (or virtual bar, namely \keyindex{zbarre}), the {\Bslash +everystaff} procedure is updated to produce the convenient code, in case of +the line breaking happening before the next definition. +%\check + + \section{Ties and slurs} + + They have been implemented in a way which may look +rather ugly, but we think it is the only way of implementing \ital{in one +pass} ties and slurs which run \ital{across glue}. + + +\medskip Slurs and ties must be initiated within the pair {\Bslash +notes...\bslash notes} before the spacing note is coded. They must be +terminated also before the last note is coded. + + +\medskip\keyindex{itenu}~$np$ + + +\medskip\noindent\rm (\ital{ten} stands for the Italian word \ital{tenuto}) +initiates an upper tie (convex) at pitch $p$. Just like beams, ties have a +reference number $n$, from 0 to 6 (or 9 if {\tty musicadd} is included). +\keyindex{itenl}~$np$ initiates a lower tie (concave). + + +\medskip The tie of reference number $n$ is terminated by +\keyindex{tten}~$n$. + + +\medskip Slurs are initiated with \keyindex{ilegu}~$np$ and +\keyindex{ilegl}~$np$, where \ital{leg} stands for the Italian word +\ital{legato}, and they are terminated with \keyindex{tleg}~$n$. Except that +slurs start before the note position and stop after, ties and slurs work the +same way with the same syntax. They also share the same registers so that +slurs nesting tied notes should have numbers $n$ distinct from each other. +\subsection{Standard and nicer slurs} + +\medskip Since version 4.7, beginnings and ends of slurs are produced using +a special font ({\tty slurn16} or {\tty slurn20}) rather than using \TeX\ +bracing tokens from {\tty cmex10}. Thus the bending of slurs is now nicer and, +moreover, several slur sizes are available. For example: + +\begin{music} +\def\nbinstruments{1}\relax +\computewidths +\debutextrait +\normal +\temps\NOtes\Ilegu0l\qu g\enotes +\NOtes\qu h\enotes +\NOtes\ql i\enotes +\NOtes\tleg0\ql j\enotes +\finextrait + \end{music} + +\noindent has been coded using \keyindex{Ilegu} rather than \keyindex{ilegu} +(resp.\ using \keyindex{Ilegl} rather than \keyindex{ilegl} if a lower slur +is wanted), namely: + +\begin{quote}\begin{verbatim} +\NOtes\Ilegu0l\qu g\enotes +\NOtes\qu h\enotes +\NOtes\ql i\enotes +\NOtes\tleg0\ql j\enotes +\end{verbatim}\end{quote} + + It should to be noted that, as a standard, \itxem{ties} still use the \TeX\ +bracing symbols; this is mainly done to avoid visibility problems with ties +occurring in the middle of staffs, i.e. in a situation where tie lines could +overlap and be confused with staff lines. But the \musictex\ user can request +using special slur fonts by coding \keyindex{Itenu} or \keyindex{Itenl} +instead of \keyindex{itenu} or \keyindex{itenl}. Even more, big symbol ties +are available using \keyindex{ITenu} or \keyindex{ITenl}. + +\medskip As a standard, only two slur and tie symbol sizes are referred by +\musictex\ macros, but a quick look into {\tty musicnft.tex} show that these +definitions explicitely refer to a character number of the slur font: + +\begin{quote}\begin{verbatim} +\def\ITenu#1{\selecttenue{#1}\I@tenu{70}}% +\def\Ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width +\I@tenu{70}{#2}}}% +\def\Itenu#1{\selecttenue{#1}\I@tenu{66}}% +\def\ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width +\I@tenu{66}{#2}}}% +\end{verbatim}\end{quote} + + Then the \musictex\ user can, for his own special needs, define new macros +using other character codes in the range 64--79, knowing that each character +of this range is one point longer than the previous one. + +\subsection{Problem with large slur ends} + +Due to spacing problems, it may happen that the end of an \keyindex{Ilegu} or +\keyindex{Ilegl} makses some ugly overlap between the currrent slur +horizontal rule and the ending symbol itself. This is due to the ending +symbol being so long that it overlaps the end of the horizontal rule. The +easiest way of removing that slight trouble consists in replacing --- for +example --- {\tty\keyindex{tleg}0} with the more sophisticated commands~: + +\medskip\verb|\rlap{\qsk\tleg0}| + +\medskip\noindent which delays the position of the closing slur symbol by a +space equal to the note head width. + +\subsection{Weird slurs and ties} + +In some special cases, usually in romantic music, one may want to invert the +sense of a slur, linking for example a keyboard phrase beginning at the left +hand and ending at the right hand. Thus, the slur of number $n$ (a numeric +vamue, not a roman numeral) can be inverted +by + +\medskip\keyindex{Invertslur} $n$ + +\medskip Besides, for some good reason, one may want to raise a slur at the +next line. This is done by + +\medskip\verb|\def\atnextline{|\keyindex{liftslur} $n$\verb|{| +\ital{dimension} \verb|}}| + +\medskip\noindent which will lift the slur number $n$ by the given amount at +the next line change. Of course, \keyindex{liftslur} could be called in the middle +of a line, but the result would be rather ugly. + +These two features are used at bars number 131--132 of examples {\tty +PACIFIQB} and {\tty PACIFIQN}. + +\subsection{Refined slurs for clever typesetters} + In addition to the previous extension and improvement of existing features, +long nice horizontal slurs are also available, but they can be used only with +two restrictions: + +\begin{itemize} + +\item They are not managed when \itxem{glue} is inserted, especially by +\keyindex{temps} and \keyindex{barre}; + +\item They cannot be cut at line breaking. + +\end{itemize} + + Thus, their use is recommended only for nice slurs extending a few bars and +not supposed to occur across lines. With this restrictions, + +\begin{music} +\def\nbinstruments{1}\relax +\computewidths +\debutextrait +\normal +\temps\NOtes\zcharnote l{\huslur{3.5\noteskip}}\qu g\enotes +\NOtes\qu h\enotes +\NOtes\ql i\enotes +\NOtes\ql j\enotes +\finextrait +\end{music} + +\noindent has been obtained by coding: + +\begin{quote}\begin{verbatim} +\NOtes\zcharnote l{\huslur{3.5\noteskip}}\qu g\enotes +\NOtes\qu h\enotes +\NOtes\ql i\enotes +\NOtes\ql j\enotes +\end{verbatim}\end{quote} + +However, the best solution is now to use \ixem{\musixtex} which systematically +makes beautiful slurs, at the cost of a three pass system instead of one... + +\section{Bars} + +\subsection{Bars and spacing} + + + Ordinary \ital{bars} a coded using the macro \keyindex{barre} (this is a +French word\footnote{Whose advantage is that it differs from {\Bslash +bar} which is already defined in \TeX.}). This macro provides an optional +(discretionary) line or page break\footnote{Unless it is triggered according +to bar counting when \keyindex{autolines} has been invoked.}. It also +provides some \ital{glue} in order to expand the text over an evenly filled +line. + + +\medskip However, since the number of bars in a score line is generally +small, it may be convenient to allow \ital{glue} not only on each sides of +\ital{bars}. This can be done using the macro \keyindex{temps} (the +French word for \ital{beat}). This macro has two effects: + +\begin{enumerate} + \item it inserts some \ital{glue} but prevents line breaking\footnote{This +could unpleasantly occur if you insert a space...}, + \item if some ties or slurs are pending it expands them across the glue by +writing an \keyindex{hrule} which overlaps the unfinished tie and makes it +look prolongated. + \end{enumerate} + + +\medskip + Whatever the care you exercize in adjusting the size of the +\keyindex{elemskip}, you are still likely to find some broken ties (which +indicate excessive glue disassembling the gliding tie \keyindex{hrule}s) or +some unexpected (and unwanted) line breaks or some Over[aw]full +\keyindex{hbox}es. A useful means of estimating the remaining space to be +filled with glue consists in declaring \keyindex{raggedlinestrue}~: after +that, an \keyindex{hfil} will be inserted by \musictex\ before each computed +(when using \keyindex{autolines}) or forced line break. Thus, all the musical +text will be packed on the left of the line and you will clearly see the +amount of remaining space. Then, it will be up to you do decide changing some +spacing parameters. + + +\medskip\noindent{\bf Important: \sl do not use \keyindex{temps} when +\ital{beams} are pending, otherwise their spatial synchronization would fail. + In other words, ties and slurs can jump over glue (because horizontal rules +may overlap and thus have some elasticity) but beams (as well as any oblique +lines) cannot.} + +\subsection{Bar numbering} +\rm Unless otherwise specified, \index{bar numbering}bars are +numbered. This is a good means of finding errors provided that the Music\TeX\ +user has put comments in his source text recording the (expected) bar number. +However, this can look unpleasant for final outputs, since the habit is to +number bars only each other five or ten bars. This is not a serious problem +since the frequency of bar numbering is defined as: + +\medskip{\Bslash def\keyindex{freqbarno}\{1\}} + +\medskip +If you replace the {\tty 1} by {\tty 5}, bar numbering will occur each other five +bars. You can also inhibit any bar number printing by telling: + +\medskip{\Bslash def\bslash wbarno\{\}} + +\medskip\noindent or, in a more clever way: + +\medskip{\Bslash def\bslash freqbarno\{9999\}}. + +\medskip The bar counter is also accessible, its name is \keyindex{barno}. +This has nothing to do the the bar counting invoked by \keyindex{autolines}, +so you can change it without any dramatic consequence. + +\subsection{Full and instrument divided bars} + Normally, bars (as well as double bars, final bars and repeat bars) are +drawn as a continuous line, starting for the bottom of the lower staff of the +lower instrument, and ending at the top of the upper staff of the upper +instrument. However, one may want to have discontinuous bars, that is, one +continuous bar for all the staffs of a unique instrument. This is done by +issuing the command \keyindex{sepbarrules}. An example of this is given in the +{\tty ANGESCAO} (or {\tty ANGESCAM}) example; it has also been used in the +example of section \ref{avemaria}. + + The initial situation can be forced or restored by +\keyindex{stdbarrules}. + +\section{Line and page breaking}\label{linepagebreak} + + +Bars provide a line breaking mechanism which is supposed to enable \TeX\ +to break a full score into lines and pages, with an optimal distribution +of the text into lines and pages. Unfortunately, this does not work +correctly for scores of more that approximately one page. The reason is +that \TeX\ must compile the entire contents of a paragraph, before it +tries to break it into lines and pages. Therefore, one cannot rely on \TeX\ +to make that work which automatically results in the diagnostic {\tty TeX +capacity exceeded, memory...}. +%\check + + +\medskip To circumvent this dramatically restrictive capacity\footnote{\TeX\ +has been designed to type text, not music.} unless you use some +Big\TeX\footnote{Whose drawback is that it is very slow on ordinary PCs.} +another mechanism must be invoked to break lines.\index{Big\protect\TeX} + + +\medskip The first one is the manual one: you replace some of the {\Bslash +barre} macro calls by either \keyindex{alaligne} (equivalent to +\keyindex{break} within text: in fact it contains a \keyindex{break} plus +some (many) other things). In the same way, you can code {\Bslash alapage} to +force an \keyindex{eject} with proper reinitialization of staffs, clefs and +signatures. + + +\medskip The second one is fit for scores with +bars of regular length: after \keyindex{debutmorceau}, you code the +following macro: + + +\medskip\Bslash autolines $tml$ + +\medskip\noindent\rm where $t$ is the number of \ital{elementary spacings} +(the length of {\Bslash notes...\bslash enotes}) in an average bar, $m$ is +the number of bars you wish in a line and $l$ is the number of lines you wish +in a page\footnote{After having coded nearly one hundred of pages of music, I +strongly recommend the use of \keyindex{autolines} except when inserting +short excerpts of less than one line, such as in musicographic books.}. + +\medskip This sets some parameters, namely \keyindex{maxbarsinline} and +\keyindex{maxlinesinpage} which are simply used to count the bars, optionally +perform \keyindex{alaligne} or \keyindex{alapage} instead of the normal +\keyindex{barre}. You may freely alter the values of these parameters, once +they have been established by \keyindex{autolines}. Moreover, you can still +force line breaking of page ejection using {\Bslash alaligne} or +\keyindex{alapage} without problem since these macros actually reset the bar +counters appropriately. + + +\medskip On the other hand, you may want to forbid line breaking at a bar, +then you replace {\Bslash barre} by \keyindex{xbarre}. + + +\medskip Conversely, you may want to +break a line \ital{not at a bar}\footnote{For example, you may prefer to turn +the page at a place where the pianist has one hand free.}. This is allowed by +\keyindex{zbarre} (optional line break) or forced by {\Bslash +zalaligne} or \keyindex{zalapage}. + + +\medskip +The final heavy double bar of a piece is provided by \keyindex{finmorceau}. +If you just want to terminate the text with a simple bar, you say +\keyindex{suspmorceau}. If you want to terminate it without a bar, you code +\keyindex{zsuspmorceau}. Once you have stopped the score by any of these +means, you can restart it using \keyindex{reprmorceau}. + +However, using {\Bslash reprmorceau} after a {\Bslash finmorceau} may have a +little drawback: if {\Bslash finmorceau} occurs at the bottom of a page +defined by \keyindex{autolines}, it does not cause a page break which could +lead to en empty page after the end of the piece but, conversely, this might +cause another trouble if this only was the end of a scora part, not the end of +the whole score. Therefore, an alternate command has been provided, namely +\keyindex{Suspmorceau} which duly performs the page break, in order to be +ready to score another part of a complex peace. Thus, as a rule~: + +\begin{itemize} + \item use \keyindex{finmorceau} at the very end of your score, + \item use \keyindex{Suspmorceau} at the end of the parts of a complex piece. + +\end{itemize} + + +\medskip If you want the next vertical bar to be a double bar, you have to +declare \keyindex{setdoublebar} before the \keyindex{barre} (or the +\keyindex{suspmorceau} or \keyindex{alaligne} or \keyindex{alapage}) to be +marked with a double thin bar. + + +\section{Changing score attributes} + + + As seen before, you can change the +signature of the whole set of instruments by \keyindex{generalsignature}~$n$ +where $n>0$ means a number of sharps, $n<0$ means a number of flats. Or, you +may prefer to change the signature of only one or two instruments by the +statement: + + +\medskip\Bslash sign$r$=$s$ + +\medskip\rm\noindent + %\check + where $r$ is the roman numeral of the instrument considered, and $s$ its +specific signature. Since you may change simultaneously (with respect to the +score) but consecutively (with respect to your code) the signatures of +several instruments, this change takes place only when you say +\keyindex{changesignature} (within a bar) or \keyindex{changecontext} (after +a single vertical rule) or \keyindex{Changecontext} (after a double vertical +rule). +%\check + In the same way, you may want to change the active clefs. +This is done by + +\medskip\tty\keyindex{cleftoks$r$}=\{\{$s1$\}\{$s2$\}\{$s3$\}\{$s4$\}\}\% + +\medskip\rm\noindent where $r$ is the roman numeral of the instrument, $s1$ +specifies the clef of the lower staff, $s2$ the clef of the second staff, +etc. One must always give four values with the above syntax, otherwise\dots\ +$s1=6$ means the \ital{bass} clef (\ixem{clef de fa} in French), $s1=0$ means +the \ital{violin} clef (\ixem{clef de sol} in French), $s1=1$ through $s1=5$ +mean the \ital{alto} clef (\ixem{clef d'ut} in French) set on first (lower) +through fifth (upper line of the staff). \index{violin clef}\index{bass +clef}\index{alto clef} + As seen above in the case of signatures, several clefs may be changed at the +same time; thus all the clef changes become operational only when the macro +\keyindex{changeclefs} is coded. Normal usage consists in issuing this +command before the bar, not after (this helps the music player when the +change happens across a line break). + + The \verb|\changeclefs| command normally takes some horizontal space to put +one of more clef symbols, but it may happen that you have no notes +immediately before on the staff whose clef is changed. In that case, you can +use \keyindex{zchangeclefs} which performs the same posting, overwritten left on +the last part of the score in that staff. Of course it is your responsability +to ensure that no notes will collide with the clef change symbols. + %\check + + Caution should be exercized changing clefs when \itxem{beams} are pending: +in fact the \verb|\changeclefs| and \verb|\zchangeclefs| perturbate the +computation of beams and this command should be invoked only + \begin{itemize} + \item out of {\Bslash notes}, {\Bslash Notes}... --- {\Bslash enotes} pairs; + \item only when no beam is pending\footnote{No problem with slurs and ties.}. +\end{itemize} + +If a clef change has to be typeset when one or several beams are pending, the +operation should be done in a more manual way: +\begin{itemize} + \item say \keyindex{saveclefs} instead of \keyindex{changeclefs}~: +This actually records the \keyindex{cleftoks$r$} statement and no further +{\Bslash changeclefs} will repeat the clef change; the new clef will not +be typeset by \verb|\saveclefs| itself but rather by the next \verb|\notes| or +\verb|\Notes| command; + \item say \verb|\charnote0{\smallclefdesol}| (resp. +\verb|\charnote0{\smallclefdefa}| or \verb|\charnote0{\smallclefdut}|) where +you like it and at the right staff (i.e. within {\Bslash notes}, {\Bslash +Notes}... --- {\Bslash enotes} pairs) to type set the wanted clef symbol. + \end{itemize} + As an example, an excerpt of {\sc Brahms}'s Intermezzo op.~117,1 provided by +Miguel {\sc Filgueiras}:\index{Brahms} + +\begin{music} +\parindent 1cm +\def\nbinstruments{1}\relax +\def\freqbarno{9999}% no bar numbers +\nbporteesi=2\relax +\cleftoksi={6000}% F- and G-clefs +\generalsignature{-3}% 3 flats +\relax +\debutextrait +\normal +\off{1em}\temps\Notes\larpeggio{E}5\zq{EI}\qu{N}\charnote0{\smallclefdesol}\relax +\nextstaff\qsk\ibl0e{-1}\zq{eg}\qb0l\zq{d}\qb0k\enotes +\cleftoksi={0000}\saveclefs\Notes\tbu0\zq{ce}\qh0j\relax +\nextstaff\zq{sn}\cl{l}\enotes +\Notes\zq{be}\qu{i}\nextstaff\zq{sn}\ql{l}\enotes +\cleftoksi={6000}\changeclefs\Notes\zq{E}\cu{I}\relax +\nextstaff\ibbu1h{-1}\zq{ae}\qh1h\tbu1\zq{N}\qh1g\enotes +\finextrait + \end{music} +\noindent which was coded as: + \begin{verbatim} +\begin{music} +\def\nbinstruments{1}\relax +\def\freqbarno{9999}% no bar numbers +\nbporteesi=2\relax +\cleftoksi={6000}\generalsignature{-3}% 3 flats +\debutextrait +\normal +\off{1em}\temps\Notes\larpeggio{E}5\zq{EI}\qu{N}% +\charnote0{\smallclefdesol}\relax +\nextstaff\qsk\ibl0e{-1}\zq{eg}\qb0l\zq{d}\qb0k\enotes +\cleftoksi={0000}\saveclefs\Notes\tbu0\zq{ce}\qh0j\relax +\nextstaff\zq{sn}\cl{l}\enotes +\Notes\zq{be}\qu{i}\nextstaff\zq{sn}\ql{l}\enotes +\cleftoksi={6000}\changeclefs\Notes\zq{E}\cu{I}\relax +\nextstaff\ibbu1h{-1}\zq{ae}\qh1h\tbu1\zq{N}\qh1g\enotes +\finextrait +\end{music} + \end{verbatim} + +\medskip \ital{Meter} changes are implemented the same way: + +\medskip\Bslash metertoks$r$=\{\{$m1$\}\{$m2$\}\{$m3$\}\{$m4$\}\}\% + +\medskip\rm\noindent + where $r$ is the roman numeral of the instrument, $m1$ specifies the meter +of the lower staff, $m2$ the meter of the second staff, etc. One must always +give four values with the above syntax, otherwise\dots\ Since meter changes +are meaningful only across bars, they are actually taken in account with +\keyindex{changecontext} or \keyindex{Changecontext} or \keyindex{alaligne} +or \keyindex{alapage}. + + +\section{Repeats} +%\check + + + To insert a \ital{repeat bar} you can use several sets of procedures. + +\subsection{Elementary and unsafe solutions} The +simplest consists in using the commands \keyindex{leftrepeatsymbol}, +\keyindex{rightrepeatsymbol} and \keyindex{leftrightrepeatsymbol} -- coded +outside the {\Bslash notes...\bslash enotes} pairs -- which will simply +insert these colon adorned double bars at the requested place. For example: + +\begin{music} + \def\nbinstruments{1} + \generalsignature{0}\savesignature + \nbporteesi=1\cleftoksi={{0}{0}{0}{0}}\relax + \debutextrait\normal + \notes\hu g\enotes + \leftrepeatsymbol + \notes\hu h\enotes + \leftrightrepeatsymbol + \notes\hu i\enotes + \rightrepeatsymbol + \Notes\wh j\enotes + \finextrait +\end{music} + + \noindent has been coded as: +%\check + + +\begin{quote}\begin{verbatim} +\notes\hu g\enotes +\leftrepeatsymbol +\notes\hu h\enotes +\leftrightrepeatsymbol +\notes\hu i\enotes +\rightrepeatsymbol +\Notes\wh j\enotes +\end{verbatim}\end{quote} + +\medskip + However, the previous way of coding does not provide for line breaking +at repeat bars, nor does it advance the bar numbering. In fact, this way of +coding if only fit for repeats occurring in the middle of a bar. + + +\medskip A second way of coding consists in saying \keyindex{setleftrepeat}, +\keyindex{setrightrepeat} or \keyindex{setleftrightrepeat} before a bar +(\keyindex{barre}), \keyindex{suspmorceau} or \keyindex{changecontext}). In +this case, the next single\footnote{\keyindex{setrightrepeat} does not change +the effect of \keyindex{finmorceau}; in that case use +\keyindex{finrightrepeat}.} vertical bar will be replaced with the selected +repeat bar. This meets the traditional music typesetting conventions in the +only case of the \ital{right repeat} but, unfortunately, left and left/right +repeats use to behave in a different manner when in the middle of a line and +at a line break. + + +\subsection{Safe and correct coding} The third coding, namely the correct coding -- i.e. transforming in +the correct manner when occurring at a line break -- is obtained by +substituting the \keyindex{barre} command with \keyindex{leftrepeat}, +\keyindex{rightrepeat} and \keyindex{leftrightrepeat}. +%\check + + +\medskip + Now, if you want to force a new line at a repeat, you should code +respectively: + + +\medskip\keyindex{setrightrepeat}\keyindex{alaligne} + + \keyindex{setrightrepeat}\keyindex{suspmorceau} + + {\Bslash alaligne}\keyindex{leftrepeatsymbol} + + \keyindex{reprmorceau}\keyindex{leftrepeatsymbol} + + \keyindex{debutmorceau}\keyindex{leftrepeatsymbol} + +\medskip\noindent or the combination of two of these in the case of a +left/right repeat. + +\subsection{Specific first and second pass scoring} + +A frequent situation consists in a long repeated score, but the last few bars +are different at first pass and at second pass. This can be specified by +saying \keyindex{setprimavolta} or \keyindex{setsecondavolta}\footnote{From +the Italian \ital{prima volta} meaning ``first time'', and \ital{seconda +volta} meaning ``second time''.} before the next \keyindex{barre} or +\ital{repeat} (usually {\Bslash rightrepeatsymbol}). For example~: + + +\begin{music} + \def\nbinstruments{1} + \generalsignature{0}\savesignature + \nbporteesi=1\cleftoksi={{0}{0}{0}{0}}\relax + \debutextrait\normal + \Notes\qu {ghij}\enotes + \setprimavolta\barre + \Notes\qu {hijk}\enotes + \setsecondavolta\setrightrepeat\barre + \Notes\qu {ijkl}\enotes + \barre + \NOTes\wh j\enotes + \finextrait +\end{music} + + \noindent has been coded as: +\begin{quote}\begin{verbatim} + \def\nbinstruments{1} + \generalsignature{0}\savesignature + \nbporteesi=1\cleftoksi={{0}{0}{0}{0}}\relax + \debutextrait\normal + \Notes\qu {ghij}\enotes + \setprimavolta\barre + \Notes\qu {hijk}\enotes + \setsecondavolta\setrightrepeat\barre + \Notes\qu {ijkl}\enotes + \barre + \NOTes\wh j\enotes + \finextrait +\end{verbatim} \end{quote} + +The ``prima volta'' and ``seconda volta'' symbols are normally set at {\tty +2\bslash Interligne} above the upper line of the staff, and one centimeter +wide. If the music typesetter does not like that, he can issue for example: + +\medskip\keyindex{Setprimavolta}\verb|{4\Interligne}{0.78in}| + +\medskip\noindent where the first argument is the vertical offset, and the +second one is the length of the upper horizontal line. A symmetrical feature is +\keyindex{Setsecondavolta} with also two dimension arguments. + +Note that these special settings are only valid for one usage; after that, +they are reset to the standard values. + +%\check +\subsection{Large scope repeats} Large scope repeats have also been provided +special symbols, namely using \keyindex{coda} and \keyindex{segno}~: + + \begin{music} +\def\nbinstruments{1}\relax +\computewidths +\nbporteesi=1\relax +\debutextrait +\normal +\notes\sk\enotes +\temps\NOtes\coda l\enotes +\temps\NOtes\segno l\enotes +\finextrait + \end{music} + +\medskip\noindent which have been coded: + +\begin{quote}\begin{verbatim} +\NOtes\coda l\enotes +\NOtes\segno l\enotes +\end{verbatim}\end{quote} + +%\check + \section{Miscellaneous} + +\subsection{Putting anything anywhere} + +Special macros are provided to help the composer to set any \TeX\ +text on the staffs. The macro + +\medskip\keyindex{charnote}~$p$\tty\{ {\rm text} \} + +\medskip\rm\noindent +sets the given text with its base line at pitch $p$ of the current staff +(this means it must be coded inside {\Bslash notes...\bslash enotes}). +Whatever the length of the text, the spacing is \keyindex{noteskip}. +If you do not want it to cause spacing, you code \keyindex{zcharnote}. +If you want the possible spilling text to expand on the left rather than on the +right, then you can use \keyindex{lcharnote}. +% + +\medskip +To place some text at the mid-position between the two staffs of +a keyboard instrument, you may code: + +\medskip\tty\keyindex{midtwotext}\{ {\rm text} \}\ \ \% \rm (spacing) + +\medskip\tty\keyindex{zmidtwotext}\{ {\rm text} \}\ \ \% \rm (non spacing) + +\medskip\rm\noindent being however +careful, a) to put it inside {\Bslash notes...\bslash enotes}, b) to code it in the +text of the lower staff. + +\medskip A text to be put above the current staff is introduced by +{\tty\keyindex{uptext}\{...\}}. This may however cause some collision with bar +numbering or notes above the staff; it is then wise to use {\tty +\keyindex{Uptext}\{...\}} which puts the text two pitches higher (recommended +to post the tempo). + +\medskip +The macro \keyindex{zcharnote} is fit for coding special notations like +accents above or below the notes. It behaves like \keyindex{charnote} but +causes no spacing. +\subsection{Metronomic indications} + +Metronomic indication deserves a special macro. The mention: + \par\centerline{\def\nbinstruments{0}\computewidths +\metron{\hup}{60}}\smallskip\noindent + is coded by {\tty\keyindex{metron}\{\bslash hup\}\{60\}} (normally embedded +in \keyindex{Uptext} which is in turn embedded within {\Bslash +notes...\bslash enotes}). + + + +\subsection{Usual ornaments} + +%\check +\ital{Arpeggios} (i.e. \raise -4pt\hbox{\musicxx\char92}\ ) can be coded with + the macro + +\medskip\keyindex{arpeggio} $pm$ + +\medskip\rm\noindent where $p$ is the pitch of +the base of the arpeggio symbol and $m$ is its multiplicity (one period is +equal to one space between staff lines, i.e. 5 points). This macro causes +a space of one note head width. If should be issued before the concerned +chords. Its variant \keyindex{larpeggio} sets the arpeggio symbol slightly +more on the left, in order to avoid collision with accidentals in front of +the chords. + + Note the \keyindex{arpeggio} and \keyindex{larpeggio} make an extra spacing +of width one notehead (i.e; \keyindex{qsk}) so that it is wise to insert a +{\Bslash qsk} in the other staffs before notes which are syncrhonous to the +arpeggiated note. + +\medskip \ital{Trills} can be coded in several ways. \keyindex{trille}~$l$ +(where $l$ is a \TeX\ dimension) yields \hbox{\trille{1cm}} while +\keyindex{Trille}~$l$ (where $l$ is a \TeX\ dimension) yields +\hbox{\Trille{2cm}}. To put these patterns at a given pitch, one may use +\keyindex{xtrille}~$pl$ or \keyindex{xTrille}~$pl$. On the other hand +\keyindex{ntrille}~$pn$ is equivalent to +\keyindex{xtrille}~$p${\tty\{$n$\bslash noteskip\}} and +\keyindex{nTrille}~$pn$ is equivalent to {\tty +\keyindex{xTrille}~$p$\{$n$\bslash noteskip\}} + + +\medskip Other \ital{ornaments} are available: + + \begin{itemize} + \item \keyindex{mordant}~$p$ for \hbox to 1.5em{\mordant 0\hss}, + \item \keyindex{pince}~$p$ for \hbox to 1.5em{\pince 0\hss}, + \item \keyindex{Pince}~$p$ for \hbox to 1.5em{\Pince 0\hss}, + \item \keyindex{Lpince}~$p$ for \hbox to 2em{\hss\Lpince 0\hss} (thanks to A. +{\sc Egler})\index{Egler, A.}, + \item \keyindex{Pincesw}~$p$ for \hbox to 2em{\hss\Pincesw 0\hss}, + \item \keyindex{Pincene}~$p$ for \hbox to 2em{\hss\Pincene 0\hss}, + \item \keyindex{Pincenw}~$p$ for \hbox to 2em{\hss\Pincenw 0\hss}, + \item \keyindex{turn}~$p$ for \hbox to 2.5em{\kern 0.6em\turn 0\hss}, + \item \keyindex{backturn}~$p$ for \hbox to 2.5em{\kern 0.6em\backturn 0\hss}, + \item \keyindex{upz}~$p$ (upper \ital{pizzicato}) to put a dot above a note +head at pitch $p$, + \item \keyindex{lpz}~$p$ (lower \ital{pizzicato}) to put a dot below a note +head at pitch $p$, + \item \keyindex{usf}~$p$ (upper \itxem{sforzando}) to put a $>$ accent above +a note head at pitch $p$, + \item \keyindex{lsf}~$p$ (lower \itxem{pizzicato}) to put a $>$ accent below +a note head at pitch $p$, + \item \keyindex{ust}~$p$ (upper \itxem{staccato} or \itxem{portato}) to put a +hyphen above a note head at pitch $p$, + \item \keyindex{lst}~$p$ (lower \ital{staccato} or \ital{portato}) to put a +hyphen below a note head at pitch $p$, + \item \keyindex{uppz}~$p$ (upper strong \ital{pizzicato}) to put an +apostrophe above a note head at pitch $p$, + \item \keyindex{lppz}~$p$ (lower strong \ital{pizzicato}) to put a reversed +apostrophe below a note head at pitch $p$. + \item \keyindex{pointdorgue}~$p$ puts a \itxem{fermata} (in French ``point +d'orgue'') at pitch $p$. No spacing occurs. + \item \keyindex{pointdurgue}~$p$ puts a reverse \ital{fermata} at the same +place. + \item \keyindex{PED} to insert the piano pedal command below the staff; +pedal release is specified by \keyindex{DEP}; thus the following example + + \begin{music} +\def\nbinstruments{1}\relax +\computewidths +\cleftoksi={{6}{0}{0}{0}}\relax +\nbporteesi=2\relax +\debutextrait +\normal +\temps\NOtes\qsk\PED\wh J|\qsk\qu h\enotes +\temps\NOtes|\qu g\enotes +\temps\NOtes|\hu k\enotes +\temps\Notes\DEP\enotes +\finextrait + \end{music} + + \noindent was coded as: + +\begin{verbatim} +\temps\NOtes\qsk\PED\wh J|\qsk\qu h\enotes +\temps\NOtes|\qu g\enotes +\temps\NOtes|\hu k\enotes +\temps\Notes\DEP\enotes +\end{verbatim} + + \end{itemize} + +%\check + +\subsection{New line synchronization of coding} + + The procedure named \keyindex{everystaff} is executed each time a new system +is typed. It is normally void, but it can be defined (simply by {\Bslash +def\keyindex{everystaff}\{...\}}) to tell \musictex\ to post anything +reasonable at the beginning of each system. It was used in the example +{NWIDOR} to post octaviation dashed lines at the end of the piece. + + +\medskip + The procedure named \keyindex{atnextline}, normally void, is executed at the +next computed (through \keyindex{autolines}) or forced line break (using +\keyindex{alaligne} or \keyindex{alapage}). More precisely, it is executed +after the break and before the next system is typed. Thus it is fit for +posting new definitions of layout parameters, when no system is +pending\footnote{Its logic is similar to plain \TeX's \keyindex{vadjust} +command.}. + + \medskip + \index{tenor violin clef}In some scores, tenor parts are not code using the +\ital{bass} clef, but using rather the \ital{violin clef} subscripted by a +{\tty 8}. This is not directly supported by the \keyindex{cleftoks$r$}{\tty=} +command, but it can be handled using \keyindex{everystaff} and \keyindex{zcharnote}. +As an example the following score + +\begin{music} +\def\nbinstruments{4} +\cleftoksi={6000} +\cleftoksii={0000} +\cleftoksiii={0000} +\cleftoksiv={0000} +\font\eightfig=cmr8 +\def\everystaff{\znotes&\zcharnote{-6}{\eightfig + \kern -1.4\Interligne 8}&\zcharnote{-6}{\eightfig + \kern -1.4\Interligne 8}\enotes} +\debutextrait +\normal +\NOtes\hu{HIJK}&\hu{efgh}&\hl{hijk}&\hl{hmlk}\enotes +\finextrait +\end{music} +\noindent was coded as: + +\begin{quote}\begin{verbatim} +\def\nbinstruments{4} +\cleftoksi={6000} +\cleftoksii={0000} +\cleftoksiii={0000} +\cleftoksiv={0000} +\font\eightfig=cmr8 +\def\everystaff{\znotes&\zcharnote{-6}{\eightfig + \kern -1.4\Interligne 8}&\zcharnote{-6}{\eightfig + \kern -1.4\Interligne 8}\enotes} +\debutextrait +\normal +\NOtes\hu{HIJK}&\hu{efgh}&\hl{hijk}&\hl{hmlk}\enotes +\finextrait +\end{verbatim}\end{quote} + where the \verb|\eightfig| font declaration can obviously be omitted if +the \TeX\ format declares an 8 point roman font. + +%\check + +\subsection{Beams across bars} + +The \keyindex{barre} macro inserts glue and terminates spacing account. Thus +it is not compatible with pending \itxem{beams} and this is the usual way most +composers wrote their scores, at least until the beginning of the XIX-th +century. Unfortunately, later composers ({\sc Brahms}, {\sc Scriabin}, etc.) +wanted to write beams jumping across bars. + +This can be partly handled by \musictex, using the macro +\keyindex{xbeambarre}\footnote{An ugly mixture of French and English which is +therefore not likely to be redefined by somebody else.} which puts a bar line +of global width {\Bslash elemskip} with no glue around. Bar counting is done +for \keyindex{autolines} purpose but no line breaking can occur, which means +that the beams going across line or page breaks are not supported. + +We give an example from {\sc Brahms}'s Intermezzo op.~118,1 provided by +Miguel {\sc Filgueiras}:\index{Brahms} + +\begin{music} +\def\interfacteur{13} +\def\nbinstruments{1} +\nbporteesi=2\relax +\cleftoksi={6000} +\generalmeter{\allabreve} +\debutextrait +\normal +\off{1em}\temps\Notes\qp\nextstaff\Ilegu0r\zq{q}\ql{j}\enotes +\barre +\Notes\qsk\ibu0a1\qh0{CEJLcL}\relax +\nextstaff\qsk\rw{l}\pt{p}\zh{_p}\pt{i}\hl{_i}\enotes +\Notes\qh0J\itenl1a\qh0a\nextstaff\tleg0\zq{o}\ql{h}\enotes +\xbeambarre +\Notes\zh{.L.a}\hl{.e}\relax +\nextstaff\tten1\qb0{chj}\tbl0\qb0l\cl{q}\ds\enotes +\Notes\qp\nextstaff\zq{q}\ql{j}\enotes +\finextrait + \end{music} +\noindent whose coding is: + +\begin{verbatim} +\begin{music} +\def\interfacteur{13} +\def\nbinstruments{1} +\nbporteesi=2\relax +\cleftoksi={6000} +\generalmeter{\allabreve} +\debutextrait +\normal +\off{1em}\temps\Notes\qp\nextstaff\Ilegu0r\zq{q}\ql{j}\enotes +\barre +\Notes\qsk\ibu0a1\qh0{CEJLcL}\relax +\nextstaff\qsk\rw{l}\pt{p}\zh{_p}\pt{i}\hl{_i}\enotes +\Notes\qh0J\itenl1a\qh0a\nextstaff\tleg0\zq{o}\ql{h}\enotes +\xbeambarre +\Notes\zh{.L.a}\hl{.e}\relax +\nextstaff\tten1\qb0{chj}\tbl0\qb0l\cl{q}\ds\enotes +\Notes\qp\nextstaff\zq{q}\ql{j}\enotes +\finextrait + \end{music} +\end{verbatim} + +%\check +\section{Small and tiny notes} + +Before entering details, let us point out that we are presently concerned with +typing notes of smaller size than the normal one, without attempting to change +the interval between the five lines building a single staff. Changing staff +line interval will be treated in a further section. + +\subsection{Cadenzas and explicit ornaments} + + Ornaments and \itxem{cadenzas} usually need to be written using smaller +notes\footnote{This is independent of the staff size.}. This can be done +everywhere by stating \keyindex{smallnotesize} or \keyindex{tinynotesize}. +Normal note size is restored by \keyindex{normalnotesize}.\index{ornaments} + + These macros only have a local scope. Thus, if these macros are invoked +outside the {\Bslash notes...\bslash enotes} pair, the change is valid for +the rest of the piece unless explicitely modified but, if they are invoked +inside, their effect is local to the current staff of the current {\Bslash +notes...\bslash enotes} pair. As an example, the following excerpt (beginning +of the Aria of the ``Creation'' by Joseph {\sc Haydn})\index{Haydn, J.} + +\begin{music} +\def\DS{\hbox{\ds}} +\def\FS{\hbox{\kern 0.3\noteskip\soupir}\kern -0.3\noteskip} +\def\qbl#1#2#3{\ibl{#1}{#2}{#3}\qb{#1}{#2}}% +\def\qbu#1#2#3{\ibu{#1}{#2}{#3}\qh{#1}{#2}}% +\def\nbinstruments{2}% +\generalmeter{\meterfrac{4}{4}}% +\signaturegenerale{0}% +\nbporteesii=1\relax +\nbporteesii=2\relax +\cleftoksi={{6}{0}{0}{0}} +\cleftoksii={{6}{0}{0}{0}} +\etroit +\debutextrait +\NOTes\soupir&\soupir|\qu g\enotes +% mesure 1 +\advance\barno by -1\relax +\barre\NOtes\itenu2J\wh J&\zw N\ibl0c0\qb0e|\qu j\enotes +\notes&\qbl0c0|\noteskip=0.6\elemskip\tinynotesize +\Ibbu1ki2\qh1{kj}\tqh1i\qsk\enotes +\Notes&\qb0e\tbl0\qb0c|\qu j\enotes +\temps\Notes&\ibl0c0\qb0{ece}\tbl0\qb0c|\ql l\sk\ql j\enotes +% mesure 2 +\barre\Notes\tten2\wh J&\ql J\sk\ql L|\ppt g\rlap{\qu g}\qbl1e0\relax + \zq c\qb1e\zq c\qb1e\relax + \zq c\tbl1\rlap{\qb1e}\ \ \ccu h\enotes +\temps\Notes&\ql N\sk\pt L\ibl0L{-4}\qb0L|\ibl1e0\zq c\rlap{\qb1e}\cu g\relax + \zq c\rlap{\qb1e}\raise\Interligne\DS \rlap{\qu g}\qb1g\enotes +\notes&\sk\tbbl0\tbl0\qb0J|\tbl1\zq c\qb1e\enotes +\finextrait +\end{music} + +\noindent can be coded as: + +\begin{verbatim} +\def\DS{\hbox{\ds}} +\def\FS{\hbox{\kern 0.3\noteskip\soupir}\kern -0.3\noteskip} +\def\qbl#1#2#3{\ibl{#1}{#2}{#3}\qb{#1}{#2}}% +\def\qbu#1#2#3{\ibu{#1}{#2}{#3}\qh{#1}{#2}}% +\def\nbinstruments{2}% +\generalmeter{\meterfrac{4}{4}}% +\signaturegenerale{0}% +\nbporteesii=1\relax +\nbporteesii=2\relax +\cleftoksi={{6}{0}{0}{0}} +\cleftoksii={{6}{0}{0}{0}} +\etroit +% +% end of preliminary definitions +% +\debutextrait +\NOTes\soupir&\soupir|\qu g\enotes +% mesure 1 +\advance\barno by -1\relax +\barre\NOtes\itenu2J\wh J&\zw N\ibl0c0\qb0e|\qu j\enotes +\notes&\qbl0c0|\noteskip=0.6\elemskip\tinynotesize +\Ibbu1ki2\qh1{kj}\tqh1i\qsk\enotes +\Notes&\qb0e\tbl0\qb0c|\qu j\enotes +\temps\Notes&\ibl0c0\qb0{ece}\tbl0\qb0c|\ql l\sk\ql j\enotes +% mesure 2 +\barre\Notes\tten2\wh J&\ql J\sk\ql L|\ppt g\rlap{\qu g}\qbl1e0\relax + \zq c\qb1e\zq c\qb1e\relax + \zq c\tbl1\rlap{\qb1e}\ \ \ccu h\enotes +\temps\Notes&\ql N\sk\pt L\ibl0L{-4}\qb0L|\ibl1e0\zq c\rlap{\qb1e}\cu g\relax + \zq c\rlap{\qb1e}\raise\Interligne\DS \rlap{\qu g}\qb1g\enotes +\notes&\sk\tbbl0\tbl0\qb0J|\tbl1\zq c\qb1e\enotes +\finextrait +\end{verbatim} + + \subsection{Grace notes} + + Grace notes are a special case of small and tiny notes: the difference is +that they are always coded as eighth notes with an oblique bar over the flag. +To perform this, special variants of \keyindex{cu} and \keyindex{cl} have been +provided, namely \keyindex{grcu} and \keyindex{grcl}, with the only difference +that the flag has been slashed. Using this together with the note reduction +macro, grace notes (optionally chord grace notes) can be easily coded: + + \begin{music} + \def\nbinstruments{1} + \nbporteesi=1\relax + \cleftoksi={{0}{0}{0}{0}}\relax + \debutextrait + \normal + \NOtes\qsk\hu h\enotes + \temps\smallnotesize + \notes\grcu j\enotes + \temps\normalnotesize + \NOtes\hu i\enotes + \barre\tinynotesize + \notes\qsk\zq h\grcl j\enotes + \normalnotesize + \NOTEs\wh i\enotes + \finextrait + \end{music} + + The previous example was coded as: + +\begin{quote}\begin{verbatim} +\NOtes\qsk\hu h\enotes +\temps\smallnotesize +\notes\grcu j\enotes +\temps\normalnotesize +\NOtes\hu i\enotes +\barre\tinynotesize +\notes\qsk\zq h\grcl j\enotes +\normalnotesize +\NOTEs\wh i\enotes +\end{verbatim}\end{quote} + +\subsection{Gregorian note shapes}\label{gregnotes} + Provided that four line staffs are used, \itxem{gregorian music} was +frequently quoted using specific \itxem{neumes}, and this way of coding +has been commonly used for the coding of liturgical chant in the Catholic +Church until the middle of the twentieth century. Symbols available in +\musictex\ are~: + +\begin{itemize} + \item Diamond shaped \itxem{punctum}: \raise 2.5pt\hbox{\musicxx\char 0} = +\keyindex{diamg}~$p$~, + \item Square \itxem{punctum}: \raise 2.5pt\hbox{\musicxx\char 1} = +\keyindex{carrg}~$p$~, + \item Left stemmed \itxem{virga}: \raise 2.5pt\hbox{\musicxx\char 2} = +\keyindex{carpg}~$p$~, + \item Right stemmed \itxem{virga}: \raise 2.5pt\hbox{\musicxx\char 3} = +\keyindex{carqg}~$p$~. \end{itemize} + +They all have a non-spacing variant, which are~: + +\begin{itemize} + \item Non spacing diamond shaped \itxem{punctum}: \raise +2.5pt\hbox{\musicxx\char 0} = \keyindex{zdiamg}~$p$~, + \item Non spacing square \itxem{punctum}: \raise 2.5pt\hbox{\musicxx\char 1} += \keyindex{zcarrg}~$p$~, + \item Non spacing left stemmed \itxem{virga}: \raise +2.5pt\hbox{\musicxx\char 2} = \keyindex{zcarpg}~$p$~, + \item Non spacing right stemmed \itxem{virga}: \raise +2.5pt\hbox{\musicxx\char 3} = \keyindex{zcarqg}~$p$~. + \end{itemize} + +To memorize these symbols, remember that {\tt carr} comes from the French +word \ital{carr\'e} which means \ital{square}, that the letter {\tt p} has a +tail on the left side and the {\tt q} has a tail on the right side. Other +\itxem{neumes} can ne obtained by combining two or more of these symbols + + +\subsection{Percussion stemless note shapes}\label{percunotes} +Percussion\index{percussion music} music often uses stemless note heads +different from the usual ones. + +\begin{itemize} + \item White diamond or \itxem{rimshot}: \raise 2.5pt\hbox{\musicxx\char 127} = +\keyindex{diamw}~$p$~, + \item The \itxem{shaker}: \raise 2.5pt\hbox{\musicxx\char 79} = +\keyindex{shaker}~$p$~, + \item The {tremolo chord}: \hbox to 2em{\hss\musicxx\char 78\hss} = +\keyindex{tremolord}~$p$~, +\end{itemize} + + +They all have a non-spacing variant\footnote{Stemless, not to be confused with +{\bslash zq} qui extends stems within a chord. For that purpose, see +\ref{genpercus} and \ref{othernotes}.}, which are~: + +\begin{itemize} + \item Non spacing white diamond or \itxem{rimshot}: \raise +2.5pt\hbox{\musicxx\char 127} = \keyindex{zdiamw}~$p$~, + \item Non spacing \itxem{shaker}: \raise 2.5pt\hbox{\musicxx\char 79} = +\keyindex{zshaker}~$p$~, + \item Non spacing {tremolo chord}: \hbox to 2em{\hss\musicxx\char 78\hss} = +\keyindex{ztremolord}~$p$~, +\end{itemize} + + +\subsection{Other note shapes}\label{othernotes} The classical note heads +given above --- namely \raise 0.5ex\hbox{\musicnorfont\char 33}~, \raise +0.5ex\hbox{\musicnorfont\char34} and \raise 0.5ex\hbox{\musicnorfont\char35} +--- can be replaced with less classical note heads, for example to code +special \itxem{violin harmonic notes} or \itxem{percussion music}. See an +example in \ref{abnormalscores} + + At present time, alternate available note heads are~: + \begin{itemize} + + \item The \raise 0.5ex\hbox{\musicnorfont\char 0} symbol which is obtained using the \verb|\qu|, +\verb|\qh| etc. macros replacing the ``{\tt q}'' letter in the macro name +with a ``{\tt y}'' or writing \keyindex{ycu}, \keyindex{ycl}, +\keyindex{yccu}, \keyindex{ycup} etc. instead of \verb|\cu|, \verb|\cl|, +\verb|\ccu|, \verb|\cup|, etc. + + \item The \raise 0.5ex\hbox{\musicnorfont\char 127} symbol which is obtained +using the \verb|\qu|, \verb|\qh| etc. macros replacing the ``{\tt q}'' letter +in the macro name with a ``{\tt d}'' (think of \ital{diamond}) or writing +\keyindex{dcu}, \keyindex{dcl}, \keyindex{dccu}, \keyindex{dcup}, etc. +instead of \verb|\cu|, \verb|\cl|, \verb|\ccu|, \verb|\cup|, etc. + + + \item The \raise 0.5ex\hbox{\musicnorfont\char 39} symbol which is obtained +using the \verb|\qu|, \verb|\qh| etc. macros replacing the ``{\tt q}'' letter +in the macro name with a ``{\tt k}'' or writing \keyindex{kcu}, +\keyindex{kcl}, \keyindex{kccu}, \keyindex{kcup}, etc. instead of \verb|\cu|, +\verb|\cl|, \verb|\ccu|, \verb|\cup|, etc. + + + \item The \raise 0.5ex\hbox{\musicnorfont\char"35} symbol which is obtained +using the \verb|\qu|, \verb|\qh| etc. macros replacing the ``{\tt q}'' letter +in the macro name with a ``{\tt x}'' or writing \keyindex{xcu}, +\keyindex{xcl}, \keyindex{xccu}, \keyindex{xcup} instead of \verb|\cu|, +\verb|\cl|, \verb|\ccu|, \verb|\cup|, etc. + + + \item The \raise 0.5ex\hbox{\musicnorfont\char38} symbol which is obtained +using the \verb|\qu|, \verb|\qh| etc. macros replacing the ``{\tt q}'' letter +in the macro name with the pair ``{\tt ox}'' or writing \keyindex{oxcu}, +\keyindex{oxcl}, \keyindex{oxccu}, \keyindex{oxcup} instead of \verb|\cu|, +\verb|\cl|, \verb|\ccu|, \verb|\cup|, etc. + + \end{itemize} + %\check +\section{Staff size} \index{staff size} +\subsection{Moving from 20pt to 16pt general staff sizes and conversely} + You also want to write some parts of your score in 20pt +staff size and in 16pt staff size, namely +for distinct parts of pieces. Changing the \ixem{general staff size} +is done by saying: + +\tty\keyindex{musicsize}=16\bslash computespecifics\quad \rm or + +\Bslash musicsize=20\keyindex{computespecifics} + +\rm\noindent respectively. + +\subsection{Changing staff size for certain instruments}\label{staffspace} +Regardless of the general choice of 16pt or 20pt staff sizes, it is now +possible to assign certain instruments -- not sperate staffs belonging to a +same instrument -- to have narrower staff size. This is done by giving a +special definition of \keyindex{staffspacing$r$} where $r$ is the roman +numeral of the instrument considered. For example, if the second instrument +(starting from the system bottom) is required to have 25\% narrower staffs, +one only hase to declare: + +\medskip{\Bslash def\bslash staffspacingii\{0.75\}} + +\medskip\noindent before the starting command {\Bslash debutmorceau}. + +Not only does this statement change the vertical spacing between staff lines, +but is also changes the size of the key, accidental and note symbols to fit +the modified staff line spacing. However, the existence of discrete font +scales for music symbol typing results in some reasonable restrictions of the +values of \keyindex{staffspacing$r$}~: recommended values are approximately +1, 0.8 and 0.64; if different values are chosen, then the symbol size is +taken smaller than the line spacing, which may lead to readable but rather +ugly typesetting. + +As an example, we give two bars of the \ital{Ave Maria} by Charles {\sc +Gounod}\index{Gounod, C.} using the first prelude of Johann-Sebastian Bach's +\ital{Well Tempered Clavier} (transcription for organ, violin and voice, +thanks to Markus {\sc Veittes}):\label{avemaria} + + \begin{music} +\def\nbinstruments{4} +\computewidths +\sepbarrules +\generalmeter{\meterC}\relax +\def\oct{\advance\transpose by 7\relax} +\def\staffspacingii{0.64} +\def\staffspacingiv{0.64} +\cleftoksi{{6}{0}{0}{0}} +\cleftoksii{{0}{0}{0}{0}} +\cleftoksiv{{0}{0}{0}{0}} +\nbporteesi=2\relax +\nbporteesiii=0\relax +\debutextrait +\normal\elemskip=0.02\hsize +%Takt 9 +\Notes\zhl c\raise27pt\qs\qupp e|\ds&\oct + \itenu5h\hl h&gra---&\itenl4h\hu h\enotes +\Notes|\ibbl0j3\qb0h\tqb0l\enotes +\Notes|\ibbl1k0\qb1o\qb1h\qb1l\tqb1o\enotes +\temps\Notes\zhl c\raise27pt\qs\qupp e|\ds&\oct + \tten5\ibl4c0\qb4h&&\tten4\ibu5g{-3}\qh5h\enotes +\Notes|\ibbl0j3\qb0h\tqb0l&\oct\qb4a&---&\tqh5a\enotes +\Notes|\ibbl1k0\qb1o\qb1h&\oct\qb4b&ti-&\cu b\enotes +\Notes|\qb1l\tqb1o&\oct\tqb4c&a&\cu c\enotes +\barre +%Takt 10 +\Notes\zhl c\raise27pt\qs\qupp d|\ds&\oct + \qlp d&ple---&\Ilegu4k\pt d\qu d\enotes +\Notes|\ibbu1g3\bigaccid\qh1{^f}\tqh1h\enotes +\Notes|\ibbu2i0\qh2k\qh2f\enotes +\Notes|\qh2h\tqh2k&\oct \cl e&&\tleg4\cu e\enotes +\temps\Notes\zhl c\raise27pt\qs\qupp d|\ds&\oct + \ql d&na,&\qu d\enotes +\Notes|\ibbu1g3\qh1f\tqh1h\enotes +\Notes|\ibbu2i0\qh2k\qh2f\qh2h\tqh2k&\qp&&\qp\enotes +\finextrait + \end{music} + + This example was coded as: + +\begin{quote}\begin{verbatim} +\def\nbinstruments{4} +\sepbarrules +\generalmeter{\meterC}\relax +\def\oct{\advance\transpose by 7\relax} +\def\staffspacingii{0.64} +\def\staffspacingiv{0.64} +\cleftoksi{{6}{0}{0}{0}} +\cleftoksii{{0}{0}{0}{0}} +\cleftoksiv{{0}{0}{0}{0}} +\nbporteesi=2\relax +\nbporteesiii=0\relax +% +\debutextrait +\normal\elemskip=0.02\hsize +%Takt 9 +\Notes\zhl c\raise27pt\qs\qupp e|\ds&\oct + \itenu5h\hl h&gra---&\itenl4h\hu h\enotes +\Notes|\ibbl0j3\qb0h\tqb0l\enotes +\Notes|\ibbl1k0\qb1o\qb1h\qb1l\tqb1o\enotes +\temps\Notes\zhl c\raise27pt\qs\qupp e|\ds&\oct + \tten5\ibl4c0\qb4h&&\tten4\ibu5g{-3}\qh5h\enotes +\Notes|\ibbl0j3\qb0h\tqb0l&\oct\qb4a&---&\tqh5a\enotes +\Notes|\ibbl1k0\qb1o\qb1h&\oct\qb4b&ti-&\cu b\enotes +\Notes|\qb1l\tqb1o&\oct\tqb4c&a&\cu c\enotes +\barre +%Takt 10 +\Notes\zhl c\raise27pt\qs\qupp d|\ds&\oct + \qlp d&ple---&\Ilegu4k\pt d\qu d\enotes +\Notes|\ibbu1g3\bigaccid\qh1{^f}\tqh1h\enotes +\Notes|\ibbu2i0\qh2k\qh2f\enotes +\Notes|\qh2h\tqh2k&\oct \cl e&&\tleg4\cu e\enotes +\temps\Notes\zhl c\raise27pt\qs\qupp d|\ds&\oct + \ql d&na,&\qu d\enotes +\Notes|\ibbu1g3\qh1f\tqh1h\enotes +\Notes|\ibbu2i0\qh2k\qh2f\qh2h\tqh2k&\qp&&\qp\enotes +\end{verbatim}\end{quote} + + + + %\check + \section{Layout parameters} + + + Most layout parameters are set by \musictex\ to reasonable default values. +However, sophisticated scores\footnote{To our knowledge, the most complicated +scores are those written for the piano, during the romantic and post-romantic +periods.} may need more place below the lowest staff, between staves, etc. +\def\nochange{(\ital{NOT to be changed})} We give below a short list of the +most significant parameters. + +%\check + +\subsection{List of layout parameters} + +{\sl REMARK : the mention ``\nochange'' does not mean that this parameter cannot +be changed, but that it should not be modified directly, e.g.\ by saying +something like {\Bslash interligne=14pt}. In other words, changing these +parameters must be performed using more comprehensive macros which not only +update them but also perform some other compulsory related changes.} + +\begin{description} + + \item[\keyindex{interligne} : ]vertical interval between lines in a staff of +the current instrument, taking account of a possible specification of \keyindex{staffspacing$r$} +(see \ref{staffspace}) +\nochange + \item[\keyindex{Interligne} : ]vertical distance between the base of staff +lines of the current instrument, taking account of a possible specification +of \keyindex{staffspacing$r$} (\keyindex{interligne} is the size of the blank +space between lines; the difference between them is the line thickness +\keyindex{lthick}) \nochange. + \item[\keyindex{internote} : ]the vertical spacing of contiguous notes of +the current instrument, taking account of a possible specification of +\keyindex{staffspacing$r$}, i.e.\ the half of {\Bslash Interligne} \nochange + \item[\keyindex{Internote} : ]the vertical spacing of contiguous notes of +the instrument(s) whose \keyindex{staffspacing$r$} has the \ital{default +value} of one (1.0). Since this dimension is the same, regardless of the +actual value of the staff line spacing of any instrument, only this value +should be used to specify horizontal spacings. It should be used rather than +absolute dimensions in \verb|pt| or \verb|mm|, since \verb|\Internote| is +duly proportional to the general size (\keyindex{musicsize}) but not +dependent on specific changes in \keyindex{staffspacing$r$} \nochange + \item[\keyindex{nullthick} : ]reserved height above base line for zero staff +lines (text of songs) + \item[\keyindex{staffbotmarg} : ]margin below the first staff of the lowest +instrument. If not already assigned a non zero dimension, it is set to +\keyindex{bottomfacteur}\keyindex{Interligne} at the next system. + \item[\keyindex{stafftopmarg} : ]margin above the upper staff of the upper +instrument. + \item[\keyindex{interbeam} : ]vertical distance between beams. + \item[\keyindex{interportee} : ]the distance between the bottom of one staff and +the bottom of the next one. It is set to +2\keyindex{interfacteur}{\Bslash internote} at the next system. + \item[\keyindex{Interportee} : ]the distance between the top of one staff +and the bottom of the next one. Re-computed at the at the next system. + \item[\keyindex{interinstrument} : ]the additional vertical distance between +two different instruments (must be positive, otherwise weird results can +happen). This means that the distance between the upper +staff of the previous instrument and the lowest line of the current +instrument is equal to \keyindex{interportee+\bslash interinstrument}. +This value is normally zero, but it helps putting additional space between +distinct instruments for the sake of clarity. This is a general dimension +which holds for each of the vertical spaces between instruments, except the +upper one, in which case this interval is irrelevant. However, this parameter +can be overridden for the space above a specific instrument. For example (see +the example {\tty angescao.tex}) one can state: + +\medskip +\begin{quote}\begin{verbatim} +\def\interinstrumenti{5pt} +\end{verbatim}\end{quote} + +\medskip +\noindent to force an additional spacing of 5 points above instrument $i$, +whatever the value of \keyindex{interinstrument}. + This feature can usefully be used to have more space before instruments +representing \itxem{voices}, in order to have enough place to put +\itxem{lyrics} without assigning these lyrics a zero staff specific instrument +(useful to avoid having too many declared insruments in a choir score). + \item[\keyindex{systemheight} : ]the distance from the bottom of the +lowest staff to the top of the highest staff of the upper instrument. This is +the height of the vertical bars (single, double, repeats, etc.) \nochange. +\end{description} + + +\medskip + In addition, when handling notes of a given staff of a given instrument, the +following dimensions are available (note these are not true registers, but +\ital{equivalenced symbols} through a {\Bslash def}): +\begin{itemize} + \item\keyindex{altitude} : the altitude of the lowest line of the lowest +staff of the current instrument \nochange. + \item\keyindex{altportee} : the altitude of the lowest line of the current +staff \nochange. + \item\keyindex{stemfactor} : a parameter defining the size of half, quarter +and hooked eighth notes stems. Normally a stem has the length of one octave, +i.e. 3.5\keyindex{Interligne}. However, this is not valid for small size +notes and, therefore, the stem size is related to the \keyindex{interbeam} +dimensions which, in turn, is \ital{normally} equal to 0.75 +\keyindex{Interligne}. Thus the normal value of \keyindex{stemfactor} is +4.66, but it can be shortened for any purpose by saying, for example: + + \verb|\def\stemfactor{3.5}| + +Normal stem length is restored by calling the macro \keyindex{normalstems}. + +\end{itemize} + +%\check + +\subsection{Changing layout parameters} + + Most of these values can be changed, but only between the end of the +previous system and the beginning of the next one. This can be inserted +between a \keyindex{suspmorceau} (or a \keyindex{finmorceau}) +and a \keyindex{reprmorceau} (or a \keyindex{debutmorceau}), but it is +wiser to say, for example: + +\medskip +\begin{quote}\begin{verbatim} +\def\atnextline{\global\staffbotmarg=5\Interligne} +\end{verbatim}\end{quote} + +\medskip + +When doing so, the \musictex\ user should be aware that this could disturb +pending \ital{slurs} or \ital{ties}, since the altitude of these is stored in +an absolute way, starting from the baseline of the systems. Therefore, +changing the \keyindex{staffbotmarg} dimension can also be made by means of +{\tty\keyindex{advancebottom}\{$<dimension>$\}} which updates all pending slur +and tie altitudes by the given dimension. This has been used in {\tty +pacifiqn} and {\tty pacifiqb}. + +\medskip The user may prefer to redefine {\Bslash +def\keyindex{bottomfacteur}} or {\Bslash def\keyindex{interfacteur}} to a +given integer number, but this can be done only between a +\keyindex{suspmorceau} (or a \keyindex{finmorceau}) and a +\keyindex{reprmorceau} (or a \keyindex{debutmorceau}), but it is wiser to use +\keyindex{atnextline} as previously. + +\medskip It is also wise to use \keyindex{atnextline} to change the the +number of instruments, the staff spacings, the number of staffs at the next +line... provided that the coding of the notes \ital{resists} an unexpected +line change executing the \keyindex{atnextline}. + +\medskip In anycase it is a good idea to look at the procedures +\keyindex{computewidths} and \keyindex{computespecifics} to understant what +they really compute, and also to find the places where they are actually +invoked. + +\subsection{Changing the vertical distance between consecutive systems} + +If this has to be changed only once at the beginning of a piece, the simplest +is to say + +\medskip +\begin{quote}\begin{verbatim} +\def\bottomfacteur{8} +\end{verbatim}\end{quote} + +\medskip\noindent before invoking\keyindex{debutmorceau}. Note that +\keyindex{bottomfacteur} is invoked to compute the dimension register +\keyindex{staffbotmarg} whenever this register contains a zero dimension. +The number (it must be a number) is multiplied by \keyindex{Interligne} and +affected to \keyindex{staffbotmarg}. + +\medskip If this has to be changed several times to meet page layout +requirements with scores sometimes -- but only sometimes -- going very deep +below the lowes staff of the systems, it is wiser to use +\keyindex{advancebottom}, namely: + +\medskip +\begin{quote}\begin{verbatim} +\advancebottom{10pt} +\end{verbatim}\end{quote} + +\medskip\noindent to advance the bottom margin register by that dimension at +the next system line break. + +{\medskip\noindent\sl REMARK : it is also possible to change the system top +margin, i.e.\ \keyindex{stafftopmarg} between systems. Changing top and +bottom margin add together but it may influence the position of the whole in +the pages.} + +\subsection{Changing staff distance within systems} + +This can be done at the beginning by changing the definition of +\keyindex{interfacteur} (it is {\Bslash def}ined to a number) before the +first \keyindex{debutmorceau}. But it is also possible to give a new +dimension to the dimension register \keyindex{interportee} and, optionally, +to the dimension register \keyindex{interinstrument} (see above). + +\subsection{Changing the number of lines in staffs} + +Unless explicitely specified, staffs consist of five lines, in accordance to +the normal way of coding music scores. However, two exceptions might be +preferred when using \musictex~: + +\begin{itemize} + \item \itxem{gregorian music} is often writen using staff of +four lines instead of five, + \item \itxem{percussion music} (e.g. drums, triangle) only needs one line +staffs, since the pitch cannot change. +\end{itemize} + +Therefore, since its version 5.00, \musictex\ allows for choosing the number +of lines of the staffs of an instrument. This is done by defining the macro +\keyindex{stafflinesnb}$r$ --- where $r$ is the roman numeral of the wanted +instrument as usual --- to be the number of lines of the specific staff. +For example~:\label{gregorian} + +\begin{quote} +\noindent\verb|\def\stafflinesii{4}| +\end{quote} +will make the instrument number 2 (i.e. {\tt ii}) to have staffs of four +lines, that is, fit for gregorian music. +%\check + +\subsection{Resetting normal layout parameters} + +Except \keyindex{musicsize} which has to be explicitely changed if needed, all +layour registers are reset to default values by \keyindex{resetfacteurs} which +put zero dimensions into \keyindex{staffbotmarg} and \keyindex{stafftopmarg}, +so that the next \keyindex{debutmorceau} will recompute them, unless they have +been given non zero dimensions inbetween. + +\subsection{Typesetting one-line excerpts rather than larges scores} + +Very often, what is wanted is not to typeset a large comprehensive score of +several lines and pages, but an excerpt of one or two bars, preferably +centered such as the various examples of this manual. This can be done simply +by replacing \keyindex{debutmorceau} with +\keyindex{debutextrait}\footnote{\ital{Extrait} is the French word for +\ital{excerpt}.} and {\Bslash finmorceau} or {\Bslash suspmorceau} with +\keyindex{finextrait}. + + If you want to terminate it without a bar, you code +\keyindex{zfinextrait} which acts like {\Bslash zsuspmorceau}.. + +%\check + + \subsection{Lyrics}\index{lyrics} + + Lyrics can be introduced in several ways~: + \begin{enumerate} + + \item The first one consists in dedicating +one instrument whose \keyindex{nbportees$r$} is zero. Then the text of the +lyrics is just inserted, note by note, by inserting it at the right position +between {\Bslash notes}...{\Bslash enotes}. The drawback is that a four voice +choir needs eight instruments which may lead to troubles if there is also an +orchestra score below the voices. + + \item Therefore, another solution consists in adjusting \keyindex{interinstrument} +and \keyindex{staffbotmarg} to give more place below the song +instruments\footnote{Beware of a shift of one position, since {\Bslash +intersinstrument$r$} indicates the interval \ital{above} the $r$-th +instrument.}. Then the texts of the lyrics are indicated with the song tune +instrument, using \keyindex{zcharnote} with a negative numeric position +value. + + By the way, the {\Bslash zcharnote} may have a {\Bslash vbox} as a second +argument, and this \keyindex{vbox} may contain several {\Bslash hbox}es +describing the text of the different couplets (see example {\tty ANGESCAO}). + + \item Of easier use are the commands \keyindex{zsong} (right of the note), +\keyindex{lsong} (left) and \keyindex{csong} (centered) which post the lyrics +at the lower staff line \ital{minus} the previous +\keyindex{interinstrument}~$n$ or the \keyindex{staffbotmarg} quantity. These +commands only have one argument, namely the lyrics text: + + +\begin{center} +\keyindex{zsong}\verb|{|\ital{text}\verb|}|\quad +\keyindex{lsong}\verb|{|\ital{text}\verb|}|\quad +\keyindex{csong}\verb|{|\ital{text}\verb|}| +\end{center} + + \medskip As an example, the following French song + + \begin{music} + \generalsignature{1} + \def\nbinstruments{1} + \debutextrait + \NOtes\zsong{Au }\qu g\enotes + \NOtes\zsong{clair }\qu g\enotes + \NOtes\zsong{de }\qu g\enotes + \NOtes\zsong{la }\qu h\enotes + \barre + \NOTes\zsong{lu- }\hu i\enotes + \NOTes\zsong{ne, }\hu h\enotes + \barre + \NOtes\zsong{mon }\qu g\enotes + \NOtes\zsong{a- }\qu i\enotes + \NOtes\zsong{mi }\qu h\enotes + \NOtes\zsong{Pier- }\qu h\enotes + \barre + \NOTes\zsong{rot, }\wh g\sk\enotes + \finextrait + \end{music} + +\noindent was coded as: + +\begin{quote}\begin{verbatim} + \generalsignature{1} + \def\nbinstruments{1} + \debutextrait + \NOtes\zsong{Au }\qu g\enotes + \NOtes\zsong{clair }\qu g\enotes + \NOtes\zsong{de }\qu g\enotes + \NOtes\zsong{la }\qu h\enotes + \barre + \NOTes\zsong{lu- }\hu i\enotes + \NOTes\zsong{ne, }\hu h\enotes + \barre + \NOtes\zsong{mon }\qu g\enotes + \NOtes\zsong{a- }\qu i\enotes + \NOtes\zsong{mi }\qu h\enotes + \NOtes\zsong{Pier- }\qu h\enotes + \barre + \NOTes\zsong{rot, }\wh g\sk\enotes + \finextrait +\end{verbatim}\end{quote} + + \end{enumerate} + + +%\check + + \section{Other special ornaments} + + Since the first release of \musictex, many users have either asked for +new features of proposed their own procedures to be included in \musictex. +Some of them have been added because of their high utility, some others have +been left aside for several reasons. The major reason for not including many +proposals in the \musictex\ release is that -- at least on many computers and +especially PC's -- the \TeX\ memory is limited to 65~000 ``words''. This is a +very restricted value which causes many trials to exceed the capacity of \TeX\ +(unless using ``big\TeX''). Therefore, only the proposed macros of very +general use can be introduced in the release as a standard and the users are +suggested to take their specific procedures and include them (directly of by +means of an {\Bslash input}) in their own source code. + + This is particularly valid for people who want to typeset \itxem{baroque} +music using the ancient \itxem{ornament codings} rather than the modern +equivalents. As a compromise, some macros kindly provided by Ian {\sc Collier} +in Great Britain have slightly been updated and provided in a separate file +named {\tty musicext.tex}. + + For example, brackets can be produced: + + \begin{music} +\def\nbinstruments{1}\relax +\computewidths +\nbporteesi=1\relax +\debutextrait +\normal +\temps\Notes\ovbkt j3{15}\ql{hij}\enotes +\finextrait + + \end{music} + +%\check + \section{The {\tt musicsty} macros}\label{musicsty} +% non musical procedures used in typesetting the non-musical +% texts together with musictex + This file is made for non \TeX perts and/or lazy score typesetters. It +provides + \begin{itemize} + \item a set of font definitions of common use, such as \verb|\tenrm|, +\verb|\eightrm|, etc., + \item a reasonable setting of \keyindex{hsize}, \keyindex{vsize}, +\keyindex{hoffset}, \keyindex{voffset} dimensions in order to have a good +layout fi for European A4 paper\footnote{People addicted to \itxem{legal} or +other paper sizes should correct it for their own purpose.} + \item a set of text size commands: + + \begin{description} + \item[\keyindex{eightpoint}] which sets the usual \keyindex{rm}, +\keyindex{bf}, \keyindex{sl}, \keyindex{it} commands to 8 point font size; + \item[\keyindex{tenpoint}] which sets the usual \keyindex{rm}, +\keyindex{bf}, \keyindex{sl}, \keyindex{it} commands to 10 point font size; + \item[\keyindex{twlpoint}] to get 12 point font size; + \item[\keyindex{frtpoint}] to get 14.4 point font size; + \item[\keyindex{svtpoint}] to get 17.28 point font size; + \item[\keyindex{twtypoint}] to get 20.74 point font size; + \item[\keyindex{twfvpoint}] to get 24.88 point font size; + \end{description} + \item a set of commands to make easy piece titles~: + \begin{itemize} \item \keyindex{author} or +\keyindex{fullauthor} to be put at the right of the first page, below the +title of the piece; the calling sequence is, for example: + + \verb| \author{Daniel TAUPIN\\organiste \`a Gif-sur-Yvette}| + + \noindent where the \verb|\\| makes theauthor name displayed on two or +several lines. + + + \item \keyindex{shortauthor} to be put at the bottom of each page, + \item \keyindex{fulltitle} which is the big main title of the piece, + \item \keyindex{subtitle} is displayed below the main title of the piece, + \item \keyindex{shorttitle} or \keyindex{title} + which is the title repeated at the bottom of each page, + \item \keyindex{othermention} which is displayed on the left of the page, in +front of the author's name (it may contain several \verb|\\| to display it on +several lines, + \item \keyindex{maketitle} which displays all the previous stuff. + \end{itemize} + + \item Some additional commands to make \itxem{footnotes}. + These commands are + \begin{itemize} + \item The normal Plain-\TeX\ \keyindex{footnote} command which has two +arguments --- not only one as in \LaTeX\index{LaTeX=\protect\LaTeX} --- namely +the label of the footnote, i.e. any sequence of characters and not only +figures, and the text of the footnote. + +\noindent{\sl IMPORTANT: the \verb|\footnote| command does not work inside +boxes\footnote{This is not a \TeX-bug, this is a feature!}, therefore this +command must not be issued within music. But another alternate feature is +provided (see below).} + + \item The \keyindex{Footnote} command, which counts the footnotes and uses a +number as the label of the foot note (equivalent to \LaTeX's \verb|\footnote| +command). The same restriction applies concerning footnotes within the music +coding. + + \item The \keyindex{vfootnote} command, taken from the Plain-\TeX, which +makes the footnote itself at the bottom of the current page, but does not put +the footnote label at the place it is referred in the main text. + + Thus, if a footnote is needed whose reference lies inside the music itself, +the music typesetter must perform it in two steps~: + \begin{enumerate} + \item quote the reference inside the music, using \verb|zcharnote| for +example, + \item post the footnote itself, using \verb|\vfootnote| outside the music, +either before \keyindex{debutmorceau} or between \keyindex{suspmorceau} and +\keyindex{reprmorceau} or equivalent commands. + \end{enumerate} + + \end{itemize} + \end{itemize} + + Note that \verb|musicsty| should not be used with \LaTeX. + + +\section{Abnormal music coding} +\subsection{Gregorian chant} +\index{gregorian music}Gregorian chant is often coded using four line staffs +(see section \ref{gregorian}) and using special notes (called \itxem{neumes}) +which are described in section \ref{gregnotes}. But the gregorian chant also +needs a special \itxem{alto clef} which is in fact the ancester of the modern +alto clef. The gregorian \itxem{alto clef} can be invoked instead of the +modern one by re-declaring the \keyindex{clefdut}$r$ macro. Thus + +\begin{quote}\begin{verbatim} +\def\clefdutiv{\gclefdut} +\end{verbatim}\end{quote} +will cause the instrument number 4 (i.e. {\tt iv}) to exhibit a gregorian C +clef whenever the value of \verb|\cleftoskiv| refers to an alto clef. +The modern alto clef can be restored for that instrument by~: + + +\begin{quote}\begin{verbatim} +\def\clefdutiv{\clefdutsymbol} +\end{verbatim}\end{quote} + +\subsection{Music score without clefs or with special clefs}\index{clefs +(empty)} Regardless of the number of lines of the staffs, an instrument may +have no clefs, e.g. for \itxem{percussion music} but also for any weird +purpose. This done by declaring some of the following items~: + +\medskip +\verb|\def|\keyindex{clefdesol}$r$\verb|{\relax}| + +\verb|\def|\keyindex{clefdut}$r$\verb|{\relax}| + +\verb|\def|\keyindex{clefdefa}$r$\verb|{\relax}| + +\medskip + At first sight, it could be thought to be silly to cancel the G clef, the C +clef and/or the F clef to have an empty clef symbol. But the reason is that +the absence of clefs does not mean that notes should not be raised according +to their pitch. Thus, if the user uses the G clef coding of pitches, he is +welcome to use the present feature to cancel the G clef, but if he uses some +alto clef coding, then he should cancel the alto clef symbol. Of course, all +this is irrelevant if the engraver chooses to use numeric coding of note +position like \verb|\qu{10}|. + + Normal symbols for these clefs and for instrument or roman number $r$ can be +restored by~: + + +\medskip +\verb|\def\clefdesol|$r$\verb|{|\keyindex{clefdesolsymbol}\verb|}| + +\verb|\def\clefdefa|$r$\verb|{|\keyindex{clefdefasymbol}\verb|}| + +\verb|\def\clefdut|$r$\verb|{|\keyindex{clefdutsymbol}\verb|}| + +\medskip Besides, a special \itxem{drum clef} (two heavy vertical bars) can +replace any of the standard clefs, for exemple the G clef by saying~: + +\medskip +\verb|\def\clefdesol|$r$\verb|{|\keyindex{drumclefsymbol}\verb|}| + + +\medskip It is to be emphasised that these features are specific to one +instrument --- not one staff of a several staff instrument --- so that some +weird score for \ital{monks}, \ital{drum} and \ital{electronic keyboard} +such as + +\begin{music} +\parindent 19mm +\def\nbinstruments{3} \def\instrumenti{keyboard} +\def\instrumentii{drum} \def\instrumentiii{monks} +\def\stafflinesnbii{1} \def\stafflinesnbiii{4} +\generalsignature{0} \generalmeter{\relax} +\signi=-1\relax % one flat at keyboard +\nbporteesi=2\relax % 2 staffs at keyboard +\cleftoksi={6000}\cleftoksiii={3000}\cleftoksii={1000} +\def\clefdutiii{\gclefdut} % gregorian C clef at instrument iii +\def\clefdutii{\drumclefsymbol} % cancel C clef at instrument ii +\def\interinstrumentii{-4\Interligne} % less spacing above drum +\normal +\debutextrait +\Notes\hu F|\zh c\hu h&\diamw 0&\carrg {acd}\enotes +\NOtes\qu I|\zq N\qu d&\diamg 0&\diamg f\enotes +\NOtes\qu J|\zq a\qu e&\diamg 0&\diamg e\enotes +\notes\hu G|\zh b\hu d&\zshaker 3\diamw {00}&\zcarrg d\carqg g\carrg {hgh}\enotes +\finextrait +\end{music} +\noindent could be coded as follows, regardless this is relevant~: +\begin{verbatim} +\parindent 19mm +\def\nbinstruments{3} \def\instrumenti{keyboard} +\def\instrumentii{drum} \def\instrumentiii{monks} +\def\stafflinesnbii{1} \def\stafflinesnbiii{4} +\generalsignature{0} \generalmeter{\relax} +\signi=-1\relax % one flat at keyboard +\nbporteesi=2\relax % 2 staffs at keyboard +\cleftoksi={6000}\cleftoksiii={3000}\cleftoksii={1000} +\def\clefdutiii{\gclefdut} % gregorian C clef at instrument iii +\def\clefdutii{\drumclefsymbol} % cancel C clef at instrument ii +\def\interinstrumentii{-4\Interligne} % less spacing above drum +\normal +\debutextrait +\Notes\hu F|\zh c\hu h&\diamw 0&\carrg {acd}\enotes +\NOtes\qu I|\zq N\qu d&\diamg 0&\diamg f\enotes +\NOtes\qu J|\zq a\qu e&\diamg 0&\diamg e\enotes +\notes\hu G|\zh b\hu d&\zshaker 3\diamw {00}&\zcarrg d\carqg g\carrg {hgh}\enotes +\finextrait +\end{verbatim} + +In the same way, a possible violin score with \itxem{harmonic notes} (see +\ref{othernotes}) could be~:\label{abnormalscores} + +\begin{music} +\def\freqbarno{9999}% no bar numbers +\def\nbinstruments{1}\nbporteesi=1\relax +\generalsignature{-2}\generalmeter{\allabreve}\cleftoksi={0000} +\normal +\debutextrait +\NOtes\zd o\zh d\hu h\enotes +\Notes\ibu0k0\zq g\yh0k\qh0j\zq e\yh0i\tbu0\qh0j\enotes +\barre +\NOTes\zd g\hu k\enotes +\NOTes\hpause\enotes +\barre +\NOtes\zd o\zh d\hl h\enotes +\Notes\ibl0b0\zq g\yb0k\qb0j\zq e\yb0i\tbl0\qb0j\enotes +\barre +\NOTes\zd g\hu k\enotes +\NOTes\hpause\enotes +\finextrait +\end{music} + +It was coded as follows: +\begin{quote}\begin{verbatim} +\def\nbinstruments{1}\nbporteesi=1\relax +\generalsignature{-2}\generalmeter{\allabreve}\cleftoksi={0000} +\normal +\debutextrait +\NOtes\zd o\zh d\hu h\enotes +\Notes\ibu0k0\zq g\yh0k\qh0j\zq e\yh0i\tbu0\qh0j\enotes +\barre +\NOTes\zd g\hu k\enotes +\NOTes\hpause\enotes +\barre +\NOtes\zd o\zh d\hl h\enotes +\Notes\ibl0b0\zq g\yb0k\qb0j\zq e\yb0i\tbl0\qb0j\enotes +\barre +\NOTes\zd g\hu k\enotes +\NOTes\hpause\enotes +\finextrait +\end{verbatim}\end{quote} + + +\subsection{Usual percussion music} +\label{genpercus} Besides single percussion scores usually +written using one-line staffs, percussion music involving several instruments +is often writen on five-line staffs with a \ital{drum clef}, where the +instruments are distinguished by the type of the note heads and the apparent +pitch of the note on the staff. We give an example --- kindly provided by +Agusti {\sc Mart\'in Domingo}~: + +\medskip +\begin{music} +\def\freqbarno{9999}% no bar numbers +\def\nbinstruments{1}\generalsignature{0}\def\stafflinesbi{5} +\generalmeter{\meterfrac44} +\cleftoksi={0000}\def\clefdesoli{\drumclefsymbol} +\normal +\debutextrait +\leftrepeat +\Notes\zql f\rlap{\soupir}\ibu0m0\xh0{nn}\enotes +\Notes\zk d\zql f\zq j\xh0n\tbu0\xh0n\enotes +\Notes\zql f\rlap{\soupir}\ibu0m0\xh0{nn}\enotes +\Notes\zk d\zql f\zq j\xh0n\tbu0\xh0n\enotes +\barre +\Notes\zql f\rlap{\soupir}\ibu0m0\kh0{nn}\enotes +\Notes\zx d\zql f\zq j\kh0n\tbu0\kh0n\enotes +\Notes\zql f\rlap{\soupir}\ibu0m0\kh0{nn}\enotes +\Notes\zx d\zql f\zq j\kh0n\tbu0\kh0n\enotes +\barre +\Notes\zql f\rlap{\soupir}\ibu0m0\oxh0{nn}\enotes +\Notes\zox d\zql f\zq j\kh0n\tbu0\oxh0n\enotes +\Notes\zql f\rlap{\soupir}\ibu0m0\oxh0{nn}\enotes +\Notes\zox d\zql f\zq j\kh0n\tbu0\oxh0n\enotes +\setrightrepeat\finextrait +\end{music} + Its coding was~: + \begin{quote}\begin{verbatim} +\begin{music} +\def\nbinstruments{1}\generalsignature{0}\def\stafflinesbi{5} +\generalmeter{\meterfrac44} +\cleftoksi={0000}\def\clefdesoli{\drumclefsymbol} +\normal +\debutextrait +\leftrepeat +\Notes\zql f\rlap{\soupir}\ibu0m0\xh0{nn}\enotes +\Notes\zk d\zql f\zq j\xh0n\tbu0\xh0n\enotes +\Notes\zql f\rlap{\soupir}\ibu0m0\xh0{nn}\enotes +\Notes\zk d\zql f\zq j\xh0n\tbu0\xh0n\enotes +\barre +\Notes\zql f\rlap{\soupir}\ibu0m0\kh0{nn}\enotes +\Notes\zx d\zql f\zq j\kh0n\tbu0\kh0n\enotes +\Notes\zql f\rlap{\soupir}\ibu0m0\kh0{nn}\enotes +\Notes\zx d\zql f\zq j\kh0n\tbu0\kh0n\enotes +\barre +\Notes\zql f\rlap{\soupir}\ibu0m0\oxh0{nn}\enotes +\Notes\zox d\zql f\zq j\kh0n\tbu0\oxh0n\enotes +\Notes\zql f\rlap{\soupir}\ibu0m0\oxh0{nn}\enotes +\Notes\zox d\zql f\zq j\kh0n\tbu0\oxh0n\enotes +\setrightrepeat\finextrait +\end{music} + \end{verbatim}\end{quote} + + To use these different note heads, one must + \begin{itemize} + \item either include a specific percussion file namely {\tt +\ixem{musicper.tex}} after the usual \verb|\input musictex| or invoke the +\LaTeX\ style option {\tt\ixem{musicper}}\index{musicper.sty}; + \item use special macro names to replace the usual elliptic back note head +with either a double sharp sign or with a $+$. These macros are~: + \begin{itemize} + \item \keyindex{zx}, \keyindex{xu}, \keyindex{xup}, \keyindex{xupp}, + \keyindex{xl}, \keyindex{xlp}, \keyindex{xlpp}, + \keyindex{xh}, \keyindex{xb}, \keyindex{zx}, + \keyindex{xcu}, \keyindex{xcup}, \keyindex{xcupp}, + \keyindex{xccu}, \keyindex{xcccu}, \keyindex{xccccu}, + \keyindex{xcl}, \keyindex{xclp}, \keyindex{xclpp}, + \keyindex{xccl}, \keyindex{xcccl} and \keyindex{xccccl}, which behave exactly like + \verb|\zq|, \verb|\qu|, \verb|\qup|, \verb|\qupp|, + \verb|\ql|, \verb|\qlp|, \verb|\qlpp|, + \verb|\qh|, \verb|\qb|, \verb|\zq|, + \verb|\cu|, \verb|\cup|, \verb|\cupp|, + \verb|\ccu|, \verb|\cccu|, \verb|\ccccu|, + \verb|\cl|, \verb|\clp|, \verb|\clpp|, + \verb|\ccl|, \verb|\cccl| and \verb|\ccccl|, except that the note head is + \raise 0.6ex\hbox{\musicnorfont\char '65} instead of \raise +0.5ex\hbox{\musicnorfont\char '41}~. + \item \keyindex{zox}, \keyindex{oxu}, \keyindex{oxup}, \keyindex{oxupp}, + \keyindex{oxl}, \keyindex{oxlp}, \keyindex{oxlpp}, + \keyindex{oxh}, \keyindex{oxb}, \keyindex{zx}, + \keyindex{oxcu}, \keyindex{oxcup}, \keyindex{oxcupp}, + \keyindex{oxccu}, \keyindex{oxcccu}, \keyindex{oxccccu}, + \keyindex{oxcl}, \keyindex{oxclp}, \keyindex{oxclpp}, + \keyindex{oxccl}, \keyindex{oxcccl} and \keyindex{oxccccl}, to get a note +head of +\raise 0.6ex\hbox{\musicnorfont\char 38} instead of \raise +0.5ex\hbox{\musicnorfont\char '41}~. + \item \keyindex{zk}, \keyindex{ku}, \keyindex{kup}, \keyindex{kupp}, + \keyindex{kl}, \keyindex{klp}, \keyindex{klpp}, + \keyindex{kh}, \keyindex{kb}, \keyindex{zk}, + \keyindex{kcu}, \keyindex{kcup}, \keyindex{kcupp}, + \keyindex{kccu}, \keyindex{kcccu}, \keyindex{kccccu}, + \keyindex{kcl}, \keyindex{kclp}, \keyindex{kclpp}, + \keyindex{kccl}, \keyindex{kcccl} and \keyindex{kccccl}, to get a +note head of + \raise 0.6ex\hbox{\musicnorfont\char 39} instead of \raise +0.6ex\hbox{\musicnorfont\char '41}~. + \end{itemize} + \end{itemize} + + + \section{Writing your own macros: the {\Bslash catcode} problems} + +As seen before, the \keyindex{catcodes} of the {\tty\|} and {\tty\&} symbols +are modified by \musictex, in the range of the actual scores but no +more\footnote{Since version 4.99.} in +the whole of the \TeX\ source. Thus, if you define your own macros to make +your writing easier, you are likely to invoke the {\tty\|} or {\tty\&} +symbols in a part of text where their \keyindex{catcode}s are not correctly set. +This may result typically in a diagnostic like~: + +\verb|! Misplaced alignment tab character &.| + +\noindent when you attempt, not to define, but to use your macro using the +{\tty\&} symbol to change the instrument. Smart \TeX ers know that the +\keyindex{catcode}s are attached to the characters \ital{when they are input} +and not when they are used; thus you must be sure that {\tty\|} and {\tty\&} +have the correct \musictex\ \keyindex{catcode} when the macro is defined, +which may well occur outside the actual score. + +It is also worth pointing out that the same problem may occur with other +punctuation marks like ``{\tty<\relax}'', ``{\tty>\relax}'', ``\verb|^|, +etc., if their \keyindex{catcode} has been changed by some other set of +macros, like {\tty \ixem{french.sty}}. + + + \section{Musicla\TeX} + +\subsection{The {\tt musictex.sty} style} + + As said before, the amount of memory and registers used by \musictex\ makes +it hardly compatible with \LaTeX. However, Nicolas {\sc +Brouard}\index{Brouard, N.} succeeded in building a {\tty\ixem{musictex.sty}} +which is now included in the distribution. This is not recommended to make +separate music scores. Its purpose is rather to provide a means of inserting +short musical excerpts in books or articles written with \LaTeX. Then, the +\keyindex{documentstyle} command should include {\tty musictex} in the +options. + + +\medskip + The \LaTeX\ style file {\tty \ixem{musictex.sty}} simply \verb|\input|s +the following files (in that very order): \begin{itemize} + \item {\tty musicpre.tex} + \item {\tty musicnft.tex} + \item {\tty musictex.tex} + \item {\tty musicvbm.tex} + \item {\tty musicpos.tex} + \end{itemize} + + + +\medskip + In the case of a \LaTeX\index{LaTeX=\protect\LaTeX} +user wanting to use accidental +transposition facilities, he should invoke {\tty\ixem{musictrp}} in the +options of the \keyindex{documentstyle} command. + + In case of {\tty TeX capacity exceeded...}, use a ``Bigla\TeX'' (after +checking there is no visible error in the source +code).\index{BigLaTeX=Big\LaTeX} + +\subsection{Wide music in \LaTeX} + + Another difficulty appears with \LaTeX: internal \LaTeX\ macros handle the +page size in a way which is not supposed to be changed within a given document. +This means that text horizontal and vertical sizes are somewhat frozen so that +one can hardly insert pieces of music of page size different from the size +specified by the LaTeX \itxem{style}. Although a \itxem{largemusic} has been +provided, the main drawback is an unpredictable behaviour of top and bottom +printouts, especially page numberings. + + If the whole of a document has wide pages, it can be haddled with the {\tty +a4wide}\index{a4wide} style option, or any derivate of it. + +%\check + + \subsection{The {\Bslash catcode} problems} + The {\tty musicpos.tex} file +merely overrides the \keyindex{catcode}s of the {\tty\|} and {\tty\&} symbols +which are modified by \musictex. To have access to these symbols when coding +music, on should then enclose the scores or excerpts within {\Bslash +begin\{music\}} and {\Bslash end\{music\}}. But there is also another +possibility, i.e.\ to say \keyindex{nextinstrument} instead of {\tty +\&}\index{\&} and \keyindex{nextstaff} instead of {\tty\|}.\index{\|} + + Another problem comes from the {\tty \ixem{french.sty}} written by Bernard +{\sc Gaulle}\index{Gaulle, B.} which is the standard of the \ixem{GUTenberg} +French association. This style changes many \keyindex{catcode}s which lead +\musictex\ to fail in many cases. Therefore, since the version 4.99, the +\keyindex{catcode}s of all are forced to the adequate value at +\keyindex{debutmorceau}, \keyindex{debutextrait} and restored at their +original value at \keyindex{finmorceau}, \keyindex{suspmorceau} and +\keyindex{finextrait}. This means that some facilities like the +\itxem{guillemets} or the \itxem{tabulation} character are inhibited within +music scores (possible problem with sophisticated \itxem{lyrics}) but +perfectly available within the normal text. + + Anyway, in case of emergency, one can invoke \keyindex{catcodesmusic} to +establish the \keyindex{catcode}s at their value fit for music, and +\keyindex{endcatcodesmusic} to reset them at their external value, for example +those chosen by {\tty french.sty}. + + \section{Implementation and restrictions} + + The macroinstruction file \musictex\ contains approximately 2500 lines of +code, that is 80~000 bytes approximately. This requires your score to be +compiled by the most extended versions of \TeX\ (65~000 words of working +memory). It is therefore wise to set \hbox{\Bslash tracingsstats} to 2 in +order to have an information about the memory used in each page. In desperate +situations, we recommend using the ``Big\TeX'' processors which, +unfortunately, perform a great deal of disk input/outputs (on PCs with i286 +processors) which make them awfully slow\footnote{Using i386 or i486 +processors, this problem disappears with the specific version of {\tty +emTeX}}.\index{Big\protect\TeX}\index{em\TeX} + +In particular, the number of registers it uses and the amount of memory used +by \LaTeX\ macros makes it doubtfully compatible with \LaTeX, unless using +Big\LaTeX.\index{BigLaTeX=Big\LaTeX} + +Other precautions are necessary: beware of end-of-line spaces; they corrupt +layout and may cause unwanted line breakings after which music symbols seem +to \ital{float} in the air without staffs. To avoid that, it is recommended +to use \keyindex{relax} rather than {\tty\%} at the end of source lines. + +\chapter{Installation} + +\section{Getting the stuff} + +As seen before, all the files are available at \itxem{anonymous ftp} {\tty +rsovax.lps.u-psud.fr} (193.55.39.100) in the directory\footnote{{\sc +unix} addicts whould beware that this primary server is an old MicroVax run +the VMS system. Therefore the brackets in the directory name are compulsory, +not optional.} +{\tty[anonymous.musictex]}, which can more easily be reached +using the simple command + +{\tt cd musictex} + + +This directory normally contains {\tty musictex.zip} which contains +all the distribution for PC (\ixem{MS-DOS}) computers. This is only for +{\tty ftp}-ing convenience since all source files are directly available +in the same directory. In addition a set of examples (i.e. the files +whose name does not begin with ``{\tty music}'') is packed into +{\tty musicexa.zip}, and {\tty recueil.zip} contains the zipped DVIs of a large +subset of the examples. Finally the PK files of specific fonts are provided +in {\tty musicpk.zip}; getting this file is useless if you are able to {\tty +metafont} the files whose {\tty *.mf} are provided in the main package. + +The \ixem{VMS} files are also packed into {\tty musictex.bck}\index{musictex.zip} +\index{musictex.bck}. Notwithstanding the fact that files are packed together +or not, the files provided are of two kinds: +\begin{enumerate} +\item the basic files; +\item the example files. +\end{enumerate} + +All \itxem{basic files} are either of the form {\tty music*.*} (excluding of +course {\tty *.zip} and {\tty *.bck}), {\tty beamn*.*} and {\tty slurn*.*}. Other +files ({\tty *.tex} or {\tty *.dvi}) are example files. + +\ital{Fonts}\index{fonts} are provided as {\tty *.mf} files but also as {\tty +*.tfm} and {\tty *.pk} files for 300~dpi printers or previewers. Additional +values of the \ixem{dpi} parameter are also provided in {\tty musicpk.zip}. +Normally needed fonts are {\tty musikn20}, {\tty musikn16}, {\tty musikn13}, +{\tty musikn11}, {\tty musicbra} or {\tty musicbrb}\footnote{{\tt musicbra} +and {\tt musicbrb} exhibit some drawing differences, but they meet the same +purpose of typing \itxem{piano braces}.}, {\tty beamn20}, {\tty beamn16}, {\tty beamn13}, +{\tty beamn11}, {\tty slurn20} and {\tty slurn16}. + +\section{Installing the fonts} + \textit{All} files with the extension \verb|.tfm|\footnote{\TeX\ font metric +files, needed directly from binary for \TeX ing the examples or the doc.} have +to be copied in the same directory as the other \verb|.tfm|'s. +Then, if you get the error message: + +\verb|! Font ... not loadable: Metric (TFM) file not found.| + +\noindent this means +you did not succeed in installing the \verb|.tfm|'s, or you installed them in +the wrong directory. Then look at your general \TeX\ +documentation\footnote{The specific \TeX\ installation manual, not necessarily +the \TeX book.} and try again. + + +The \verb|.tfm| only contains the width, height and depth of each character +of a font and is the only font file needed for \TeX ing. But, to preview +and/or view you need the pixel fonts, i.e. not the metrics but the exact +drawing of the characters. On most systems they are packed and have either +the extension \verb|.pk| or the extension {\tt.}$<dpi>${\tty pk}, where $dpi$ +is the actual resolution of the font needed in the requested size. This means +that the the given \verb|*.pk| files provided often have to be renamed as +\verb|*.300pk|, especially in \unix\ systems. + + Mostly needed and spreaded are the fonts for \verb|dvi|-driver with +resolution of 300dpi. Using Em\TeX the \verb|.pk|-fonts have to be copied in +\verb|...\pixel.lj\300dpi\|. In \unix\ systems they often have to be renamed +as \verb|*.300pk| and put in a directory --- the name of which can be +provided by your local manual or \TeX-wizard --- of the form +\verb|.../fonts/pk|. + +\section{Building a format}\label{formatbuild} + +Introducing the basically needed files in a \itxem{format} (with +\ixem{INITEX}) is a means of saving computer time and memory. Besides, you +will have a format compatible with \musixtex\ and --- provided you made the +symmetrical format for \musixtex that is, including {\tt musixcpt} in your +\musixtex\ format --- you can compile exactly the same source files with both +\musictex\ and \musixtex, which is a good means of finding whether some +strange behaviour is specific to one implementation or the other, or whether +you made some general mistake. + +\subsection{Starting from nil} +\begin{enumerate} +\item Build up a file called \verb|musictex.ini| with following contents: + +\begin{verbatim} +\input plain % or your local plain-like TeX format +\input musicnft +\input musictex +\input musicvbm +\input musictrp % optionally +\input musicsty % optionally +\def\fmtname{musictex}\def\fmtversion{5.08} +\dump +\end{verbatim} + +\item Make your format with the command + +\smallskip + \verb|initex musictex.ini|\footnote{depends on your implementation. +{\tty initex} may require another form, such as +``\verb|tex386 -i|''.} + +\item Then your format may me invoked for \TeX ing score by something like + + + \verb|tex &musictex| \textit{jobname}\footnote{depends on your +implementation. Very often the formatless \TeX is invoked by \verb|virtex| +rather than \verb|tex| which already invokes a default plain format.}. +\end{enumerate} + +\subsection{Starting from your usual plain format} +\begin{enumerate} + \item First, try to find --- on your favourite system --- whether \verb|tex| is +an executable routine, or a \verb|tex.bat| command in MS-DOS or a {\sl +shell\/} procedure under \unix. + \item If \verb|tex| is a command try to find the ``initex'' local command: +usually it is either \verb|initex| or \verb|tex -i|. + \item Try to find the name of the ``plain \TeX'' format (usually posted +when \TeX ing anything. + \item Then, {\it mutatis mutandis\/}, assuming the ``initex'' command has +the name \verb|initex| and the ``plain \TeX'' format is \verb|plain|, run the +shell command: + + \medskip + \verb|initex \&plain musictex.ins| + + \medskip\noindent which will produce a format file {\tt musictex.fmt} which +you shall put in the same directory as the others formats (hoping you have +the access rights...). Note, in \unix\ systems, the backslash before the +\verb|&| which tells the system to consider this character as a member of the +command, not a batch execution indication. Once this is done, you can +\musictex\ any score you have written using a command such as: + + \medskip + \verb|tex \&musictex my-score.tex| + + \medskip\noindent that is, specifying your new format {\tt musictex.fmt} +instead of the usual {\tt plain.fmt}. + + For MS-DOS/{\tt emTeX} users the format building command is: + + \verb|tex386 -i &plain musictex.ins| + + \noindent (you can change \verb|plain| into \verb|dc-plain| or any other +plain-like format you have) then: + + \verb|copy musictex.fmt \emtex\btexfmts\*.*| + + \noindent and the {\tt musictex.bat} command can be + +% It makes no sense to state -mt20000, perhaps this is useful for MusicTeX, +% (it uses hyphenation to break a line) but not for MusiXTeX (it uses musixflx) +\begin{quote}\begin{verbatim} +if exist %1.tex goto tex +goto end + +:tex +tex386 -mt20000 &musictex %1 %2 %3 %4 %5 %6 %7 %8 %9 + +:end + \end{verbatim}\end{quote} +\end{enumerate} + + + + + \input musicdoc.ind + + +\chapter{Examples} + +\vskip -8mm +Due to compatibility problems with \LaTeX\ (used to produce this notice) +large examples must be \TeX -ed separately, i.e.\ using \TeX\ and not \LaTeX. +Therefore, the Music\TeX\ future user is suggested to produce +some of the following examples and to look carefully at the way some +special features have been coded. + +\medskip When producing this examples, care should be taken about the fact +that many several files are supposed to be included (by means of +\keyindex{input}) in other files. Thus the only good files to be directly +\TeX-ed are those which begin with ``{\Bslash input musicnft}'' or + ``\verb|% \input musixtex|''. This latter command indicates that this +exemple can be run, both with \musictex\ inserting + + \verb|\input musicnft| + + \verb|\input musictex| + + \verb|\input musicvbm| + + \verb|\input musictrp| + + \verb|\input musicsty| + + \noindent at the beginning, or inserting the correcponding files of +MusiX\TeX\ (see corresponding manual). A simplerway of doing consists in having +two formats, one for \musictex\ (see \ref{formatbuild}), one for MusiX\TeX\ +plus its compatibility input files. + +In addition, it must be noted that most DVI previewers and laser printers +have their origin at one inch below and one inch right of the right upper +corner of the paper, while the musical examples have their upper left +significant corner only at one centimeter right and below the left top of the +paper. Therefore, special parameters have to be given to the DVI +transcription programs unless special \keyindex{hoffset} and +\keyindex{voffset} \TeX\ commands are introduced within the source \TeX\ +text. + +\medskip Suggested tests are: + +\begin{itemize} +\item{\tty PACIFIQN} for a long original piano work (11 pages); + {\tty PACIFIQB} is the same in 16~pt staff size; +\item{\tty CARILLON} for a sophisticated piano score (use Big\TeX~!); +\item{\tty PRAETORI} to get an ancient polyphonic song with three + transpositions; +\item{\tty ANGESCAO} if you like Christmas carols with four voices, a + three-staff organ score and the same transposed to meet ordinary + singer's limitations; {\tty ANGESCAM} is the same without organ. See {\tty + angescax.tex} to see how the same source has been used for two distinct +layouts. +\item{\tty HPRELFUG} if you like imitations of J.-S. Bach + (included in {\tty RECUEIL}); +\item{\tty MARCELLX} if you like pre-baroque music (included in {\tty RECUEIL}); +\item{\tty RECUEIL} if you want to get all the organ works\footnote{All +subsets of {\tty RECUEIL} can be \musictex-ed separately.} of the author in a +single book (65 pages); + \item{\tty HWIDOR} and {\tty NWIDOR} to get the Toccata by Charles-Marie +{\sc Widor} in two different sizes; + \item{\tty AVEMARIX} to get the ``M\'editation'' (alias ``Ave Maria'') by +Charles {\sc Gounod} for organ and violin or song.\index{Gounod, C.} and {\tty +AVEMARIO} to get the same for organ solo; + \item{\tty RACINE} to get the ``Cantique de Jean Racine'' by Gabriel {\sc +Faur\'e} in a transcription fit for organ rather than for +piano.\index{Faur\'e, G.} + +\end{itemize}\index{Widor, C.-M.}\index{Gounod, C.} + +\chapter{Summary of denotations} +\section{Pitches} +\begin{music} +\cleftoksi={6000} +\def\lbnt#1{\zcharnote{9}{\tty #1}\wh{!#1}} +\def\LBNT#1{\zcharnote{9}{\tty !\relax #1}\wh{!#1}} +\def\nbinstruments{1}\relax +\debutextrait\autolines{13}{1}{12}\temps\notes\qsk +\LBNT {`A}\LBNT {`B}\relax +\LBNT {`C}\LBNT {`D}\LBNT {`E}\relax +\LBNT {`F}\LBNT {`G}\relax +\lbnt A\lbnt B\lbnt C\lbnt D\lbnt E\lbnt F\enotes\finextrait +\def\lbnt#1{\zcharnote{-5}{\tty #1}\wh{!#1}}\relax +\debutextrait\autolines{13}{1}{12}\temps\notes\qsk +\lbnt G\lbnt H\lbnt I\relax +\lbnt J\lbnt K\lbnt L\lbnt M\lbnt N\lbnt a\lbnt b\lbnt c\lbnt d\lbnt e\relax +\enotes\finextrait +\def\nbinstruments{1}\relax +\cleftoksi={0000} +\def\lbnt#1{\zcharnote{10}{\tty #1}\wh{!#1}}\relax +\debutextrait\autolines{13}{1}{12}\temps\notes\qsk +\lbnt a\lbnt b\lbnt c\lbnt d\lbnt e\lbnt f\lbnt g\lbnt h\lbnt i\relax +\lbnt j\lbnt k\lbnt l\lbnt m\enotes\finextrait +\def\lbnt#1{\zcharnote{-4}{\tty #1}\wh{!#1}}\relax +\debutextrait\autolines{13}{1}{12}\temps\notes\qsk +\lbnt n\lbnt o\lbnt p\lbnt q\lbnt r\relax +\lbnt s\lbnt t\lbnt u\lbnt v\lbnt w\lbnt x\lbnt y\lbnt z\relax +\enotes +\finextrait +\end{music} +\section{Notes and Rests} +\begin{music} +\def\mcra#1{\zcharnote{10}{\hbox to 1.3\Interligne{\hss\Bslash #1\hss}}} +\def\Mcra#1{\zcharnote{14}{\hbox to 1.3\Interligne{\hss\Bslash #1\hss}}} +\def\nbinstruments{1} +\debutextrait\normal\temps\NOTes\sk +\mcra{zbv}\zbv i\sk\mcra{zsb}\zsb i\sk\enotes\Notes\relax +\mcra{wh}\wh i\qsk +\mcra{hu}\hu f\qsk\mcra{hl}\hl l\qsk +\mcra{qu}\qu f\qsk\mcra{ql}\ql l\qsk +\mcra{cu}\cu f\qsk\mcra{cl}\cl l\qsk +\qsk\mcra{ccu}\ccu f\qsk\qsk\mcra{ccl}\ccl l\qsk\relax +\qsk\qsk\mcra{cccu}\cccu d\qsk\qsk\qsk\mcra{cccl}\cccl l\qsk +\qsk\qsk\mcra{ccccu}\ccccu f\qsk\qsk\qsk\mcra{ccccl}\ccccl l\enotes\finextrait +\end{music} +% +\begin{music} +\def\mcra#1{\zcharnote{10}{\hbox to 1.3\Interligne{\hss\Bslash #1\hss}}} +\def\Mcra#1{\zcharnote{14}{\hbox to 1.3\Interligne{\hss\Bslash #1\hss}}} +\def\nbinstruments{1} +\debutextrait\normal\temps\NOTes\qsk +\mcra{whp}\whp i\qsk +\mcra{hup}\hup f\qsk\mcra{hlp}\hlp l\qsk +\mcra{qup}\qup f\qsk\mcra{qlp}\qlp l\qsk +\mcra{cup}\cup f\qsk\mcra{clp}\clp l\qsk\enotes +\Notes\qsk\mcra{qh0}\ibu0f0\qh0f\tbu0\sk +\qsk\mcra{qb0}\ibl0l0\qb0l\tbl0\sk\relax +\qsk\mcra{qhp0}\ibu0f0\qhp0f\tbu0\sk +\qsk\mcra{qbp0}\ibl0l0\qbp0l\tbl0\sk\relax +\qsk\mcra{qhpp0}\ibu0f0\qhpp0f\tbu0\sk +\qsk\mcra{qbpp0}\ibl0l0\qbpp0l\tbl0\sk\relax +\enotes +\finextrait +% +\def\mcrb#1#2{\zcharnote{14}{\hbox to 1.3\Interligne{\hss\Bslash #1\hss}}% +\mcra{#2}}% +\def\Mcrb#1#2{\zcharnote{18}{\hbox to 1.3\Interligne{\hss\Bslash #1\hss}}% +\Mcra{#2}}% +\def\mcrc#1#2#3{\zcharnote{18}{\hbox to 1.3\Interligne{\hss\Bslash #1\hss}}% +\mcrb{#2}{#3}}% +\debutextrait\normal\NOTES\qsk\relax +\Mcrb{seizsoupir}{qqs}\qqs\qsk% hemi-demi-semi-quaver rest +\mcrb{huitsoupir}{hs}\hs\qsk% demi-semi-quaver rest +\mcrc{quartsoupir}{qsoupir}{qs}\qs\qsk\qsk% semi-quaver rest +\mcrc{demisoupir}{dsoupir}{ds}\ds\qsk% quaver rest +\enotes\finextrait +\debutextrait\normal\NOTEs +\mcrb{soupir}{qp}\qp\qsk% crotchet rest +\mcra{hpause}\hpause% minim rest +\mcra{pause}\pause% semibreve rest +\mcra{PAuse}\PAuse% ? rest +\enotes\NOTes +\mcra{PAUSe}\PAUSe% ?? rest +\enotes\finextrait +\end{music} +% +\section{Other symbols} + + +\begin{music} +\def\nbinstruments{1}\parindent 0pt +\def\mcra#1{\zcharnote{17}{\hbox to 1.3\Interligne{\hss\Bslash #1\hss}}} +\def\Mcra#1{\charnote{17}{\hbox to \noteskip{\Bslash #1\hss}}} +\debutextrait\NOTEs +\mcra{nTrille}\nTrille{n}4\sk\qsk +\mcra{ntrille}\ntrille{n}4\sk\sk +\mcra{pince}\pince{n}\sk\mcra{Pince}\Pince{n}\sk\relax +\mcra{mordant}\mordant{n}\sk +\mcra{turn}\turn{n}\sk\mcra{backturn}\backturn{n}\sk +\mcra{coda}\coda{n}\sk\mcra{segno}\segno{n}\sk +\enotes\finextrait +\debutextrait +\def\mcra#1{\zcharnote{10}{\hbox to \noteskip{\Bslash #1\hss}}}\relax +\NOTes\sk\relax +\mcra{dimin}\zcharnote b{\dimin}\sk\sk +\mcra{Dimin}\zcharnote b{\Dimin}\sk\sk\relax +\mcra{DImin}\zcharnote b{\DImin}\sk\sk\sk\relax +\mcra{DIMin}\zcharnote b{\DIMin}\sk\sk\sk\sk\relax +\enotes\finextrait +\debutextrait +\def\mcra#1{\zcharnote{10}{\hbox to \noteskip{\Bslash #1\hss}}}\relax +\NOTes\sk\relax +\mcra{cresc}\zcharnote b{\cresc}\sk\sk\relax +\mcra{Cresc}\zcharnote b{\Cresc}\sk\sk\relax +\mcra{CResc}\zcharnote b{\CResc}\sk\sk\sk\relax +\mcra{CREsc}\zcharnote b{\CREsc}\sk\sk\sk\sk\relax +\enotes\finextrait +\debutextrait +\def\mcra#1{\zcharnote{14}{\hbox to 2\Interligne{\hss\Bslash #1\hss}}}\relax +\NOTEs\sk +\mcra{pointdorgue}\pointdorgue{l}\wh k\sk\relax +\mcra{pointdurgue}\pointdurgue{e}\wh f\sk\enotes +\NOTes +\mcra{PED}\PED\sk\mcra{DEP}\DEP\sk\relax +\enotes\finextrait +\end{music} +\end{document} + + diff --git a/Master/texmf-dist/tex/generic/musictex/musicext.tex b/Master/texmf-dist/tex/generic/musictex/musicext.tex new file mode 100644 index 00000000000..243b1354f17 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicext.tex @@ -0,0 +1,225 @@ + + +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 +\edef\catcode@gt{\the\catcode`\>}\catcode`\>=12 +\edef\catcode@lt{\the\catcode`\<}\catcode`\<=12 + +% \dyn {pitch}{text} inserts a dynamic +\def\dyn#1#2{\zcharnote{#1}{{\ppff #2}}} + +% \nobarnumbers prevents bar numbering +\def\nobarnumbers{\def\wbarno{\relax}} + +% \barnumbers restores bar numbering +\def\barnumbers{\def\wbarno{\w@barno}} + +% \tab is defined as a tab character, so that I can still use tabs. +\catcode`\@=4 +\let\tab=@ +\catcode`\@=11 + +% The next few sections define some extra macros to produce notes. + +% shifted dotted whole notes +\def\rwp#1{\kern \wd@skip\zwp{#1}\kern -\wd@skip} +\def\lwp#1{\kern -\wd@skip\zwp{#1}\kern \wd@skip} + +% Half-shifted notes. I sometimes use these for close intervals: for instance +% \zlqu g\zrql f + +\def\zrwh{\zrw} +\def\zlwh{\zlw} +\def\zrw#1{\kern .52\wd@skip\zw{#1}\kern -.52\wd@skip} +\def\zlw#1{\kern -.52\wd@skip\zw{#1}\kern .52\wd@skip} +\def\zrhu#1{\kern .45\hn@width\zhu{#1}\kern -.45\hn@width} +\def\zlhu#1{\kern -.45\hn@width\zhu{#1}\kern .45\hn@width} +\def\zrhl#1{\kern .45\hn@width\zhl{#1}\kern -.45\hn@width} +\def\zlhl#1{\kern -.45\hn@width\zhl{#1}\kern .45\hn@width} +\def\zrhup#1{\kern .45\hn@width\zhup{#1}\kern -.45\hn@width} +\def\zlhup#1{\kern -.45\hn@width\zhup{#1}\kern .45\hn@width} +\def\zrhlp#1{\kern .45\hn@width\zhlp{#1}\kern -.45\hn@width} +\def\zlhlp#1{\kern -.45\hn@width\zhlp{#1}\kern .45\hn@width} +\def\zrqu#1{\kern .45\qd@skip\zqu{#1}\kern -.45\qd@skip} +\def\zlqu#1{\kern -.45\qd@skip\zqu{#1}\kern .45\qd@skip} +\def\zrql#1{\kern .45\qd@skip\zql{#1}\kern -.45\qd@skip} +\def\zlql#1{\kern -.45\qd@skip\zql{#1}\kern .45\qd@skip} +\def\zrqup#1{\kern .45\qd@skip\zqup{#1}\kern -.45\qd@skip} +\def\zlqup#1{\kern -.45\qd@skip\zqup{#1}\kern .45\qd@skip} +\def\zrqlp#1{\kern .45\qd@skip\zqlp{#1}\kern -.45\qd@skip} +\def\zlqlp#1{\kern -.45\qd@skip\zqlp{#1}\kern .45\qd@skip} +\def\zrcu#1{\kern .45\qd@skip\zcu{#1}\kern -.45\qd@skip} +\def\zlcu#1{\kern -.45\qd@skip\zcu{#1}\kern .45\qd@skip} +\def\zrcl#1{\kern .45\qd@skip\zcl{#1}\kern -.45\qd@skip} +\def\zlcl#1{\kern -.45\qd@skip\zcl{#1}\kern .45\qd@skip} +% +% half left shifted accidentals - for putting before half shifted notes +% +\def\hlfl#1{\getn@i{#1}\global\n@raise=\fl@raise + \pl@llap{\f@lat\kern 0.45\qd@skip}% +}% +\def\hldfl#1{\getn@i{#1}\global\n@raise=\fl@raise + \pl@llap{\df@lat\hskip 0.45\qd@skip}% +}% +\def\hlsh#1{\getn@i{#1}\global\n@raise=\sh@raise + \pl@llap{\s@harp\hskip 0.45\qd@skip}% +}% +\def\hldsh#1{\getn@i{#1}\global\n@raise=\z@ + \pl@llap{\ds@harp\hskip 0.45\qd@skip}}% +\def\hlna#1{\getn@i{#1}\global\n@raise=\na@raise + \pl@llap{\n@at\hskip 0.45\qd@skip}}% + +% +% The following macros can be used to surround a note by parentheses. They +% are also used as ornaments by J.P. Rameau. +% \lpar p produces a left parenthesis, or "port de voix" at pitch p +% \rpar p produces a right parenthesis, or "pinc\'e" + +\def\lpar#1{\zcharnote{#1}{\raise -2.5pt\hbox{\tentt\kern -0.76\wd@skip (}}} +\def\rpar#1{\zcharnote{#1}{\raise -2.5pt\hbox{\tentt\kern 0.76\wd@skip )}}} + + +\newdimen\tmp@dimen +\def\bracketshrink{0.17\Interligne} + +% \bracket pn draws a square bracket ( [ ) to bracket an interval of an n-th +% whose lowest note is p. + +\def\bracket#1#2{\tmp@dimen #2\Interligne\advance\tmp@dimen by\Interligne + \divide\tmp@dimen by2\relax + \advance\tmp@dimen by-\bracketshrink\advance\tmp@dimen by-\bracketshrink + \advance\tmp@dimen by-\lthick + \zcharnote#1{\kern-.75\Interligne\raise-.5\Interligne + \hbox{\raise\bracketshrink\hbox{\rlap{\vrule height\tmp@dimen}\relax + \rlap{\vbox{\hrule width .5\Interligne}}\relax + \raise\tmp@dimen\vbox{\hrule width .5\Interligne}}}}} + +\newdimen\tmp@dimenc +\newdimen\z@iii\newdimen\z@iv\newdimen\z@v + +% \oblique {l}{s}{h} draws an oblique line of length l, slope s percent, and +% height h. This will cause an unrecorded space so it should be used within +% \rlap. Note that this macro is a hack and probably gobbles up resources! +% This macro is used by some of the others which follow. + +\def\oblique#1#2#3{\relax % length slope height +\ifnum #2=0\relax\raise #3\vbox{\hrule width #1 height\lthick depth\z@}\relax +\else\q@antum=25\lthick\divide\q@antum by #2\relax +\ifdim\q@antum<0pt\relax\multiply\q@antum by -1\fi +\global\z@iv=0pt\relax +\loop\ifdim\z@iv<#1\relax + {\z@v=#1\relax\advance\z@v by -\z@iv\relax\advance\z@v by -\q@antum\relax + \tmp@dimenc\z@iv\multiply\tmp@dimenc by#2\relax + \z@iii=#3\relax\advance\z@iii by .01\tmp@dimenc\relax\advance\z@iii by + -0.5\internote + \ifnum #2<0\relax\advance\z@iii by \lthick\relax\fi + \tmp@dimenc\z@v\multiply\tmp@dimenc by#2\relax + \ifdim\z@v<0pt\relax\advance\z@iii by .01\tmp@dimenc\relax\hskip\z@v\fi + \advance\z@iii by 0.6\internote\relax + \raise\z@iii\hbox to \q@antum{\vrule width\q@antum height .5\lthick depth + .5\lthick}\relax + \global\advance\z@iv by \q@antum\relax +}\repeat +\fi +} + +\newdimen\tmp@dimenb\newcount\tmp@ct +\def\crescwidth{1.8\Interligne} + +% These macros produce variable size crescendo and diminuendo marks. +% \varcresc{p}{l} produces a crescendo at pitch p, and of length l, causing +% no space. +\def\varcresc#1#2{\relax% height (note), length (dimen) + \tmp@dimenb \crescwidth\tmp@dimen #2\multiply + \tmp@dimenb by50\divide\tmp@dimenb by\tmp@dimen \tmp@ct\tmp@dimenb + \ifnum 0=\tmp@ct\relax + \tmp@ct 1\fi + \getn@i{#1}\tmp@dimen\n@i\internote + \rlap{\oblique{#2}{\tmp@ct}{\tmp@dimen}}\relax + \advance\tmp@dimen by-\lthick + \rlap{\oblique{#2}{-\tmp@ct}{\tmp@dimen}}} + +% \vardim{p}{l} draws a diminuendo at pitch p, and of length l, causing +% no space. +\def\vardim#1#2{\tmp@dimenb 1.6\Interligne\tmp@dimen #2\multiply + \tmp@dimenb by50\divide\tmp@dimenb by\tmp@dimen \tmp@ct\tmp@dimenb + \ifnum 0=\tmp@ct\relax + \tmp@ct 1\fi + \getn@i{#1}\tmp@dimen\n@i\internote + \tmp@dimenb\crescwidth\divide\tmp@dimenb by2\relax + \advance\tmp@dimen by\tmp@dimenb + \rlap{\oblique{#2}{-\tmp@ct}{\tmp@dimen}}\relax + \advance\tmp@dimen by \lthick + \tmp@dimenb #2\multiply\tmp@dimenb by\tmp@ct\advance\tmp@dimen + by-.02\tmp@dimenb + \rlap{\oblique{#2}{\tmp@ct}{\tmp@dimen}}} + +% \overbracket{p}{l}{s} draws a bracket over the music starting at the +% current position at pitch p, width l and slope s percent, causing no space. +\def\overbracket#1#2#3{\relax % height (note), length (dimen) slope (%) + \tmp@dimenb #2\multiply\tmp@dimenb by#3\divide\tmp@dimenb by100\relax + \getn@i{#1}\advance\tmp@dimenb by\n@i\internote\rlap{\relax + \raise\n@i\internote\rlap{\vrule width\lthick height \lthick + depth .8\Interligne}\oblique{#2}{#3}{\n@i\internote}\relax + \advance\tmp@dimenb by.5\lthick\relax + \raise\tmp@dimenb\hbox{\vrule width\lthick height \lthick + depth.8\Interligne}}} + +% \ovbkt{p}{n}{s} is the same as \overbracket, except that it draws the +% bracket to cover n notes (note however that glue inserted by \temps +% commands will expand the space between the notes but will not affect the +% bracket). +% I use this macro to indicate triplets, for instance. + +\def\ovbkt#1#2#3{\relax % height (note), length (number of notes) slope (%) + \tmp@dimen #2\noteskip\advance\tmp@dimen by\wd@skip\advance\tmp@dimen + by -\noteskip\advance\tmp@dimen by\lthick \overbracket{#1}{\tmp@dimen}{#3}} + +% \underbracket and \unbkt are similar to the above, but produce +% brackets under the music. +\def\underbracket#1#2#3{\relax % height (note), length (dimen) slope (%) + \tmp@dimenb #2\multiply\tmp@dimenb by#3\divide\tmp@dimenb by100\relax + \getn@i{#1}\advance\tmp@dimenb by\n@i\internote\rlap{\relax + \raise\n@i\internote\rlap{\vrule width\lthick depth -\lthick + height \Interligne}\oblique{#2}{#3}{\n@i\internote}\relax + \advance\tmp@dimenb by.5\lthick\relax + \raise\tmp@dimenb\hbox{\vrule width\lthick depth -\lthick + height\Interligne}}} +\def\unbkt#1#2#3{\relax % height (note), length (number of notes) slope (%) + \tmp@dimen #2\noteskip\advance\tmp@dimen by\wd@skip\advance\tmp@dimen + by -\noteskip\advance\tmp@dimen by\lthick + \kern-2\lthick\underbracket{#1}{\tmp@dimen}{#3}\kern2\lthick} + +% Here are several macros to make use of the alternative note graphics found +% in the font files. I copied the idea from the usual note macros in +% MusicTeX. + + +% \ttrill p makes a terminated trill ... +\def\ttrill#1{\zcharnote{#1}{\o@skp\musicnorfont\char"58\dimen@4.6pt% + \advance\dimen@-1.5\internote\tenrm\lower\dimen@\hbox{'}}} + +% J.P. Rameau indicated "arpegements" by drawing oblique strokes through the +% note stems. +% \downarpeg p is written just before the note at pitch p with its stem +% pointing up in order to indicate a descending arpeggio +% \uparpeg p is written just before the note at pitch p with its stem +% pointing down in order to indicate an ascending arpeggio + +\font\linew=linew10 %would be nice to have slightly shorter lines... +\def\downarpeg#1{\getn@i{#1}\advance\n@i by3\raise\n@i\internote + \rlap{\linew\char"61}} +\def\uparpeg#1{\getn@i{#1}\advance\n@i by-3\raise\n@i\internote + \rlap{\linew\char"21}} + +% \qqs is a demi-semiquaver rest +\def\qqs{\charnote0{{\musicnorfont\char"41}}} + +% These macros change context while forbidding line breaks +\def\xchangecontext{{\def\updatecontext{\x@updatecon}\changecontext}} +\def\xChangecontext{{\def\updatecontext{\x@updatecon}\Changecontext}} + + +\catcode`\>=\catcode@gt +\catcode`\<=\catcode@lt +\catcode`\@=\catcodeat + diff --git a/Master/texmf-dist/tex/generic/musictex/musicnew.tex b/Master/texmf-dist/tex/generic/musictex/musicnew.tex new file mode 100644 index 00000000000..31281827a1e --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicnew.tex @@ -0,0 +1,28 @@ +% + % THIS is MusicTeX +\def\mcversion{5.13} +\message{Version \mcversion\space -- September 9th, 1995}% + +\def\setclef#1{\noinstrument #1\relax\selectinstr \cleftoks} +\let\setclefs\setclef + +\def\setstaffs#1{\noinstrument #1\relax\selectinstr \nbportees} + +\def\setinterinstrument#1#2{\noinstrument #1\relax + \expandafter\def\csname interinstrument\romannumeral\noinstrument\endcsname{#2}} + +\def\hardnotes#1\notes{\termskip\noteskip=#1\relax \n@otes} + +\def\hardlyrics#1\notes{%\termskip + \def\thelyrics{\hbox{#1}}% + \setbox\ch@box\thelyrics \noteskip\wd\ch@box \n@otes} + %\check + +\def\dhsong{\rlap} +\def\thsong{\rlap} +\def\zsong{\rlap} +\def\hsong{\rlap} + +\endinput + + diff --git a/Master/texmf-dist/tex/generic/musictex/musicnft.tex b/Master/texmf-dist/tex/generic/musictex/musicnft.tex new file mode 100644 index 00000000000..0e928c75cf9 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicnft.tex @@ -0,0 +1,938 @@ +% +% This is MusicNFT from MusicTeX +\message{Version 5.18 -- August 26th, 1996}% +% +% finding which class of fonts is normally used (cmxxx, dmxxx, dcxxx,...) +\def\wordsplita#1#2#3.XX.{#1}% +\def\wordsplitb#1#2#3.XX.{#2}% +\rm +\edef\fonthdg{\expandafter\wordsplita\fontname\the\font.XX.}% +\edef\fonthdge{\expandafter\wordsplitb\fontname\the\font.XX.}% + % +\font\cmmi=cmmi10 scaled \magstep1 +\font\cmbxbig=\fonthdg\fonthdge bx10 scaled \magstep2 +\font\cmbx=\fonthdg\fonthdge bx10 scaled \magstep1 +\font\cmbxsmall=\fonthdg\fonthdge bx10 +\font\cmbxtiny=\fonthdg\fonthdge bx8 +\font\cmbxmicro=\fonthdg\fonthdge bx7 +\font\moyen=\fonthdg\fonthdge bx10 scaled \magstep1 +\font\cmex=cmex10 +\font\cmsy=cmsy10 scaled \magstep1 +\font\cmr=\fonthdg\fonthdge r10 scaled \magstep1 +\font\ttyeight=\fonthdg\fonthdge tt8 + + +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 +\edef\catcode@gt{\the\catcode`\>}\catcode`\>=12 +\edef\catcode@lt{\the\catcode`\<}\catcode`\<=12 + +% +\let\@plainwlog=\wlog +\def\wlog#1{}% +% +\font\musictwenty=musikn20 +\fontdimen35\musictwenty=0pt\relax +\font\musicsixteen=musikn16 +\font\slurntwenty=slurn20 +\font\slurnsixteen=slurn16 +\font\musicthirteen=musikn13 +\font\musiceleven=musikn11 +\font\beamtwenty=beamn20 +\fontdimen50\beamtwenty=0pt\relax +\font\beamsixteen=beamn16 +\font\beamthirteen=beamn13 +\font\beameleven=beamn11 +% +\newif\ifcautionacc +\cautionaccfalse +% +\def\q@u{\musicnfont\char33\hss}% +\def\h@a{\musicnfont\char34\hss}% +\def\w@h{\musicnfont\char35\hss}% +\def\d@iamg{\musicnfont\char0\hss}% +\def\d@iamw{\musicnfont\char127\hss}% +\def\s@haker{\musicnfont\char79\hss}% +\def\t@remolord{\musicnfont\char78\hss}% +\def\c@arrg{\musicnfont\char1\hss}% +\def\c@arpg{\musicnfont\char2\hss}% +\def\c@arqg{\musicnfont\char3\hss}% +\def\w@hq{\musicnfont\char 125\hss}% +\def\s@bv{\musicnfont\char36\hss}% +\def\b@rv{\musicnfont\char32\hss}% +\def\c@upchar{39}% offset to upper eighth hook +\def\c@dnchar{44}% offset to upper eighth hook +% + % +% +\def\musicxx{\musicnorfont}% +\def\slurnxx{\slurnorfont}% +\def\slurnfont{\slurnorfont}% +% +\def\set@normalnotesize{\def\beamfont{\beamnorfont}% +\def\musicnfont{\musicnorfont}% +\def\i@nterbeam{0.75\Interligne}% +\def\b@alkthick{0.24\Interligne}} +% +\def\set@smallnotesize{\def\beamfont{\beamsmallfont}% +\def\musicnfont{\musicsmallfont}% +\def\i@nterbeam{0.6\Interligne}% +\def\b@alkthick{0.192\Interligne}} +% +\def\set@tinynotesize{\def\beamfont{\beamtinyfont}% +\def\musicnfont{\musictinyfont}% +\def\i@nterbeam{0.48\Interligne}% +\def\b@alkthick{0.1536\Interligne}} +% +\set@normalnotesize +% +\def\qu@raise{\z@}% +\def\ha@raise{\z@}% +\def\wh@raise{\z@}% +\def\zwq#1{\getn@i{#1}\def\n@fon{\zwq}\def\n@sym{\w@hq}\g@zw}% +\def\zsb#1{\getn@i{#1}\def\n@fon{\zsb}\def\n@sym{\s@bv}\g@zsb}% semi-breve +\def\zbv#1{\getn@i{#1}\def\n@fon{\zbv}\def\n@sym{\b@rv}\g@zbv}% breve +\def\g@zbv{\n@raiseq + \h@lines{\bv@width}\def\s@tem{\resetstem}\plap@symss\fi}% +\def\g@zsb{\n@raiseq + \h@lines{\sb@width}\def\s@tem{\resetstem}\plap@symss\fi}% +% +\newbox\ch@box +\newdimen\lthick +\global\lthick=0.4pt +%\newdimen\qn@width +%\newdimen\hn@width +%\newdimen\wn@width +%\newdimen\sb@width +%\newdimen\bv@width +\newdimen\qd@skip +\newdimen\hd@skip +\newdimen\wd@skip +% +\newcount\musicsize +% +\def\musickeyfont{\ifdim\internote<0.76\Internote\musictinyfont +\else\ifdim\internote<0.95\Internote\musicsmallfont + \else\musicnorfont + \fi +\fi}% +% +\def\meterfont{\ifdim\internote<0.76\Internote\metersmallfont +\else\ifdim\internote<0.95\Internote\meternorfont + \else\meterbigfont + \fi +\fi}% +% +\def\pointfont{\ifdim\internote<0.76\Internote\metertinyfont +\else\ifdim\internote<0.95\Internote\metersmallfont + \else\meternorfont + \fi +\fi}% +% +\def\computespecifics{\ifnum\musicsize=0\relax\musicsize=20\relax\fi +\ifnum\musicsize=20\relax + \def\ppff{\ppfftwenty}% + \def\beamnorfont{\beamtwenty}\def\musicnorfont{\musictwenty}% + \def\beamsmallfont{\beamsixteen}\def\musicsmallfont{\musicsixteen}% + \def\beamtinyfont{\beamthirteen}\def\musictinyfont{\musicthirteen}% + \def\meternorfont{\cmbx}\def\metersmallfont{\cmbxsmall}% + \def\metertinyfont{\cmbxtiny}\def\slurnorfont{\slurntwenty}% + \def\meterbigfont{\cmbxbig}% +\else + \def\ppff{\ppffsixteen}% + \def\beamnorfont{\beamsixteen}\def\musicnorfont{\musicsixteen}% + \def\beamsmallfont{\beamthirteen}\def\musicsmallfont{\musicthirteen}% + \def\beamtinyfont{\beameleven}\def\musictinyfont{\musiceleven}% + \def\meternorfont{\cmbxsmall}\def\metersmallfont{\cmbxtiny}% + \def\metertinyfont{\cmbxmicro}\def\slurnorfont{\slurnsixteen}% + \def\meterbigfont{\cmbx}% +\fi +\Interligne=\musicsize pt\divide\Interligne by 4\relax +\Internote=0.5\Interligne +\interbeam=\i@nterbeam +\computeqn@w}% +% +\def\computeqn@w{% +\setbox\ch@box=\hbox{\w@h}\wn@width=\wd\ch@box +\setbox\ch@box=\hbox{\s@bv}\sb@width=\wd\ch@box +\setbox\ch@box=\hbox{\b@rv}\bv@width=\wd\ch@box +\setbox\ch@box=\hbox{\c@arrg}\gr@width=\wd\ch@box +\setbox\ch@box=\hbox{\h@a}\hn@width=\wd\ch@box +\setbox\ch@box=\hbox{\q@u}\qn@width=\wd\ch@box +\qd@skip=\qn@width\advance\qd@skip by -\hlthick +\hd@skip=\hn@width\advance\hd@skip by -\hlthick +\wd@skip=\wn@width\advance\wd@skip by -\hlthick +}% +\def\normalnotesize{\set@normalnotesize\computespecifics + \def\currentsize{\normalnotesize}} +\def\smallnotesize{\set@smallnotesize\computespecifics + \def\currentsize{\smallnotesize}} +\def\tinynotesize{\set@tinynotesize\computespecifics + \def\currentsize{\tinynotesize}} +% +%\check +% +\def\s@oupir{{\musicnfont\char"3E}}% +% + %\newdimen\c@height +\newcount\c@mult +%\check +\def\d@cr#1{\c@mult=#1\relax % queue de #1 croche(s) vers le haut +\advance\c@mult by \c@upchar\d@crg}% +\def\d@gru{\c@mult=12\relax\d@crg}% queue de croche barree vers le haut +\def\d@crg{\setbox\ch@box=\rlap{\musicnfont\char\c@mult}\c@height=\ht\ch@box +\global\advance\st@top by \c@height +\global\advance\st@top by \internote + \ifdim\st@top>\st@bot + \maxst@top + \global\advance\st@bot by -\altportee + \global\advance\st@top by -\altportee + \kern\stem@skip\vrule height\st@top depth -\st@bot width \lthick + \advance\st@top by -\c@height\raise\st@top\box\ch@box + \kern -\lthick \kern-\stem@skip + \fi\resetstem}% +%\check +\def\p@cr#1{\c@mult=#1\relax % queue de #1 croche(s) vers le bas +\advance\c@mult by \c@dnchar\p@crg}% +\def\p@gru{\c@mult=13\relax\p@crg}% queue de croche barree vers la bas +\def\p@crg{\setbox\ch@box=\rlap{\kern \hlthick\musicnfont + \char\c@mult}\c@height=\ht\ch@box +\global\advance\st@bot by -\internote +\global\advance\st@bot by -\c@height +\ifdim\st@top>\st@bot + \minst@bot + \global\advance\st@bot by -\altportee + \global\advance\st@top by -\altportee + \raise\st@bot\box\ch@box + \vrule height\st@top depth -\st@bot width \lthick + \kern -\lthick +\fi \resetstem}% +% +% grace notes (croches barrees) +\def\grcu#1{\getn@i{#1}\def\n@sym{\q@u}\def\n@fon{\grcu}\n@raiseq + \h@linesqn\global\stem@skip=\qd@skip + \def\s@tem{\d@gru}\pl@symssq\fi}% +\def\grcl#1{\getn@i{#1}\def\n@sym{\q@u}\def\n@fon{\grcl}\n@raiseq + \h@linesqn\def\s@tem{\p@gru}\pl@symssq\fi}% +% +%\check +\def\s@harp{\musicnfont\char"34}\def\sh@raise{\z@}% +\def\f@lat{\musicnfont\char"32}\def\fl@raise{\z@}% +\def\n@at{\musicnfont\char"36}\def\na@raise{\z@}% +\def\ds@harp{\musicnfont\char"35}% +\def\df@lat{\musicnfont\char"33}% +% +\def\smalln@at{\cau@left\musicnfont\char"7C\cau@right}% +\def\smallf@lat{\cau@left\musicnfont\char"78\cau@right}% +\def\smalls@harp{\cau@left\musicnfont\char"7A\cau@right}% +\def\smallds@harp{\cau@left\musicnfont\char"7B\cau@right}% +\def\smalldf@lat{\cau@left\musicnfont\char"79\cau@right}% +\def\cau@left{\ifcautionacc\raise-.45\Interligne + \hbox{\ttyeight(\kern -\lthick}\fi} +\def\cau@right{\ifcautionacc\raise-.45\Interligne + \hbox{\ttyeight\kern -\lthick)\kern -.2\Interligne}\fi\cautionaccfalse} +% +\def\n@rpl@lap{\global\n@raise=\z@\pl@llap}% +\def\bigsh#1{\inhgetn@i{#1}\n@rpl@lap{\s@harp}}% +\def\smallsh#1{\inhgetn@i{#1}\n@rpl@lap{\smalls@harp}}% +\def\csh{\cautionacctrue\smallsh}% +\def\uppersh#1{\zcharnote{#1}{\raise3\internote +\hbox to \qn@width{\hss\smalls@harp\hss}}}% +% +\def\bigdsh#1{\inhgetn@i{#1}\n@rpl@lap{\ds@harp}}% +\def\smalldsh#1{\inhgetn@i{#1}\n@rpl@lap{\smallds@harp}}% +\def\cdsh{\cautionacctrue\smalldsh}% +% +\def\bigna#1{\inhgetn@i{#1}\n@rpl@lap{\n@at}}% +\def\smallna#1{\inhgetn@i{#1}\n@rpl@lap{\smalln@at}}% +\def\cna{\cautionacctrue\smallna}% +\def\upperna#1{\zcharnote{#1}{\raise3\internote +\hbox to \qn@width{\hss\smalln@at\hss}}}% +% +\def\bigfl#1{\inhgetn@i{#1}\n@rpl@lap{\f@lat}}% +\def\smallfl#1{\inhgetn@i{#1}\n@rpl@lap{\smallf@lat}}% +\def\cfl{\cautionacctrue\smallfl}% +\def\upperfl#1{\zcharnote{#1}{\raise3\internote +\hbox to \qn@width{\hss\smallf@lat\hss}}}% +% +\def\bigdfl#1{\inhgetn@i{#1}\n@rpl@lap{\df@lat}}% +\def\smalldfl#1{\inhgetn@i{#1}\n@rpl@lap{\smalldf@lat}}% +\def\cdfl{\cautionacctrue\smalldfl} +% +\def\na#1{\ifdim\small@test\bigna{#1}\else\smallna{#1}\fi}% +\def\fl#1{\ifdim\small@test\bigfl{#1}\else\smallfl{#1}\fi}% +\def\sh#1{\ifdim\small@test\bigsh{#1}\else\smallsh{#1}\fi}% +\def\dfl#1{\ifdim\small@test\bigdfl{#1}\else\smalldfl{#1}\fi}% +\def\dsh#1{\ifdim\small@test\bigdsh{#1}\else\smalldsh{#1}\fi}% +% +%\check +\def\b@adjust{\ifdim\y@ii>2.1\q@antum +\multiply\q@antum by 2\relax\advance\b@char by 1\relax\fi +}% +\newcount\b@char +\def\b@alkdefs{\b@char=0\relax +\ifnum \b@p>0\relax\b@char=\b@p\relax\multiply\b@char by 6\relax + \advance\b@char by -6\relax\ifnum\b@char>54\relax\b@char=54\relax\fi\fi +\ifnum \b@p<0\relax\b@char=-\b@p\relax\multiply\b@char by 6\relax + \advance\b@char by 58\relax\ifnum\b@char>118\relax\b@char=118\relax\fi\fi +\q@antum=60pt\divide\q@antum by 32\relax\b@adjust +\b@adjust +\b@adjust +\b@adjust +\b@adjust +\chardef\b@alk=\b@char}% +%\check +\def\s@lopdefs{\q@antum=60pt\divide\q@antum by 32\relax \def\s@lope{0.0}\relax +\ifnum \b@p=1\relax\def\s@lope{0.05}\fi +\ifnum \b@p>1\relax\b@char=\b@p\relax\multiply\b@char by 5\relax + \ifnum\b@char>50\relax\b@char=50\relax\fi + \edef\s@lope{0.\the\b@char}\fi +\ifnum \b@p=-1\relax\def\s@lope{-0.05}\fi +\ifnum \b@p<-1\relax\b@char=-\b@p\relax\multiply\b@char by 5\relax + \ifnum\b@char>50\relax\b@char=50\relax\fi + \edef\s@lope{-0.\the\b@char}\fi +}% +%\check +\def\p@outre{% \y@ii : longueur, \b@p : pente, \y@i : altitude +\ifnum \b@p=0\relax + \y@iii=\y@i\y@iv=\y@i + \advance\y@iii by -\b@alkthick + \advance\y@iv by \b@alkthick + \vrule height \y@iv depth -\y@iii width \y@ii +% \raise \y@i\hbox{\vrule height \b@alkthick depth \b@alkthick +% width \y@ii} +\else\b@alkdefs\beamfont + \global\y@iv=\z@ + \loop\ifdim\y@iv<\y@ii + {\y@v=\y@ii\advance\y@v by -\y@iv + \advance\y@v by -\q@antum + \y@iii=\y@i + \advance\y@iii by \s@lope\y@iv + \ifdim\y@v<\z@\advance\y@iii by \s@lope\y@v\hskip\y@v\fi + \raise\y@iii\hbox to \q@antum{\b@alk\hss}\global\advance\y@iv by \q@antum + }\repeat +\fi +}% +%\check +\def\clefdefasymbol{\hbox to 3.2\Interligne{\musickeyfont + \kern -0.8\internote\hss\char"49\hss}}% +\def\smallclefdefa{\hbox to 2.8\Interligne{\musickeyfont + \kern -0.64\internote\hss\char"4A\hss}}% +%\check +\def\clefdesolsymbol{\hbox to 3.2\Interligne{\musickeyfont + \kern -1.2\internote\hss\char"47\hss}}% +\def\smallclefdesol{\hbox to 2.8\Interligne{\musickeyfont +\kern -0.96\internote\hss\char"48\hss}}% +%\check +\def\clefdutsymbol{\hbox to 3.2\Interligne{\musickeyfont + \kern -0.8\internote\hss\char"4B\hss}}% +\def\smallclefdut{\hbox to 2.8\Interligne{\musickeyfont + \kern -0.64\internote\hss\char"4C\hss}}% +\def\gclefdut{\hbox to 3.2\Interligne{\musickeyfont + \kern 0.4\internote\hss\char"04\hss}}% +\def\drumclefsymbol{\hbox to 3.2\Interligne{\musickeyfont + \kern 0.4\internote\hss\char"4D\hss}}% +% +\def\allabreve{{\kern \internote\musickeyfont\char"52}}% +\def\meterC{{\kern \internote\musickeyfont\char"53}}% +% +\def\d@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"3F}}% +\def\q@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"40}}% +\def\h@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"41}}% +\def\s@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"42}}% +\def\p@orgue{\hbox{\kern -0.5\hn@width\musicnfont\char"50}}% +\def\p@urgue{\hbox{\kern -0.5\hn@width\musicnfont\char"51}}% +\def\trille#1{\hbox to #1{\leaders\hbox{\musicnfont\char"64}\hfill}}% +\def\Trille#1{\hbox to #1{\it tr\leaders\hbox{\musicnfont\char"64}\hfill}}% +% +% Gregorian notes +% +\def\diamg#1{\getn@i{#1}\def\n@fon{\diamg}\def\n@sym{\d@iamg}\g@diamg}% +\def\zdiamg#1{\getn@i{#1}\def\n@fon{\diamg}\def\n@sym{\d@iamg}\rlap{\g@diamg}}% +\def\diamw#1{\getn@i{#1}\def\n@fon{\diamw}\def\n@sym{\d@iamw}\g@diamg}% +\def\zdiamw#1{\getn@i{#1}\def\n@fon{\diamw}\def\n@sym{\d@iamw}\rlap{\g@diamg}}% +\def\carrg#1{\getn@i{#1}\def\n@fon{\carrg}\def\n@sym{\c@arrg}\g@diamg}% +\def\zcarrg#1{\getn@i{#1}\def\n@fon{\carrg}\def\n@sym{\c@arrg}\rlap{\g@diamg}}% +\def\carqg#1{\getn@i{#1}\def\n@fon{\carqg}\def\n@sym{\c@arqg}\g@diamg}% +\def\zcarqg#1{\getn@i{#1}\def\n@fon{\carqg}\def\n@sym{\c@arqg}\rlap{\g@diamg}}% +\def\carpg#1{\getn@i{#1}\def\n@fon{\carpg}\def\n@sym{\c@arpg}\g@diamg}% +\def\zcarpg#1{\getn@i{#1}\def\n@fon{\carpg}\def\n@sym{\c@arpg}\rlap{\g@diamg}}% +% +\def\g@diamg{\advancetrue\g@diam}% +\def\g@diam{\global\n@raise=\wh@raise\ifnum\n@i<100\relax + \h@lines{\gr@width}\def\s@tem{\resetstem}\pl@symssq\fi}% + %\check +%%%%%%%%%%%%%%%%%%%%%%%%% notes with black diamond heads %%%%%%%%%%%%%%%%%%%% + + %\check +\def\yu{\advancetrue\yu@z}% +\def\yup{\advancetrue\yup@z}% +\def\yupp{\advancetrue\yupp@z}% +\def\yuppp{\advancetrue\yuppp@z}% +\def\yu@z#1{\getn@i{#1}\def\n@fon{\yu}\def\n@sym{\d@iamg}\g@qu}% +\def\yup@z#1{\getn@i{#1}\def\n@fon{\yup}\def\n@sym{\d@iamgp}\g@qu}% +\def\yupp@z#1{\getn@i{#1}\def\n@fon{\yupp}\def\n@sym{\d@iamgpp}\g@qu}% +\def\yuppp@z#1{\getn@i{#1}\def\n@fon{\yuppp}\def\n@sym{\d@iamgppp}\g@qu}% +\def\yl{\advancetrue\yl@z}% +\def\ylp{\advancetrue\ylp@z}% +\def\ylpp{\advancetrue\ylpp@z}% +\def\ylppp{\advancetrue\ylppp@z}% +\def\yl@z#1{\getn@i{#1}\def\n@fon{\yl}\def\n@sym{\d@iamg}\g@ql}% +\def\ylp@z#1{\getn@i{#1}\def\n@fon{\ylp}\def\n@sym{\d@iamgp}\g@ql}% +\def\ylpp@z#1{\getn@i{#1}\def\n@fon{\ylpp}\def\n@sym{\d@iamgpp}\g@ql}% +\def\ylppp@z#1{\getn@i{#1}\def\n@fon{\ylppp}\def\n@sym{\d@iamgppp}\g@ql}% + %\check + % +\def\d@iamgp{\hbox to \qn@width{\d@iamg\hss}\P@t}% +\def\d@iamgpp{\hbox to \qn@width{\d@iamg\hss}\PP@t}% +\def\d@iamgppp{\hbox to \qn@width{\d@iamg\hss}\PPP@t}% +% +\def\yh#1{\selectpoutre{#1}\yh@}% +\def\yb#1{\selectpoutre{#1}\yb@}% +\def\yh@#1{\getn@i{#1}\def\n@fon{\yh@}\def\n@sym{\d@iamg}\g@qh@}% % position +\def\yb@#1{\getn@i{#1}\def\n@fon{\yb@}\def\n@sym{\d@iamg}\g@qb@} % #1 position +% +% x heads without stems +\def\zy#1{\getn@i{#1}\def\n@fon{\zy}\def\n@sym{\d@iamg}\g@zq} +\def\zyp#1{\getn@i{#1}\def\n@fon{\zyp}\def\n@sym{\d@iamgp}\g@zq} +\def\zypp#1{\getn@i{#1}\def\n@fon{\zypp}\def\n@sym{\d@iamgpp}\g@zq} +\def\zyppp#1{\getn@i{#1}\def\n@fon{\zyppp}\def\n@sym{\d@iamgppp}\g@zq} + % + % croches, doubles croches, triples croches, quadruple croches queue en + % haut et en bas pour percussion x + % +\def\ycu{\advancetrue\mycu1}\def\yccu{\advancetrue\mycu2} +\def\ycccu{\advancetrue\mycu3}\def\yccccu{\advancetrue\mycu4}% +\def\ycl{\advancetrue\mycl1}\def\yccl{\advancetrue\mycl2} +\def\ycccl{\advancetrue\mycl3}\def\yccccl{\advancetrue\mycl4}% +% +\def\yclp{\advancetrue\myclp1}\def\ycup{\advancetrue\mycup1}% +\def\yclpp{\advancetrue\myclpp1}\def\ycupp{\advancetrue\mycupp1}% +\def\yclppp{\advancetrue\myclppp1}\def\ycuppp{\advancetrue\mycuppp1}% + % +\def\mycu#1#2{\getn@i{#2}\def\n@sym{\d@iamg}% +\edef\n@fon{\noexpand\mycu #1}\g@cu{#1}} +\def\mycup#1#2{\getn@i{#2}\def\n@sym{\d@iamgp}% +\edef\n@fon{\noexpand\mycup #1}\g@cu{#1}} +\def\mycupp#1#2{\getn@i{#2}\def\n@sym{\d@iamgpp}% +\edef\n@fon{\noexpand\mycupp #1}\g@cu{#1}} +\def\mycuppp#1#2{\getn@i{#2}\def\n@sym{\d@iamgppp}% +\edef\n@fon{\noexpand\mycupp #1}\g@cu{#1}} + % +\def\mycl#1#2{\getn@i{#2}\def\n@sym{\d@iamg}% +\edef\n@fon{\noexpand\mycl #1}\g@cl{#1}} +\def\myclp#1#2{\getn@i{#2}\def\n@sym{\d@iamgp}% +\edef\n@fon{\noexpand\myclp #1}\g@cl{#1}} +\def\myclpp#1#2{\getn@i{#2}\def\n@sym{\d@iamgpp}% +\edef\n@fon{\noexpand\myclpp #1}\g@cl{#1}} +\def\myclppp#1#2{\getn@i{#2}\def\n@sym{\d@iamgppp}% +\edef\n@fon{\noexpand\myclppp #1}\g@cl{#1}} + +%%%%%%%%%%%%%%%%%%%%%%%%% notes with white diamond heads %%%%%%%%%%%%%%%%%%%% + + %\check +\def\du{\advancetrue\du@z}% +\def\dup{\advancetrue\dup@z}% +\def\dupp{\advancetrue\dupp@z}% +\def\duppp{\advancetrue\duppp@z}% +\def\du@z#1{\getn@i{#1}\def\n@fon{\du}\def\n@sym{\d@iamw}\g@qu}% +\def\dup@z#1{\getn@i{#1}\def\n@fon{\dup}\def\n@sym{\d@iamwp}\g@qu}% +\def\dupp@z#1{\getn@i{#1}\def\n@fon{\dupp}\def\n@sym{\d@iamwpp}\g@qu}% +\def\duppp@z#1{\getn@i{#1}\def\n@fon{\duppp}\def\n@sym{\d@iamwppp}\g@qu}% +\def\dl{\advancetrue\dl@z}% +\def\dlp{\advancetrue\dlp@z}% +\def\dlpp{\advancetrue\dlpp@z}% +\def\dlppp{\advancetrue\dlppp@z}% +\def\dl@z#1{\getn@i{#1}\def\n@fon{\dl}\def\n@sym{\d@iamw}\g@ql}% +\def\dlp@z#1{\getn@i{#1}\def\n@fon{\dlp}\def\n@sym{\d@iamwp}\g@ql}% +\def\dlpp@z#1{\getn@i{#1}\def\n@fon{\dlpp}\def\n@sym{\d@iamwpp}\g@ql}% +\def\dlppp@z#1{\getn@i{#1}\def\n@fon{\dlppp}\def\n@sym{\d@iamwppp}\g@ql}% + %\check + % +\def\d@iamwp{\hbox to \qn@width{\d@iamw\hss}\P@t}% +\def\d@iamwpp{\hbox to \qn@width{\d@iamw\hss}\PP@t}% +\def\d@iamwppp{\hbox to \qn@width{\d@iamw\hss}\PPP@t}% +% +\def\dh#1{\selectpoutre{#1}\dh@}% +\def\db#1{\selectpoutre{#1}\db@}% +\def\dh@#1{\getn@i{#1}\def\n@fon{\dh@}\def\n@sym{\d@iamw}\g@qh@}% % position +\def\db@#1{\getn@i{#1}\def\n@fon{\db@}\def\n@sym{\d@iamw}\g@qb@} % #1 position +% +% x heads without stems +\def\zd#1{\getn@i{#1}\def\n@fon{\zd}\def\n@sym{\d@iamw}\g@zq} +\def\zdp#1{\getn@i{#1}\def\n@fon{\zdp}\def\n@sym{\d@iamwp}\g@zq} +\def\zdpp#1{\getn@i{#1}\def\n@fon{\zdpp}\def\n@sym{\d@iamwpp}\g@zq} +\def\zdppp#1{\getn@i{#1}\def\n@fon{\zdppp}\def\n@sym{\d@iamwppp}\g@zq} + % + % croches, doubles croches, triples croches, quadruple croches queue en + % haut et en bas pour percussion x + % +\def\dcu{\advancetrue\mdcu1}\def\dccu{\advancetrue\mdcu2} +\def\dcccu{\advancetrue\mdcu3}\def\dccccu{\advancetrue\mdcu4}% +\def\dcl{\advancetrue\mdcl1}\def\dccl{\advancetrue\mdcl2} +\def\dcccl{\advancetrue\mdcl3}\def\dccccl{\advancetrue\mdcl4}% +% +\def\dclp{\advancetrue\mdclp1}\def\dcup{\advancetrue\mdcup1}% +\def\dclpp{\advancetrue\mdclpp1}\def\dcupp{\advancetrue\mdcupp1}% +\def\dclppp{\advancetrue\mdclppp1}\def\dcuppp{\advancetrue\mdcuppp1}% + % +\def\mdcu#1#2{\getn@i{#2}\def\n@sym{\d@iamw}% +\edef\n@fon{\noexpand\mdcu #1}\g@cu{#1}} +\def\mdcup#1#2{\getn@i{#2}\def\n@sym{\d@iamwp}% +\edef\n@fon{\noexpand\mdcup #1}\g@cu{#1}} +\def\mdcupp#1#2{\getn@i{#2}\def\n@sym{\d@iamwpp}% +\edef\n@fon{\noexpand\mdcupp #1}\g@cu{#1}} +\def\mdcuppp#1#2{\getn@i{#2}\def\n@sym{\d@iamwppp}% +\edef\n@fon{\noexpand\mdcupp #1}\g@cu{#1}} + % +\def\mdcl#1#2{\getn@i{#2}\def\n@sym{\d@iamw}% +\edef\n@fon{\noexpand\mdcl #1}\g@cl{#1}} +\def\mdclp#1#2{\getn@i{#2}\def\n@sym{\d@iamwp}% +\edef\n@fon{\noexpand\mdclp #1}\g@cl{#1}} +\def\mdclpp#1#2{\getn@i{#2}\def\n@sym{\d@iamwpp}% +\edef\n@fon{\noexpand\mdclpp #1}\g@cl{#1}} +\def\mdclppp#1#2{\getn@i{#2}\def\n@sym{\d@iamwppp}% +\edef\n@fon{\noexpand\mdclppp #1}\g@cl{#1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% arpeges +% +\def\arpegesym#1{\hbox to \Interligne{\kern -1.2\Interligne +\vbox to #1{\parindent=\z@ +\offinterlineskip\ifdim #1>4\Interligne\Arp@elem\fi\hrule +\cleaders\arp@elem\vfill\kern -\interligne}\hss}}% +\def\arp@elem{\vbox to \Interligne{\vss\musicnorfont\char"5A}}% +\def\Arp@elem{\vbox to 4\Interligne{\vss\musicnorfont\char"5D}}% +% +\def\arpeggio#1#2{\zcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax +\musicnorfont\chardef\arp@el=\n@iii\relax\arp@el}\qsk}% +\def\larpeggio#1#2{\lcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax +\musicnorfont\chardef\arp@el=\n@iii\relax\arp@el\kern -0.3\qn@width}\qsk}% +% +% +% This skip aligns some ornaments which appear not to be centred precisely +% on the notes +\def\o@skp{\kern-.5\hd@skip} +\def\mordant#1{\zcharnote{#1}{\musicnfont\char 89}}% +\def\pince#1{\zcharnote{#1}{\musicnfont\char 87}}% +\def\Pince#1{\zcharnote{#1}{\musicnfont\char 88}}% +\def\Lpince#1{\zcharnote{#1}{\musicnfont\char 7}}% +\def\Pincesw#1{\zcharnote{#1}{\musicnfont\char 11}}% +\def\Pincenw#1{\zcharnote{#1}{\musicnfont\char 10}}% +\def\Pincene#1{\zcharnote{#1}{\musicnfont\char 9}}% +% \turn p makes a turn symbol at pitch p, causing no space +% \backturn p makes a backward turn symbol at pitch p, causing no space +% \coda p makes a coda ... +% \segno p makes the special "S" ... +\def\turn#1{\zcharnote{#1}{\o@skp\musicnfont\char"44}} +\def\backturn#1{\zcharnote{#1}{\o@skp\musicnfont\char"43}} +\def\coda#1{\zcharnote{#1}{\o@skp\musicnorfont\char"55}} +\def\segno#1{\zcharnote{#1}{\o@skp\musicnorfont\char"56}} +% +\def\sforz#1{{\advance\transpose by -2\usf{#1}}}% +\def\pz#1{{\advance\transpose by -2\upz{#1}}}% +\def\ppz#1{\uppz{#1}}% +\def\st#1{{\advance\transpose by -2\ust{#1}}}% +% +\def\usf#1{\zcharnote{#1}{\musicnfont\char 30}}% +\def\lsf#1{\zcharnote{#1}{\musicnfont\char 31}}% +\def\ust#1{\zcharnote{#1}{\musicnfont\char 26}}% +\def\lst#1{\zcharnote{#1}{\musicnfont\char 27}}% +\def\upz#1{\zcharnote{#1}{\musicnfont\char 24}}% +\def\lpz#1{\zcharnote{#1}{\musicnfont\char 25}}% +\def\uppz#1{\zcharnote{#1}{\musicnfont\char 28}}% +\def\lppz#1{\zcharnote{#1}{\musicnfont\char 29}}% +% +% placement des accents au-dessus de poutres et non de tetes de notes +\def\acc@balk{\global\stem@skip=\z@ % +\y@ii=\b@z % a augmenter avec la pente +\y@v=\locx@skip\advance\y@v by \stem@skip\advance\y@v by -\b@x +\advance\y@ii by \s@lope\y@v +\advance\y@ii by -\altportee +\raise\y@ii\rlap{\kern\stem@skip\balk@accent}}% +%\check +\def\busf#1{\def\balk@accent{\musicnfont\char 30}\selectpoutre{#1}\acc@balk}% +\def\blsf#1{\def\balk@accent{\musicnfont\char 31}\selectpoutre{#1}\acc@balk}% +\def\bust#1{\def\balk@accent{\musicnfont\char 26}\selectpoutre{#1}\acc@balk}% +\def\blst#1{\def\balk@accent{\musicnfont\char 27}\selectpoutre{#1}\acc@balk}% +\def\bupz#1{\def\balk@accent{\musicnfont\char 24}\selectpoutre{#1}\acc@balk}% +\def\blpz#1{\def\balk@accent{\musicnfont\char 25}\selectpoutre{#1}\acc@balk}% +\def\buppz#1{\def\balk@accent{\musicnfont\char 28}\selectpoutre{#1}\acc@balk}% +\def\blppz#1{\def\balk@accent{\musicnfont\char 29}\selectpoutre{#1}\acc@balk}% +% +% soufflets crescendo et decrescendo +% +\def\dimin{{\musicnorfont\char"10}}% +\def\Dimin{{\musicnorfont\char"11}}% +\def\DImin{{\musicnorfont\char"12}}% +\def\DIMin{{\musicnorfont\char"13}}% +\def\cresc{{\musicnorfont\char"14}}% +\def\Cresc{{\musicnorfont\char"15}}% +\def\CResc{{\musicnorfont\char"16}}% +\def\CREsc{{\musicnorfont\char"17}}% +% +% colons for repeats (:| |: :||:) +% +%\check +\def\w@coli{\selectinstr{\p@loop\raise\altportee + \hbox to \z@{\hss\musickeyfont\char 126\hss}\n@portee\repeat}}% +% +% long pauses +% +\def\PAuse{\hbox to \noteskip{\musicnorfont\char"3A\hss}\advance\locx@skip + by \noteskip}% +\def\PAUSe{\hbox to \noteskip{\musicnorfont\char"3B\hss}\advance\locx@skip + by \noteskip}% +\def\expause#1{\charnote{#1}{\musicnorfont\char 5\hss}} +\def\zexpause#1{\zcharnote{#1}{\musicnorfont\char 5\hss}} +\def\exhpause#1{\charnote{#1}{\musicnorfont\char 6\hss}} +\def\zexhpause#1{\zcharnote{#1}{\musicnorfont\char 6\hss}} +% +% special song system left begins +% +\def\type@songsymbols{\raise\lowersongalt\llap{\musicnorfont\char 15}% +\advance\lowersongalt by \uppersongalt +\advance\lowersongalt by -\hlthick +\raise\lowersongalt\llap{\musicnorfont\char 14}} +% +% +% horizontal upper slur offset by #2 noteheads, total width #1 +% +\def\h@uslur#1#2{\y@v=#1\relax\advance\y@v by -#2\hn@width +\global\setbox\ch@box=\hbox{\slurnorfont\char31}% maximum of one part slurs +\ifdim\wd\ch@box>\y@v + \global\n@iii=0\relax + \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}% + \ifdim\wd\ch@box<\y@v\global\advance\n@iii by 1\relax + \repeat + \hbox to #1{\kern #2\hn@width\hss\slurnorfont\char\n@iii\hss}% +\else + \global\n@iii=79\relax + \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}% + \ifdim 2\wd\ch@box>\y@v\global\advance\n@iii by -1\relax + \repeat + \hbox to #1{\kern #2\hn@width\y@iv=\ht\ch@box\y@iii=-\ht\ch@box + \advance\y@iii by \t@y + \slurnorfont\char\n@iii + \leaders\hrule height \y@iv depth \y@iii\hfill + \advance\n@iii by 16\relax \char\n@iii}% +\fi} +% +% horizontal lower slur offset by #2 noteheads, total width #1 +% +\def\h@dslur#1#2{\y@v=#1\relax\advance\y@v by -#2\hn@width +\global\setbox\ch@box=\hbox{\slurnorfont\char31}% maximum of one part slurs +\ifdim\wd\ch@box>\y@v + \global\n@iii=32\relax + \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}% + \ifdim\wd\ch@box<\y@v\global\advance\n@iii by 1\relax + \repeat + \hbox to #1{\kern #2\hn@width\hss\slurnorfont\char\n@iii\hss}% +\else + \global\n@iii=111\relax + \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}% + \ifdim 2\wd\ch@box>\y@v\global\advance\n@iii by -1\relax + \repeat + \hbox to #1{\kern #2\hn@width\y@iv=\dp\ch@box\y@iii=-\dp\ch@box + \advance\y@iii by \t@y + \slurnorfont\char\n@iii + \leaders\hrule height \y@iii depth \y@iv\hfill + \advance\n@iii by 16\relax \char\n@iii}% +\fi} +% +% sames without offsets +% +\def\hdslur#1{\h@dslur {#1}0} +\def\huslur#1{\h@uslur {#1}0} +% +% noter un debut de tenue +% +\def\ITenu#1{\selecttenue{#1}\I@tenu{70}}% +\def\Ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width +\I@tenu{70}{#2}}}% +\def\Itenu#1{\selecttenue{#1}\I@tenu{66}}% +\def\ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width +\I@tenu{66}{#2}}}% +\def\ITenl#1{\selecttenue{#1}\I@tenl{102}}% +\def\Ilegl#1#2{\selecttenue{#1}\advance\locx@skip by -1.5\qn@width +\I@tenl{102}{#2}\advance\locx@skip by 1.5\qn@width}% +\def\Itenl#1{\selecttenue{#1}\I@tenl{98}}% +\def\ilegl#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width +\I@tenl{98}{#2}}}% +% +\def\I@tenall{\check@tenvoid\global\t@s=1\relax % etat en cours + \global\t@x=\locx@skip + \global\advance\t@x by 0.8\qd@skip + \global\t@y= 0.20\Interligne + \pl@base\global\t@z=\y@i\global\advance\t@z by\altportee + \setbox\ch@box=\hbox{\L@slur}}% +% +\def\I@tenu#1#2{\global\t@p=1\relax % sens=1 + \global\t@w=#1\relax + \inhgetn@i{#2}% + \I@tenall + \global\advance\t@z by \ht\ch@box + \global\advance\t@z by 0.24\Interligne + \global\advance\t@z by -\t@y + \up@tenbox}% +% +\def\I@tenl#1#2{\global\t@p=-1\relax % sens= -1 + \global\t@w=#1\relax + \inhgetn@i{#2}% + \I@tenall + \global\advance\t@z by -\dp\ch@box + \global\advance\t@z by -0.24\Interligne + \up@tenbox}% + +\def\Invertslur#1{\selecttenue{#1}\global\t@p=-\t@p +\ifnum\t@w>63\relax + \ifnum\t@w<96\global\advance\t@w by 32\relax + \else\global\advance\t@w by -32\fi +\fi} + + +% +%\check +% +\def\Tten{\tten}% +\def\Tleg#1{\rlap{\qsk\tleg#1}}% +% +\def\t@ten{\check@tenopen\y@i=\t@z\advance\y@i by -\altportee +\y@ii=\locx@skip\advance\y@ii by -\t@x +\ifnum\t@w=0\relax\else\advance\y@ii by 0.4\qd@skip\fi +\ifnum\t@p>0\relax + \ifnum\t@s=2\relax + \raise\y@i\llap{\ifnum\t@w=0\relax + \up@rleg\else + \Up@rleg\kern -0.2\qd@skip\fi}% + \else + \raise\y@i\llap{\ifnum\t@w=0\relax + \up@leg\else + \Up@leg\kern -0.2\qd@skip\fi}% + \fi +\else + \ifnum\t@s=2\relax + \raise\y@i\llap{\ifnum\t@w=0\relax + \lo@rleg\else + \Lo@rleg\kern -0.2\qd@skip\fi}% + \else + \raise\y@i\llap{\ifnum\t@w=0\relax + \lo@leg\else + \Lo@leg\kern -0.2\qd@skip\fi}% + \fi +\fi +\global\t@w=0\relax +\global\t@s=0\relax +\@uptenubox}% +% +% +\def\L@slur{\slurnorfont\char\t@w}% +\def\R@slur{\global\advance\t@w by 16\slurnorfont\char\t@w}% +\newdimen\slur@off +\newdimen\slur@maxlen +% +\def\leg@hrule{\leaders\hrule height \t@y\hfill}% +% +% complete slur of length #1 (up and down) +\def\Up@leg{% longueur \y@ii +\hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box + \advance\slur@off by -\t@y + \ifdim \y@ii>2\wd\ch@box + \raise -\slur@off\hbox{\L@slur}\leg@hrule\raise -\slur@off\hbox{\R@slur}% + \else + \raise -\slur@off\hbox{\huslur{\y@ii}}% + \fi}}% +% +\def\Lo@leg{% longueur \y@ii +\hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box + \advance\slur@off by -0.1pt + \ifdim \y@ii>2\wd\ch@box + \raise -\slur@off\hbox{\L@slur}\leg@hrule\raise -\slur@off\hbox{\R@slur}% + \else + \raise -\slur@off\hbox{\hdslur{\y@ii}}% + \fi}}% +% +% slur termination of length #1 (up and down) +\def\Up@rleg{% longueur \y@ii +\hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box % + \advance\slur@off by -\t@y + \ifdim \y@ii>\wd\ch@box\leg@hrule + \else\hss\fi \raise -\slur@off\hbox{\R@slur}}}% +% +\def\Lo@rleg{% longueur \y@ii +\hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box % + \advance\slur@off by -0.1pt + \ifdim \y@ii>\wd\ch@box\leg@hrule + \else\hss\fi \raise -\slur@off\hbox{\R@slur}}}% +% +%\check +% +% slur beginning (left) (up and down) +\def\Up@les{% longueur \y@ii +\hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box + \advance\slur@off by -\t@y + \UpLo@les}}% +% +%\check +% +\def\Lo@les{% longueur \y@ii +\hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box + \advance\slur@off by -0.1pt + \UpLo@les}}% +% +%\check +% +\def\UpLo@les{\raise -\slur@off\hbox{\L@slur}% + \advance\y@ii by -\wd\ch@box + \ifdim \y@ii>\z@\leg@hrule + \else\hss +% \ifdim\y@ii<-.8\p@ \vrule height 1cm\fi + \fi}% +%\check +% +\def\c@ten{%\rlap{\vrule height 1cm} + \y@ii=\x@skip\advance\y@ii by -\t@x + \global\t@x=-.8\p@ %<-- + \ifnum\t@s=1\relax + \ifnum\t@w=0\relax + \ifnum\t@p>0\relax + \raise\t@z\llap{\up@les}\else + \raise\t@z\llap{\lo@les}\fi + \else + \ifnum\t@p>0\relax + \raise\t@z\llap{\Up@les}\else + \raise\t@z\llap{\Lo@les}\fi + \fi + \else + \ifnum\t@s=2\relax + \slur@off=\t@z + \advance\slur@off by \t@y +% \advance\slur@off by 3\p@ + \kern -\y@ii\vrule height \slur@off depth -\t@z width \y@ii + \fi + \fi + \global\t@s=2\relax +}% +% +\def\n@skmb{\nobreak\global\slur@maxlen=\z@ +% compute the maximum length of slurs to be handled + \ten@loop + \setbox\ch@box=\hbox{\ifnum\t@w=0\relax\lu@slur + \else\L@slur\fi}\ifdim\slur@maxlen<\wd\ch@box + \global\slur@maxlen=\wd\ch@box\fi + \global\advance\n@l by 1\relax + \repeat +% compute the maximum excess length of beginning slurs + \global\slur@off=\z@ + \ten@loop + \y@ii=\x@skip\advance\y@ii by \n@skip\advance\y@ii by -\t@x + \advance\y@ii by -\slur@maxlen + % \y@ii is the length that will be given to \c@ten for that slur/tie + % assuming \slur@maxlen left offset... + \ifnum\t@s=1\relax + \setbox\ch@box=\hbox{\ifnum\t@w=0\relax\lu@slur\else\L@slur\fi}% + {\advance\y@ii by -\wd\ch@box + \ifdim\y@ii<\slur@off \global\slur@off=\y@ii\fi}% + \fi + \global\advance\n@l by 1\relax + \repeat + \global\advance\slur@maxlen by \slur@off +% + \nobreak\global\advance\n@skip by -\slur@maxlen}% +\def\skip@b{\hskip \slur@maxlen + \global\advance\x@skip by\slur@maxlen}% % + + % +% +%\check +% +% symboles slurn20 des liaisons et tenues +% +\newcount\t@wi +\newcount\t@wii +\newcount\t@wiii +\newcount\t@wiv +\newcount\t@wv +\newcount\t@wvi +% +\let\wlog=\@plainwlog +% +\def\k@ii{\fontdimen 8\musictwenty} +\def\k@iii{\fontdimen 9\musictwenty} +\def\k@iiii{\fontdimen 10\musictwenty} +\def\k@iiv{\fontdimen 11\musictwenty} +\def\k@iv{\fontdimen 12\musictwenty} +\def\k@ivi{\fontdimen 13\musictwenty} +\def\k@ivii{\fontdimen 14\musictwenty} +\def\k@iviii{\fontdimen 15\musictwenty} +\def\k@iix{\fontdimen 16\musictwenty} +% +\def\internotei{\fontdimen 17\musictwenty} +\def\internoteii{\fontdimen 18\musictwenty} +\def\internoteiii{\fontdimen 19\musictwenty} +\def\internoteiv{\fontdimen 20\musictwenty} +\def\internotev{\fontdimen 21\musictwenty} +\def\internotevi{\fontdimen 22\musictwenty} +\def\internotevii{\fontdimen 23\musictwenty} +\def\internoteviii{\fontdimen 24\musictwenty} +\def\internoteix{\fontdimen 25\musictwenty} +\def\c@height{\fontdimen 26\musictwenty} +% +\def\qn@width{\fontdimen 27\musictwenty} +\def\hn@width{\fontdimen 28\musictwenty} +\def\wn@width{\fontdimen 29\musictwenty} +\def\sb@width{\fontdimen 30\musictwenty} +\def\bv@width{\fontdimen 31\musictwenty} +\def\gr@width{\fontdimen 32\musictwenty} +% +\def\clef@skip{\fontdimen 28\beamtwenty} +\def\nullthick{\fontdimen 29\beamtwenty} +\def\bbbb@xi{\fontdimen 30\beamtwenty} +\def\bbbb@xii{\fontdimen 31\beamtwenty} +\def\bbbb@xiii{\fontdimen 32\beamtwenty} +\def\bbbb@xiv{\fontdimen 33\beamtwenty} +\def\bbbb@xv{\fontdimen 34\beamtwenty} +\def\bbbb@xvi{\fontdimen 35\beamtwenty} +\def\bbbb@xvii{\fontdimen 36\beamtwenty} +\def\bbbb@xviii{\fontdimen 37\beamtwenty} +\def\bbbb@xix{\fontdimen 38\beamtwenty} +\def\bbbb@xx{\fontdimen 39\beamtwenty} +% +\def\bbbbb@xi{\fontdimen 40\beamtwenty} +\def\bbbbb@xii{\fontdimen 41\beamtwenty} +\def\bbbbb@xiii{\fontdimen 42\beamtwenty} +\def\bbbbb@xiv{\fontdimen 43\beamtwenty} +\def\bbbbb@xv{\fontdimen 44\beamtwenty} +\def\bbbbb@xvi{\fontdimen 45\beamtwenty} +\def\bbbbb@xvii{\fontdimen 46\beamtwenty} +\def\bbbbb@xviii{\fontdimen 47\beamtwenty} +\def\bbbbb@xix{\fontdimen 48\beamtwenty} +\def\bbbbb@xx{\fontdimen 49\beamtwenty} + +% this macro sets the new big (piano) braces (due to Andreas Egler) +% !!! Attention !!! +% there is no checking of +% too small or large dimensions +% +\font\musext=musicbra +\newcount\selbrace +\def\mult@portee{\y@ii=\nbportees\interportee + \advance\y@ii by -\Interportee + \advance\y@ii by \nbportees\lthick + \advance\y@ii by -2\lthick +% + \selbrace=\y@ii\relax\select@brace% + \divide\y@ii by 2\raise\y@\llap{% + \raise\y@ii\llap{\musext\char\selbrace% + \kern.5\Interligne}}}% +% +\def\select@brace{\divide\selbrace by 65536% +\advance\selbrace by -40\divide\selbrace by 2}% +% dim to count means 1pt -> 65536 sp +% 40 pt is the length of the smallest brace +% the next brace is 2pt larger + + +\catcode`\>=\catcode@gt +\catcode`\<=\catcode@lt +\catcode`\@=\catcodeat + diff --git a/Master/texmf-dist/tex/generic/musictex/musicper.tex b/Master/texmf-dist/tex/generic/musictex/musicper.tex new file mode 100644 index 00000000000..6d9f41f1754 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicper.tex @@ -0,0 +1,227 @@ +% +% This is Musicper from MusicTeX +\message{Version 5.03 -- March 31st, 1994}% +% + +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 +\edef\catcode@gt{\the\catcode`\>}\catcode`\>=12 +\edef\catcode@lt{\the\catcode`\<}\catcode`\<=12 + +%%%% notes with a doublesharp-head + +\def\x@u{\musicnfont\char"35\hss}% + %\check +\def\xu{\advancetrue\xu@z}% +\def\xup{\advancetrue\xup@z}% +\def\xupp{\advancetrue\xupp@z}% +\def\xuppp{\advancetrue\xuppp@z}% +\def\xu@z#1{\getn@i{#1}\def\n@fon{\xu}\def\n@sym{\x@u}\g@qu}% +\def\xup@z#1{\getn@i{#1}\def\n@fon{\xup}\def\n@sym{\x@up}\g@qu}% +\def\xupp@z#1{\getn@i{#1}\def\n@fon{\xupp}\def\n@sym{\x@upp}\g@qu}% +\def\xuppp@z#1{\getn@i{#1}\def\n@fon{\xuppp}\def\n@sym{\x@uppp}\g@qu}% +\def\xl{\advancetrue\xl@z}% +\def\xlp{\advancetrue\xlp@z}% +\def\xlpp{\advancetrue\xlpp@z}% +\def\xlppp{\advancetrue\xlppp@z}% +\def\xl@z#1{\getn@i{#1}\def\n@fon{\xl}\def\n@sym{\x@u}\g@ql}% +\def\xlp@z#1{\getn@i{#1}\def\n@fon{\xlp}\def\n@sym{\x@up}\g@ql}% +\def\xlpp@z#1{\getn@i{#1}\def\n@fon{\xlpp}\def\n@sym{\x@upp}\g@ql}% +\def\xlppp@z#1{\getn@i{#1}\def\n@fon{\xlppp}\def\n@sym{\x@uppp}\g@ql}% + %\check + % +\def\x@up{\hbox to \qn@width{\x@u\hss}\P@t}% +\def\x@upp{\hbox to \qn@width{\x@u\hss}\PP@t}% +\def\x@uppp{\hbox to \qn@width{\x@u\hss}\PPP@t}% +% +\def\xh#1{\selectpoutre{#1}\xh@}% +\def\xb#1{\selectpoutre{#1}\xb@}% +\def\xh@#1{\getn@i{#1}\def\n@fon{\xh@}\def\n@sym{\x@u}\g@qh@}% % position +\def\xb@#1{\getn@i{#1}\def\n@fon{\xb@}\def\n@sym{\x@u}\g@qb@} % #1 position +% +% x heads without stems +\def\zx#1{\getn@i{#1}\def\n@fon{\zx}\def\n@sym{\x@u}\g@zq} +\def\zxp#1{\getn@i{#1}\def\n@fon{\zxp}\def\n@sym{\x@up}\g@zq} +\def\zxpp#1{\getn@i{#1}\def\n@fon{\zxpp}\def\n@sym{\x@upp}\g@zq} +\def\zxppp#1{\getn@i{#1}\def\n@fon{\zxppp}\def\n@sym{\x@uppp}\g@zq} + % + % croches, doubles croches, triples croches, quadruple croches queue en + % haut et en bas pour percussion x + % +\def\xcu{\advancetrue\mxcu1}\def\xccu{\advancetrue\mxcu2} +\def\xcccu{\advancetrue\mxcu3}\def\xccccu{\advancetrue\mxcu4}% +\def\xcl{\advancetrue\mxcl1}\def\xccl{\advancetrue\mxcl2} +\def\xcccl{\advancetrue\mxcl3}\def\xccccl{\advancetrue\mxcl4}% +% +\def\xclp{\advancetrue\mxclp1}\def\xcup{\advancetrue\mxcup1}% +\def\xclpp{\advancetrue\mxclpp1}\def\xcupp{\advancetrue\mxcupp1}% +\def\xclppp{\advancetrue\mxclppp1}\def\xcuppp{\advancetrue\mxcuppp1}% + % +\def\mxcu#1#2{\getn@i{#2}\def\n@sym{\x@u}% +\edef\n@fon{\noexpand\mxcu #1}\g@cu{#1}} +\def\mxcup#1#2{\getn@i{#2}\def\n@sym{\x@up}% +\edef\n@fon{\noexpand\mxcup #1}\g@cu{#1}} +\def\mxcupp#1#2{\getn@i{#2}\def\n@sym{\x@upp}% +\edef\n@fon{\noexpand\mxcupp #1}\g@cu{#1}} +\def\mxcuppp#1#2{\getn@i{#2}\def\n@sym{\x@uppp}% +\edef\n@fon{\noexpand\mxcupp #1}\g@cu{#1}} + % +\def\mxcl#1#2{\getn@i{#2}\def\n@sym{\x@u}% +\edef\n@fon{\noexpand\mxcl #1}\g@cl{#1}} +\def\mxclp#1#2{\getn@i{#2}\def\n@sym{\x@up}% +\edef\n@fon{\noexpand\mxclp #1}\g@cl{#1}} +\def\mxclpp#1#2{\getn@i{#2}\def\n@sym{\x@upp}% +\edef\n@fon{\noexpand\mxclpp #1}\g@cl{#1}} +\def\mxclppp#1#2{\getn@i{#2}\def\n@sym{\x@uppp}% +\edef\n@fon{\noexpand\mxclppp #1}\g@cl{#1}} + + +%%%% notes with a circled doublesharp-head + +\def\ox@u{\musicnfont\char 38\hss}% + %\check +\def\oxu{\advancetrue\oxu@z}% +\def\oxup{\advancetrue\oxup@z}% +\def\oxupp{\advancetrue\oxupp@z}% +\def\oxuppp{\advancetrue\oxuppp@z}% +\def\oxu@z#1{\getn@i{#1}\def\n@fon{\oxu}\def\n@sym{\ox@u}\g@qu}% +\def\oxup@z#1{\getn@i{#1}\def\n@fon{\oxup}\def\n@sym{\ox@up}\g@qu}% +\def\oxupp@z#1{\getn@i{#1}\def\n@fon{\oxupp}\def\n@sym{\ox@upp}\g@qu}% +\def\oxuppp@z#1{\getn@i{#1}\def\n@fon{\oxuppp}\def\n@sym{\ox@uppp}\g@qu}% +\def\oxl{\advancetrue\oxl@z}% +\def\oxlp{\advancetrue\oxlp@z}% +\def\oxlpp{\advancetrue\oxlpp@z}% +\def\oxlppp{\advancetrue\oxlppp@z}% +\def\oxl@z#1{\getn@i{#1}\def\n@fon{\oxl}\def\n@sym{\ox@u}\g@ql}% +\def\oxlp@z#1{\getn@i{#1}\def\n@fon{\oxlp}\def\n@sym{\ox@up}\g@ql}% +\def\oxlpp@z#1{\getn@i{#1}\def\n@fon{\oxlpp}\def\n@sym{\ox@upp}\g@ql}% +\def\oxlppp@z#1{\getn@i{#1}\def\n@fon{\oxlppp}\def\n@sym{\ox@uppp}\g@ql}% + %\check + % +\def\ox@up{\hbox to \qn@width{\ox@u\hss}\P@t}% +\def\ox@upp{\hbox to \qn@width{\ox@u\hss}\PP@t}% +\def\ox@uppp{\hbox to \qn@width{\ox@u\hss}\PPP@t}% +% +\def\oxh#1{\selectpoutre{#1}\oxh@}% +\def\oxb#1{\selectpoutre{#1}\oxb@}% +\def\oxh@#1{\getn@i{#1}\def\n@fon{\oxh@}\def\n@sym{\ox@u}\g@qh@}% % position +\def\oxb@#1{\getn@i{#1}\def\n@fon{\oxb@}\def\n@sym{\ox@u}\g@qb@} % #1 position +% +% x heads without stems +\def\zox#1{\getn@i{#1}\def\n@fon{\zox}\def\n@sym{\ox@u}\g@zq} +\def\zoxp#1{\getn@i{#1}\def\n@fon{\zoxp}\def\n@sym{\ox@up}\g@zq} +\def\zoxpp#1{\getn@i{#1}\def\n@fon{\zoxpp}\def\n@sym{\ox@upp}\g@zq} +\def\zoxppp#1{\getn@i{#1}\def\n@fon{\zoxppp}\def\n@sym{\ox@uppp}\g@zq} + % + % croches, doubles croches, triples croches, quadruple croches queue en + % haut et en bas pour percussion x + % +\def\oxcu{\advancetrue\moxcu1}\def\oxccu{\advancetrue\moxcu2} +\def\oxcccu{\advancetrue\moxcu3}\def\oxccccu{\advancetrue\moxcu4}% +\def\oxcl{\advancetrue\moxcl1}\def\oxccl{\advancetrue\moxcl2} +\def\oxcccl{\advancetrue\moxcl3}\def\oxccccl{\advancetrue\moxcl4}% +% +\def\oxclp{\advancetrue\moxclp1}\def\oxcup{\advancetrue\moxcup1}% +\def\oxclpp{\advancetrue\moxclpp1}\def\oxcupp{\advancetrue\moxcupp1}% +\def\oxclppp{\advancetrue\moxclppp1}\def\oxcuppp{\advancetrue\moxcuppp1}% + % +\def\moxcu#1#2{\getn@i{#2}\def\n@sym{\ox@u}% +\edef\n@fon{\noexpand\moxcu #1}\g@cu{#1}} +\def\moxcup#1#2{\getn@i{#2}\def\n@sym{\ox@up}% +\edef\n@fon{\noexpand\moxcup #1}\g@cu{#1}} +\def\moxcupp#1#2{\getn@i{#2}\def\n@sym{\ox@upp}% +\edef\n@fon{\noexpand\moxcupp #1}\g@cu{#1}} +\def\moxcuppp#1#2{\getn@i{#2}\def\n@sym{\ox@uppp}% +\edef\n@fon{\noexpand\moxcupp #1}\g@cu{#1}} + % +\def\moxcl#1#2{\getn@i{#2}\def\n@sym{\ox@u}% +\edef\n@fon{\noexpand\moxcl #1}\g@cl{#1}} +\def\moxclp#1#2{\getn@i{#2}\def\n@sym{\ox@up}% +\edef\n@fon{\noexpand\moxclp #1}\g@cl{#1}} +\def\moxclpp#1#2{\getn@i{#2}\def\n@sym{\ox@upp}% +\edef\n@fon{\noexpand\moxclpp #1}\g@cl{#1}} +\def\moxclppp#1#2{\getn@i{#2}\def\n@sym{\ox@uppp}% +\edef\n@fon{\noexpand\moxclppp #1}\g@cl{#1}} + +%%%% notes with a + head, for bongos ... + +\def\k@u{\musicnfont\char 39\hss}% + %\check +\def\ku{\advancetrue\ku@z}% +\def\kup{\advancetrue\kup@z}% +\def\kupp{\advancetrue\kupp@z}% +\def\kuppp{\advancetrue\kuppp@z}% +\def\ku@z#1{\getn@i{#1}\def\n@fon{\ku}\def\n@sym{\k@u}\g@qu}% +\def\kup@z#1{\getn@i{#1}\def\n@fon{\kup}\def\n@sym{\k@up}\g@qu}% +\def\kupp@z#1{\getn@i{#1}\def\n@fon{\kupp}\def\n@sym{\k@upp}\g@qu}% +\def\kuppp@z#1{\getn@i{#1}\def\n@fon{\kuppp}\def\n@sym{\k@uppp}\g@qu}% +\def\kl{\advancetrue\kl@z}% +\def\klp{\advancetrue\klp@z}% +\def\klpp{\advancetrue\klpp@z}% +\def\klppp{\advancetrue\klppp@z}% +\def\kl@z#1{\getn@i{#1}\def\n@fon{\kl}\def\n@sym{\k@u}\g@ql}% +\def\klp@z#1{\getn@i{#1}\def\n@fon{\klp}\def\n@sym{\k@up}\g@ql}% +\def\klpp@z#1{\getn@i{#1}\def\n@fon{\klpp}\def\n@sym{\k@upp}\g@ql}% +\def\klppp@z#1{\getn@i{#1}\def\n@fon{\klppp}\def\n@sym{\k@uppp}\g@ql}% + %\check + % +\def\k@up{\hbox to \qn@width{\k@u\hss}\P@t}% +\def\k@upp{\hbox to \qn@width{\k@u\hss}\PP@t}% +\def\k@uppp{\hbox to \qn@width{\k@u\hss}\PPP@t}% +% +\def\kh#1{\selectpoutre{#1}\kh@}% +\def\kb#1{\selectpoutre{#1}\kb@}% +\def\kh@#1{\getn@i{#1}\def\n@fon{\kh@}\def\n@sym{\k@u}\g@qh@}% % position +\def\kb@#1{\getn@i{#1}\def\n@fon{\kb@}\def\n@sym{\k@u}\g@qb@} % #1 position +% +% x heads without stems +\def\zk#1{\getn@i{#1}\def\n@fon{\zk}\def\n@sym{\k@u}\g@zq} +\def\zkp#1{\getn@i{#1}\def\n@fon{\zkp}\def\n@sym{\k@up}\g@zq} +\def\zkpp#1{\getn@i{#1}\def\n@fon{\zkpp}\def\n@sym{\k@upp}\g@zq} +\def\zkppp#1{\getn@i{#1}\def\n@fon{\zkppp}\def\n@sym{\k@uppp}\g@zq} + % + % croches, doubles croches, triples croches, quadruple croches queue en + % haut et en bas pour percussion x + % +\def\kcu{\advancetrue\mkcu1}\def\kccu{\advancetrue\mkcu2} +\def\kcccu{\advancetrue\mkcu3}\def\kccccu{\advancetrue\mkcu4}% +\def\kcl{\advancetrue\mkcl1}\def\kccl{\advancetrue\mkcl2} +\def\kcccl{\advancetrue\mkcl3}\def\kccccl{\advancetrue\mkcl4}% +% +\def\kclp{\advancetrue\mkclp1}\def\kcup{\advancetrue\mkcup1}% +\def\kclpp{\advancetrue\mkclpp1}\def\kcupp{\advancetrue\mkcupp1}% +\def\kclppp{\advancetrue\mkclppp1}\def\kcuppp{\advancetrue\mkcuppp1}% + % +\def\mkcu#1#2{\getn@i{#2}\def\n@sym{\k@u}% +\edef\n@fon{\noexpand\mkcu #1}\g@cu{#1}} +\def\mkcup#1#2{\getn@i{#2}\def\n@sym{\k@up}% +\edef\n@fon{\noexpand\mkcup #1}\g@cu{#1}} +\def\mkcupp#1#2{\getn@i{#2}\def\n@sym{\k@upp}% +\edef\n@fon{\noexpand\mkcupp #1}\g@cu{#1}} +\def\mkcuppp#1#2{\getn@i{#2}\def\n@sym{\k@uppp}% +\edef\n@fon{\noexpand\mkcupp #1}\g@cu{#1}} + % +\def\mkcl#1#2{\getn@i{#2}\def\n@sym{\k@u}% +\edef\n@fon{\noexpand\mkcl #1}\g@cl{#1}} +\def\mkclp#1#2{\getn@i{#2}\def\n@sym{\k@up}% +\edef\n@fon{\noexpand\mkclp #1}\g@cl{#1}} +\def\mkclpp#1#2{\getn@i{#2}\def\n@sym{\k@upp}% +\edef\n@fon{\noexpand\mkclpp #1}\g@cl{#1}} +\def\mkclppp#1#2{\getn@i{#2}\def\n@sym{\k@uppp}% +\edef\n@fon{\noexpand\mkclppp #1}\g@cl{#1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% special percussion symbols moved from musicnft.sty + +\def\shaker#1{\charnote{#1}{\s@haker}}% +\def\zshaker#1{\zcharnote{#1}{\s@haker}}% +\def\tremolord#1{\charnote{#1}{\t@remolord}}% +\def\ztremolord#1{\zcharnote{#1}{\t@remolord}}% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\catcode`\>=\catcode@gt +\catcode`\<=\catcode@lt +\catcode`\@=\catcodeat + + diff --git a/Master/texmf-dist/tex/generic/musictex/musicpln.tex b/Master/texmf-dist/tex/generic/musictex/musicpln.tex new file mode 100644 index 00000000000..5db818627d3 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicpln.tex @@ -0,0 +1,298 @@ +% version 5.00 October 1992 updated jan 94 +\ifx\fonthdg\undefined\def\fonthdg{c}\fi % prefix to cmxxx fonts. +\ifx\fonthdge\undefined\def\fonthdge{m}\fi % prefix to cmxxx fonts. + % change to "d" for dmxxx fonts +\font\cmmi=cmmi10 scaled \magstep1 +\font\cmbx=\fonthdg\fonthdge bx10 scaled \magstep1 +\font\smcmbx=\fonthdg\fonthdge bx10 +\font\cmex=cmex10 +\font\cmsy=cmsy10 scaled \magstep1 +\font\smcmsy=cmsy10 +\font\cmr=\fonthdg\fonthdge r10 scaled \magstep1 +\font\smcmr=\fonthdg\fonthdge r10 +\font\ttyeight=\fonthdg\fonthdge tt8 +\font\linew=linew10 +\font\circlew=circlew1 +% +\catcode`\@=11\relax +\def\q@u{\kern -0.70pt\cmsy\char"0F\kern 0.7pt}\def\qu@raise{-2.1pt}% +\def\h@a{\kern-0.3pt\cmr\char"6F}\def\ha@raise{-2.1pt}% +\def\w@h{\cmbx\char"6F}\def\wh@raise{-2.1pt}% +%\check +% petites notes +\def\smq@u{\kern-0.70pt\smcmsy\char"0F\kern 0.7pt}% +\def\smh@a{\kern-0.3pt\smcmr\char"6F}% +\def\smw@h{\smcmbx\char"6F}% +% +\newbox\ch@box +\newdimen\lthick +\global\lthick=0.4pt\relax +\newdimen\qn@width +\newdimen\hn@width +\newdimen\wn@width +\newdimen\qd@skip +\newdimen\hd@skip +\newdimen\wd@skip +\newcount\musicsize +\def\computespecifics{\ifnum\musicsize=0\relax\musicsize=20\relax\fi +\Interligne=\musicsize pt\divide\Interligne by 4\relax +\def\ppff{\ppffsixteen}% +\ifnum\musicsize=20\relax\def\meterfont{\moyen}\else\def\meterfont{\cmbx}% +\def\ppff{\ppfftwenty}\fi% +\interbeam=0.75\Interligne +\wn@width=6pt\relax +\hn@width=4.8pt\relax +\qn@width=4.5pt \relax +\qd@skip=\qn@width\relax\advance\qd@skip by -\lthick\relax +\hd@skip=\hn@width\relax\advance\qd@skip by -\lthick\relax +\wd@skip=\wn@width\relax\advance\wd@skip by -\lthick\relax +\setbox\ch@box=\hbox{\c@rochu}\relax\c@height=\ht\ch@box\relax +}% +% +\def\s@oupir{\hbox{\kern 3pt\raise 5pt\hbox{\linew\char"42}\relax +\kern -4pt\raise 12.5pt\hbox{\cmex\char"7C}\relax +\kern 0.5pt\raise 14pt\hbox{\circlew\char"72}}}% +\def\c@rochu{{\ttyeight\char"5C}}% +\def\c@rochl{{\ttyeight\char"2F}}% +\newdimen\c@height % hauteur d'un crochet de croche +%\check +\def\d@cr#1{% % queue de #1 croche(s) vers le haut +\global\advance\st@top by #1\Interligne\relax +\global\advance\st@top by -\st@bot\global\advance\st@top by 2.5\Interligne\relax + \ifdim\st@top>1pt\relax + \global\advance\st@bot by -\altportee\relax + \raise\st@bot\rlap{\kern\stem@skip\vrule height\st@top width \lthick + \advance\st@top by -\c@height\relax + \ifnum #1>0\relax\raise\st@top\rlap{\c@rochu}\fi + \ifnum #1>1\relax\global\advance\st@top by -\Interligne\raise\st@top +\rlap{\c@rochu}\fi + \ifnum #1>2\relax\global\advance\st@top by -\Interligne\raise\st@top +\rlap{\c@rochu}\fi + \ifnum #1>3\relax\global\advance\st@top by -\Interligne\raise\st@top +\rlap{\c@rochu}\fi + }\fi + \resetstem}% +%\check +\def\p@cr#1{% % queue de #1 croche(s) vers le bas +\global\advance\st@top by #1\Interligne\relax +\global\advance\st@top by -\st@bot\global\advance\st@top by 2.5\Interligne\relax +\global\advance\st@bot by -#1\Interligne\relax + \global\advance\st@bot by -2.5\Interligne\relax + \ifdim\st@top>1pt\relax + \global\advance\st@bot by -\altportee\relax + \raise\st@bot\llap{\relax + \ifnum #1>0\relax\rlap{\c@rochl}\fi + \ifnum #1>1\relax\raise\Interligne\rlap{\c@rochl}\fi + \ifnum #1>2\relax\raise 2\Interligne\rlap{\c@rochl}\fi + \ifnum #1>3\relax\raise 3\Interligne\rlap{\c@rochl}\fi + \vrule height\st@top width \lthick + \kern -\lthick}\fi + \resetstem}% +%\check +\def\s@harp{\cmmi\char"5D}\def\sh@raise{-2.5pt}% +\def\f@lat{\cmmi\char"5B}\def\fl@raise{-2.5pt}% +\def\n@at{{\cmmi\char"5C}}\def\na@raise{-2.5pt}% +\def\balkuu{\char"20}\def\balkuuu{\char"21}\def\balkuuuu{\char"22}% +\def\balku{\char"28}% +\def\balkdd{\char"60}\def\balkddd{\char"61}\def\balkdddd{\char"62}% +\def\balkd{\char"68}% +\def\ds@harp{\cmbx\char"78\kern -0.4pt}\def\df@lat{\cmmi\char"5B\hskip + -1.5pt\char"5B\kern -0.8pt}% +%\check +\def\s@lopdefs{\q@antum=10pt\relax\def\s@lope{0.0}% +\ifnum \b@p>1\relax\def\s@lope{0.15}\fi +\ifnum \b@p>3\relax\def\s@lope{0.20}\fi +\ifnum \b@p>5\relax\def\s@lope{0.40}\fi +\ifnum \b@p>7\relax\def\s@lope{0.60}\fi +\ifnum \b@p<-1\relax\def\s@lope{-0.15}\fi +\ifnum \b@p<-3\relax\def\s@lope{-0.20}\fi +\ifnum \b@p<-5\relax\def\s@lope{-0.40}\fi +\ifnum \b@p<-7\relax\def\s@lope{-0.60}\fi +}% +\def\b@alkdefs{\q@antum=10pt\relax +\ifnum \b@p>1\relax\def\b@alk{\balku}\fi +\ifnum \b@p>3\relax\def\b@alk{\balkuu}\fi +\ifnum \b@p>5\relax\def\b@alk{\balkuuu}\fi +\ifnum \b@p>7\relax\def\b@alk{\balkuuuu}\fi +\ifnum \b@p<-1\relax\def\b@alk{\balkd}\fi +\ifnum \b@p<-3\relax\def\b@alk{\balkdd}\fi +\ifnum \b@p<-5\relax\def\b@alk{\balkddd}\fi +\ifnum \b@p<-7\relax\def\b@alk{\balkdddd}\fi +}% +%\check +\def\p@outre{% \y@ii : longueur, \b@p : pente, \y@i : altitude +\ifnum \b@p=0\relax\raise \y@i\hbox{\vrule height 0.5\internote depth + 0.5\internote width \y@ii}\relax +\else \b@alkdefs\linew + \global\y@iv=0pt + \loop\ifdim\y@iv<\y@ii\relax + {\y@v=\y@ii\relax\advance\y@v by -\y@iv\relax\advance\y@v by -\q@antum\relax + \y@iii=\y@i\relax\advance\y@iii by \s@lope\y@iv\relax\advance\y@iii by + -0.5\internote + \ifnum \b@p<0\relax\advance\y@iii by \s@lope\q@antum\relax\fi + \ifdim\y@v<0pt\relax\advance\y@iii by \s@lope\y@v\relax\hskip\y@v\fi + \raise\y@iii\hbox to \z@ {\b@alk\hss}\advance\y@iii by 0.2\internote\relax + \raise\y@iii\hbox to \z@ {\b@alk\hss}\advance\y@iii by 0.2\internote\relax + \raise\y@iii\hbox to \z@ {\b@alk\hss}\advance\y@iii by 0.2\internote\relax + \raise\y@iii\hbox to \q@antum{\b@alk\hss}\global\advance\y@iv by \q@antum\relax + }\repeat +\fi +}% +%\check +\def\clefdefa{\hbox{\kern 1.5pt\circlew\raise 4\Interligne +\rlap{\char7\char4\kern -6.8pt\char4}\relax +\raise 3.1\Interligne\rlap{\kern 1.7pt\char"73}% +\raise 2.5\Interligne\rlap{\kern 9pt\vrule height\Interligne width 1.6pt}% +\kern 8.3pt\raise\Interligne +\rlap{\char 13\kern -15.2pt\char13}\kern 1.5pt\raise 2.5\Interligne +\hbox{\moyen :}}}% +%\check +\def\clefdesolsymbol{\hbox{\circlew\kern 1pt \raise 11pt\rlap{\kern 4pt\char7\char8}% +\raise10pt\rlap{\kern 4pt\char7\char8}% +\raise 5pt\rlap{\kern -1pt\tenbf\char'050}% +\raise \z@ \rlap{\kern \z@ \char 10\char9}% +\raise -3pt\rlap{\kern 3.5pt\char"73}% +\raise 9.5pt\rlap{\kern 1.20pt\linew\char"13}% +\raise 12pt\rlap{\kern 1.55pt\linew\char"13}% +\raise 3\Interligne\rlap{\linew\kern 4pt\char"45}% +\raise \z@\rlap{\kern 7pt\linew\char"45}\raise 2\Interligne\rlap{\linew\kern + 5pt\char"45}% +\raise -5pt\rlap{\kern 8pt\char 5}% +\raise 27.5pt\rlap{\kern 3.8pt\char3\char0}% +\raise 26.5pt\rlap{\kern 4pt\char3\char0}% +\raise 22.2pt\rlap{\kern 6.4pt\eightbf\char'051}% +\raise 21pt\rlap{\kern 6.4pt\eightbf\char'051}\relax +\kern 12pt}}% +%\check + \def\clefdutsymbol{\hbox{\kern2pt\vrule width 3pt height +4\Interligne\kern1pt\vrule height 4\Interligne + \def\rempl{\hbox{\vrule width 1pt height 3pt}}% +\kern 6pt\vbox to 4\Interligne{\offinterlineskip\rempl\hbox{\circlew +\char"09}\kern -2\Interligne +\hbox{\circlew\char"08}\rempl}}}% +% +\def\smallclefdut{\clefdutsymbol}% +\def\smallclefdefa{\clefdefasymbol}% +\def\smallclefdesol{\clefdesolsymbol}% +%\check +\def\allabreve{\meterfrac{2}{2}}% +%\check +\def\arp@elem{\vbox to 6pt{\vss\cmsy\char"6F}}% +\def\Arp@elem{\arp@elem}% +\def\d@soup{\raise\Interligne\hbox{\linew +\kern 0.8\Interligne\char2\kern -\Interligne\raise 1.8\Interligne +\hbox{\circlew\char"72}\kern -3pt\raise 7.5pt\hbox{\cmex +\char"7D}}} +\def\q@soup{\rlap{\d@soup}\kern 1pt\raise 4pt\hbox{\d@soup}}% +\def\p@orgue{\hbox{\kern 0.5\qn@width\circlew\char"72\kern -10pt\raise + 6pt\rlap{\char11\char8}\raise + 7pt\hbox{\char11\char8}}}% +\def\p@urgue{\hbox{\kern 0.5\qn@width\circlew\char"72\kern -10pt% +\raise-6pt\rlap{\char10\char9}\raise-7pt\hbox{\char10\char9}}}% +% +\def\t@ilde{{\cmex\char"65}}% +\def\trille#1{\hbox to #1{\leaders\hbox{\t@ilde\kern -0.8pt}\hfill}}% +\def\Trille#1{\hbox to #1{\raise 1.2\Interligne\hbox{\it tr}\leaders +\hbox{\t@ilde\kern -0.8pt}\hfill}}% +% +\def\st#1{\zcharnote{#1}{\raise -2pt \rlap{\tt -}}}% +\def\ppz#1{\zcharnote{#1}{\raise 2pt \rlap{\tt \char13}}}% +\def\pz#1{\zcharnote{#1}{\tenbf\kern 1.5pt .}}% +\def\sforz#1{\zcharnote{#1}{\cmmi\char"3E}}% +% +% arpeges +% +\def\arpegesym#1{\hbox to \Interligne{\kern -1.2\Interligne\vbox to + #1{\parindent=\z@ +\offinterlineskip% \ifdim #1>4\Interligne\Arp@elem\fi\hrule +\cleaders\arp@elem\vfill\kern -\interligne}\hss}}% +% +\def\sh#1{\getn@i{#1}\global\n@raise=\sh@raise + \pl@llap{\s@harp\ifdim\small@test\relax\else\kern -0.20\Interligne\fi}% +}% +\def\na#1{\getn@i{#1}\global\n@raise=\na@raise + \pl@llap{\n@at\ifdim\small@test\relax\else\kern -0.20\Interligne\fi}% +}% +\def\fl#1{\getn@i{#1}\global\n@raise=\fl@raise + \pl@llap{\f@lat\ifdim\small@test\relax\else\kern -0.20\Interligne\fi}% +}% +\def\dsh#1{\getn@i{#1}\global\n@raise=\z@ + \pl@llap{\ds@harp}}% +%\check +\def\dfl#1{\getn@i{#1}\global\n@raise=\fl@raise + \pl@llap{\df@lat}}% +% +% colons for repeat bars (:| |: :||:) +% +% +%\check +\def\w@coli{\selectinstr{\p@loop + \y@i=\altportee \n@portee + \advance\y@i by 1.4\Interligne + \raise\y@i\hbox to \z@{\hss\bf .\hss}% + \advance\y@i by \Interligne + \raise\y@i\hbox to \z@{\hss\bf .\hss}\repeat}} +% +\def\type@songsymbols{} +% +\def\ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width +\i@tenu{#2}}}% +\def\ilegl#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width +\i@tenl{#2}}}% +\def\t@ten{\y@i=\t@z\advance\y@i by -\altportee +\y@ii=\locx@skip\advance\y@ii by -\t@x +\ifnum\t@p>0\relax + \ifnum\t@s=2\relax + \raise\y@i\llap{\up@rleg}% + \else + \raise\y@i\llap{\up@leg}% + \fi +\else + \ifnum\t@s=2\relax + \raise\y@i\llap{\lo@rleg}% + \else + \raise\y@i\llap{\lo@leg}% + \fi +\fi +\global\t@s=0\relax\@uptenubox}% +% +\def\c@ten{\y@ii=\x@skip\advance\y@ii by -\t@x +\ifnum\t@s=1\relax + \ifnum\t@p>0\relax + \raise\t@z\llap{\up@les}\else + \raise\t@z\llap{\lo@les}\fi +\else\ifnum\t@s=2\relax + \global\t@x=\t@z + \global\advance\t@x by \t@y + \kern -\y@ii\vrule height \t@x depth -\t@z width \y@ii + \fi +\fi +\global\t@x=-.8pt%<-- +\global\t@s=2\relax}% +% +\newdimen\k@ii +\newdimen\k@iii +\newdimen\k@iiii +\newdimen\k@iiv +\newdimen\k@iv +\newdimen\k@ivi +\newdimen\k@ivii +\newdimen\k@iviii +\newdimen\k@iix + +% +% positions x et z de debut des tenues +\newdimen\t@xi\newdimen\t@zi +\newdimen\t@xii\newdimen\t@zii +\newdimen\t@xiii\newdimen\t@ziii +\newdimen\t@xiv\newdimen\t@ziv +\newdimen\t@xv\newdimen\t@zv +\newdimen\t@xvi\newdimen\t@zvi +\newdimen\t@xvii\newdimen\t@zvii +\newdimen\t@xviii\newdimen\t@zviii +\newdimen\t@xix\newdimen\t@zix +\newdimen\t@xx\newdimen\t@zx +% +\newdimen\nullthick % pour les parties sans portees (paroles) +\newdimen\clef@skip + diff --git a/Master/texmf-dist/tex/generic/musictex/musicpos.tex b/Master/texmf-dist/tex/generic/musictex/musicpos.tex new file mode 100644 index 00000000000..dd666c5a309 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicpos.tex @@ -0,0 +1,43 @@ +% musicpos.tex Version 4.99 decembre 1993 N. Brouard+D. Taupin + +\newenvironment{music}{\catcodesmusic\parskip \z@\resetfacteurs +\def\large{\normal\elemskip=2.4\Interligne}\relax +\global\linesinpage=0\relax}{} +% +\newdimen\largevaugment +\newdimen\largehaugment +% +\newenvironment{largemusic}{\vfill\eject\catcodesmusic\parskip \z@ +\resetfacteurs\def\large{\normal\elemskip=2.4\Interligne}\relax +\global\linesinpage=0\relax +% +\edef\theoldtextwidth{\the\textwidth} +\edef\theoldtextheight{\the\textheight} +% +\def\largetextwidth{185mm} +\def\largetextheight{260mm} +\largevaugment=\largetextheight\relax\advance\largevaugment by -\theoldtextheight +\largehaugment=\largetextwidth\relax\advance\largehaugment by -\theoldtextwidth +\divide\largevaugment by 2\relax +\divide\largehaugment by 2\relax +\advance\voffset by \largevaugment % essai +\advance\hoffset by -\largehaugment +\xdef\thelargehoffset{\the\hoffset} +\hsize\largetextwidth % pour essai +\textwidth \largetextwidth % pour essai +%\check 1 +% +\bgroup +%\advance\voffset by \largevaugment % essai +\textwidth \largetextwidth +%\textheight \largetextheight +% +\hsize\largetextwidth +\vsize\largetextheight}{\egroup +% +\advance\voffset by 0.5\largevaugment % essai +\clearpage +\advance\voffset by -0.5\largevaugment % essai +} +%-% End of musictex.sty + diff --git a/Master/texmf-dist/tex/generic/musictex/musicpre.tex b/Master/texmf-dist/tex/generic/musictex/musicpre.tex new file mode 100644 index 00000000000..b8fe30390f4 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicpre.tex @@ -0,0 +1,64 @@ +%-% Musictex.sty version 4.61 of June, 12 1992 +%-% Updates to version 4.31 November 1991 of plain musictex +%-% Musictex.sty version 0.0 of 5, November 1991 +%-% It is a first attempt to make musictex running by LaTeX +%-% We defined an environment named music to change the catcodes +%-% of the vertical bar and the ampersand for musictex. +%-% We used TeX command instead of LaTeX command inside of music. +%-% It needs a rather big \Tex{}, but emTeX compiler on PCs does the trip +%-% for small music arrays. It works better on work stations. +%-% Nicolas Brouard <brouard@frined51> +%-% With this file you need extra fonts. If extrafonts are +%-% are not available then use \documenstyle[musicpln]{article} +%-% +%-% In both cas you can add the option file bigmusic.sty which +%-% enlarges LaTeX page to a big size (A4). +%-% \documentstyle[musicpln,bigmusic]{article} +%-% +%-% Here is an example: +%-% \documentstyle[musictex]{article} +%-% \begin{document} +%-%\def\nbinstruments{1}\relax +%-%\generalmeter{\meterfrac{4}{4}}\relax +%-%\debutmorceau +%-%\normal +%-%\zglu\Notes\rlap{\hu j}\ql h\enotes +%-%\temps\Notes\hl g\enotes +%-%\temps\Notes\hu k\enotes +%-%\temps\Notes\ql f\enotes +%-%\suspmorceau +%-% \end{music} +%-% +%-% Latex blabla +%-% +%-% \begin{music} +%-%\def\nbinstruments{1}\relax +%-%\generalmeter{\meterfrac{4}{4}}\relax +%-%\debutmorceau +%-%\normal +%-%\zglu\Notes\rlap{\hu j}\ql h\enotes +%-%\temps\Notes\hl g\enotes +%-%\temps\Notes\hu k\enotes +%-%\temps\Notes\ql f\enotes +%-%\suspmorceau +%-% \end{document} +%-% +%-% Building Musictex.sty +%-% +%-% Two files are required to build musictex.sty from +%-% the plain distribution, musicpre.tex and musicpos.\TeX{}. +%-% Then musictex.sty is the concatenation of +%-% of musicpre.tex+musicnft.tex+musictex.tex+musicvbm.tex+musicpos.tex +%-% On unix: +%-% cat musicpre.tex musicnft.tex musictex.tex +%-% ... musicvbm.tex musicpos.tex >musictex.sty +%-% On dos: +%-% copy musicpre.tex+musicnft.tex+musictex.tex+ +%-% ... musicvbm.tex+musicpos.tex musictex.sty +%-% If you don't have the fonts, you should use: +%-% On unix: +%-% cat musicpre.tex musicpln.tex musictex.tex musicpos.tex >musicpln.sty +%-% On dos: +%-% copy musicpre.tex+musicpln.tex+musictex.tex+musicpos.tex musicpln.sty +%-% You also need the option file bigmusic.sty to make wide scores, but real +%-% large scores are advised to be compiled under TeX, not LaTeX. diff --git a/Master/texmf-dist/tex/generic/musictex/musicref.tex b/Master/texmf-dist/tex/generic/musictex/musicref.tex new file mode 100644 index 00000000000..9e99d179389 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicref.tex @@ -0,0 +1,88 @@ +\input musicnft +\input musictex +\input musicsty +\parindent 0mm\nopagenumbers\def\wbarno{}\def\nbinstruments{1} +\def\musictex{Music\TeX}\def\zch{\zcharnote}% +\centerline{\enorme \musictex\ Reference}\bigskip +\centerline{\moyen Pitches}\bigskip +\def\LBNT#1#2{\zch{!g}{#1#2}\wh{!#1#2}}\relax +\def\lbnt#1{\zch g{#1}\wh{#1}}\relax +\def\lbnu#1#2{\zch g{#1}\zch B{\hbox{\kern -3pt '#2}}\wh{#1}}\relax +\cleftoksi={6000}\debutmorceau\autolines{26}{1}{12}\temps\relax +% Pitches +\notes\LBNT `A\LBNT `B\LBNT `C\LBNT `D\LBNT `E\LBNT `F\LBNT `G\enotes\relax +\notes\lbnt A\lbnt B\lbnt C\lbnt D\lbnt E\lbnt F\lbnt G\enotes\relax +\notes\lbnu HA\lbnu IB\lbnu JC\lbnu KD\lbnu LE\lbnu MF\lbnu NG\enotes\relax +\notes\lbnt a\lbnt b\lbnt c\lbnt d\lbnt e\enotes\relax +\def\lbnu#1#2{\zch K{#1}\zch a{\hbox{\kern -3pt '#2}}\wh{#1}}\relax +\def\lbnv#1#2{\zch K{#1}\zch a{\hbox{\kern -4pt ''#2}}\wh{#1}}\relax +\def\lbnw#1#2{\zch K{#1}\zch a{\hbox{\kern -5pt '{'}'#2}}\wh{#1}}\relax +\cleftoksi={0000}\def\lbnt#1{\zch K{#1}\wh{#1}}\alaligne\notes\relax +\lbnt a\lbnt b\lbnt c\lbnt d\lbnt e\lbnt f\lbnt g\relax +\lbnu h a\lbnu i b\lbnu j c\lbnu k d\lbnu l e\lbnu m f\lbnu n g\relax +\lbnv o a\lbnv p b\lbnv q c\lbnv r d\lbnv s e\lbnv t f\lbnv u g\relax +\lbnw v a\lbnw w b\lbnw x c\lbnw y d\lbnw z e\enotes\suspmorceau +% +\bigskip\centerline{\moyen Notes, Accidentals, Accents, and Rests}\bigskip +\def\mcra#1{\zch r{$\backslash$#1}}\relax +\def\mcrx#1#2{\zch r{$\backslash$#1}\zch a{#2}}\relax +% Notes & Accidentals +\debutmorceau\temps\NOtes\relax +\mcrx{zsb}{Accidentals:}\zsb i\sk\mcra{zbv}\zbv i\sk\enotes\Notes\relax +\mcra{wh}\wh i\relax +\mcrx{hu}{\tt>}\hu {>f}\mcra{hl}\hl l\relax +\mcrx{qu}{\tt\^}\qu {^f}\mcra{ql}\ql l\relax +\mcrx{cu}{\tt=}\cu {=f}\mcra{cl}\cl l\enotes\NOtes\relax +\mcrx{ccu}{\tt\_}\ccu {_f}\mcra{ccl}\ccl l\relax +\mcrx{cccu}{\tt<}\cccu {<f}\mcra{cccl}\cccl l\relax +\mcra{ccccu}\ccccu f\mcra{ccccl}\ccccl l\enotes +% Pointed Notes and Accents +\def\mcra#1{\zch o{$\backslash$#1}}\alaligne\Notes\relax +\mcra{pt$\backslash$zbv}\pt j\zbv j\sk\sk\relax +\mcra{whp}\whp i\mcra{hup}\hup h\mcra{qup}\qup g\mcra{cup}\cup f\relax +\sk\mcra{pt$\backslash$ccu}\pt e\ccu e\sk\sk\relax +\mcra{lpz}\lpz g\qu g\mcra{upz}\upz j\ql j\relax +\mcra{lsf}\lsf g\qu g\mcra{usf}\usf j\ql j\relax +\mcra{lst}\lst g\qu g\mcra{ust}\ust j\ql j\relax +\mcra{lppz}\lppz g\qu g\mcra{uppz}\uppz j\ql j\relax +\enotes\suspmorceau +% Rests +\def\mcra#1{\zch u{$\backslash$#1}}\relax% 1 macro +\def\mcrb#1#2{\zch u{$\backslash$#1}% + \zch q{$\backslash$#2}}\relax% 2 alternative macros +\def\mcrc#1#2#3{\zch y{$\backslash$#1}% + \zch u{$\backslash$#2}% + \zch q{$\backslash$#3}}\relax% 3 alternative macros +\debutmorceau\Notes\sk\relax +\mcrb{seizsoupir}{qqs}\qqs\sk\mcrc{huitsoupir}{hsoupir}{hs}\hs\sk\relax +\mcrc{quartsoupir}{qsoupir}{qs}\qs\sk\sk\relax +\mcrc{demisoupir}{dsoupir}{ds}\ds\sk\mcrb{soupir}{qp}\qp\sk\relax +\mcra{hpause}\hpause\sk\mcra{pause}\pause\sk\relax +\mcra{PAuse}\PAuse\sk\mcra{PAUSe}\PAUSe\enotes\suspmorceau +% more Symbols +\bigskip\centerline{\moyen Other Symbols}\bigskip +\def\mcra#1{\zch v{$\backslash$#1}}\relax +\debutmorceau\NOtes\sk\relax +\mcra{nTrille}\nTrille n 2\sk\mcra{ntrille}\ntrille n 2\sk\sk\relax +\mcra{pince}\pince n\sk\mcra{Pince}\Pince n\sk\relax +\mcra{mordant}\mordant n\sk\sk\relax +\mcra{turn}\turn n\sk\mcra{backturn}\backturn n\sk\sk\relax +\mcra{coda}\coda n\sk\mcra{segno}\segno n\sk\enotes\relax +\def\mcra#1{\zch r{$\backslash$#1}}\alaligne\NOtes\sk\relax +\mcra{pointdorgue}\pointdorgue l\wh k\sk\relax +\mcra{pointdurgue}\pointdurgue e\wh f\sk\relax +\mcra{PED}\PED\sk\mcra{DEP}\DEP\sk\relax +\mcra{arpeggio f 1}\arpeggio f 1\sk\sk\relax +\mcra{arpeggio d 4}\arpeggio d 4\sk\sk\relax +\mcra{arpeggio b 7}\arpeggio b 7\sk\enotes\relax +\def\mcra#1{\zch o{$\backslash$#1}}\alaligne\NOtes\sk\sk\relax +\mcra{dimin}\zcharnote b{\dimin}\sk\relax +\mcra{Dimin}\zcharnote b{\Dimin}\sk\sk\relax +\mcra{DImin}\zcharnote b{\DImin}\sk\sk\sk\relax +\mcra{DIMin}\zcharnote b{\DIMin}\sk\sk\sk\mcra{octfin}\octfin r 2\sk\sk\relax +\enotes\alaligne\NOtes\mcra{octline}\octline r\sk\sk\relax +\mcra{cresc}\zcharnote b{\cresc}\sk\relax +\mcra{Cresc}\zcharnote b{\Cresc}\sk\sk\relax +\mcra{CResc}\zcharnote b{\CResc}\sk\sk\sk\relax +\mcra{CREsc}\zcharnote b{\CREsc}\sk\sk\sk\sk\sk\relax +\enotes\suspmorceau\bye diff --git a/Master/texmf-dist/tex/generic/musictex/musicsix.tex b/Master/texmf-dist/tex/generic/musictex/musicsix.tex new file mode 100644 index 00000000000..a61bc298eb4 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicsix.tex @@ -0,0 +1,11 @@ +% This file facilitates compilation of some musixtex features. +% Version 5.13 + +\newtoks\t@c +\def\@fourtoks#1#2#3#4#5+{#1#2#3#4} + +\def\setclef#1#2{\noinstrum@nt#1\relax \s@l@ctclefs \t@c{#2000}% + \cleftoks\expandafter\expandafter\expandafter{\expandafter\@fourtoks\the\t@c+}} + \let\setclefs\setclef + +\endinput diff --git a/Master/texmf-dist/tex/generic/musictex/musicsty.tex b/Master/texmf-dist/tex/generic/musictex/musicsty.tex new file mode 100644 index 00000000000..9149e37d49b --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicsty.tex @@ -0,0 +1,368 @@ +% +% This is Musicsty from MusicTeX +\message{Version 5.14 -- September 20th, 1995}% +% +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 +\edef\catcode@gt{\the\catcode`\>}\catcode`\>=12 +\edef\catcode@lt{\the\catcode`\<}\catcode`\<=12 +\def\makeatletter{\catcode`\@=11} +\def\makeatother{\catcode`\@=12} +% +% non musical procedures used in typesetting the non-musical +% texts together with musictex +% +\def\fontid{\fonthdg\fonthdge} +% +% eight point fonts +% +\font\eightrm=\fontid r8 +\font\eighti=cmmi8 \skewchar\eighti='177 +\font\eightsy=cmsy8 \skewchar\eightsy='60 +\font\eightbf=\fontid bx8 +\font\eightsl=\fontid sl8 +\font\eightit=\fontid ti8 +\font\eighttt=\fontid tt8 +% +% nine point fonts +% +\font\ninerm=\fontid r9 +\font\ninei=cmmi10 scaled 900 \skewchar\ninei='177 +\font\ninesy=cmsy10 scaled 900 \skewchar\ninesy='60 +\font\ninebf=\fontid bx9 +\font\ninesl=\fontid sl9 +\font\nineit=\fontid ti9 +\font\ninett=\fontid tt9 +% +% twelve point fonts +% +\font\twlrm=\fontid r12 +\font\twli=cmmi12 \skewchar\twli='177 +\font\twlsy=cmsy10 scaled \magstep1 \skewchar\twlsy='60 +\font\twlbf=\fontid bx12 +\font\twlsl=\fontid sl12 +\font\twlit=\fontid ti12 +\font\twltt=\fontid tt12 +% +% fourteen point fonts +% +\font\frtrm=\fontid r12 scaled \magstep1 +\font\frti=cmmi12 scaled \magstep1 \skewchar\frti='177 +\font\frtsy=cmsy10 scaled \magstep2 \skewchar\frtsy='60 +\font\frtbf=\fontid bx12 scaled \magstep1 +\font\frtsl=\fontid sl12 scaled \magstep1 +\font\frtit=\fontid ti12 scaled \magstep1 +\font\frttt=\fontid tt12 scaled \magstep1 +% +% seventeen point fonts +% +\font\svtrm=\fontid r17 +\font\svti=cmmi12 scaled \magstep2 \skewchar\svti='177 +\font\svtsy=cmsy10 scaled \magstep3 \skewchar\svtsy='60 +\font\svtbf=\fontid bx12 scaled \magstep2 +\font\svtsl=\fontid sl12 scaled \magstep2 +\font\svtit=\fontid ti12 scaled \magstep2 +\font\svttt=\fontid tt12 scaled \magstep2 +% +% twenty point fonts +% +\font\twtyrm=\fontid r17 scaled \magstep1 +\font\twtyi=cmmi12 scaled \magstep3 \skewchar\twtyi='177 +\font\twtysy=cmsy10 scaled \magstep4\skewchar\twtysy='60 +\font\twtybf=\fontid bx12 scaled \magstep3 +\font\twtysl=\fontid sl12 scaled \magstep3 +\font\twtyit=\fontid ti12 scaled \magstep3 +\font\twtytt=\fontid tt12 scaled \magstep3 +% +% twenty five point fonts +% +\font\twfvrm=\fontid r17 scaled \magstep2 +\font\twfvi=cmmi12 scaled \magstep4 \skewchar\twfvi='177 +\font\twfvsy=cmsy10 scaled \magstep5 \skewchar\twfvsy='60 +\font\twfvbf=\fontid bx12 scaled \magstep4 +\font\twfvsl=\fontid sl12 scaled \magstep4 +\font\twfvit=\fontid ti12 scaled \magstep4 +\font\twfvtt=\fontid tt12 scaled \magstep4 +% +% SEVERAL DIFFERENT POINT SIZES +% +\def\twfvpoint{\Twfvpoint} +\def\Twfvpoint{\normalbaselineskip=30pt +\def\rm{\fam0\twfvrm}% +\def\it{\fam\itfam\twfvit}% +\def\sl{\fam\slfam\twfvsl}% +\def\bf{\fam\bffam\twfvbf}% +\def\smc{\twfvrm}% +\def\mit{\fam 1}% +\def\cal{\fam 2}% +\textfont0=\twfvrm \scriptfont0=\twtyrm \scriptscriptfont0=\svtrm +\textfont1=\twfvi \scriptfont1=\twtyi \scriptscriptfont1=\svti +\textfont2=\twfvsy \scriptfont2=\twtysy \scriptscriptfont2=\svtsy +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\textfont\itfam=\twfvit \scriptfont\itfam=\twtyit +\textfont\slfam=\twfvsl \scriptfont\slfam=\twtysl +\textfont\bffam=\twfvbf \scriptfont\bffam=\twtybf +\scriptscriptfont\bffam=\twtybf +\setbox\strutbox=\hbox{\vrule height 22pt depth 8pt width 0pt}% +\def\tt{\twfvtt}\normalbaselines\rm} +% +\def\twtypoint{\Twtypoint} +\def\Twtypoint{\normalbaselineskip=25pt +\def\rm{\fam0\twtyrm}% +\def\it{\fam\itfam\twtyit}% +\def\sl{\fam\slfam\twtysl}% +\def\bf{\fam\bffam\twtybf}% +\def\smc{\twtyrm}% +\def\mit{\fam 1}% +\def\cal{\fam 2}% +\textfont0=\twtyrm \scriptfont0=\svtrm \scriptscriptfont0=\frtrm +\textfont1=\twtyi \scriptfont1=\svti \scriptscriptfont1=\frti +\textfont2=\twtysy \scriptfont2=\svtsy \scriptscriptfont2=\frtsy +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\textfont\itfam=\twtyit \scriptfont\itfam=\svtit +\textfont\slfam=\twtysl \scriptfont\slfam=\svtsl +\textfont\bffam=\twtybf \scriptfont\bffam=\svtbf +\scriptscriptfont\bffam=\svtbf +\setbox\strutbox=\hbox{\vrule height 18pt depth 7pt width 0pt}% +\def\tt{\twtytt}\normalbaselines\rm} +% +\def\svtpoint{\Svtpoint} +\def\Svtpoint{\normalbaselineskip=21pt +\def\rm{\fam0\svtrm}% +\def\it{\fam\itfam\svtit}% +\def\sl{\fam\slfam\svtsl}% +\def\bf{\fam\bffam\svtbf}% +\def\smc{\svtrm}% +\def\mit{\fam 1}% +\def\cal{\fam 2}% +\textfont0=\svtrm \scriptfont0=\frtrm \scriptscriptfont0=\twlrm +\textfont1=\svti \scriptfont1=\frti \scriptscriptfont1=\twli +\textfont2=\svtsy \scriptfont2=\frtsy \scriptscriptfont2=\twlsy +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\textfont\itfam=\svtit \scriptfont\itfam=\frtit +\textfont\slfam=\svtsl \scriptfont\slfam=\frtsl +\textfont\bffam=\svtbf \scriptfont\bffam=\frtbf +\scriptscriptfont\bffam=\frtbf +\setbox\strutbox=\hbox{\vrule height 14.5pt depth 6.5pt width 0pt}% +\def\tt{\svttt}\normalbaselines\rm} +% +\def\frtpoint{\Frtpoint} +\def\Frtpoint{\normalbaselineskip=17pt +\def\rm{\fam0\frtrm}% +\def\it{\fam\itfam\frtit}% +\def\sl{\fam\slfam\frtsl}% +\def\bf{\fam\bffam\frtbf}% +\def\smc{\frtrm}% +\def\mit{\fam 1}% +\def\cal{\fam 2}% +\textfont0=\frtrm \scriptfont0=\twlrm \scriptscriptfont0=\eightrm +\textfont1=\frti \scriptfont1=\twli \scriptscriptfont1=\eighti +\textfont2=\frtsy \scriptfont2=\twlsy \scriptscriptfont2=\eightsy +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\textfont\itfam=\frtit \scriptfont\itfam=\twlit +\textfont\slfam=\frtsl \scriptfont\slfam=\twlsl +\textfont\bffam=\frtbf \scriptfont\bffam=\twlbf +\scriptscriptfont\bffam=\twlbf +\setbox\strutbox=\hbox{\vrule height 12pt depth 5pt width 0pt}% +\def\tt{\frttt}\normalbaselines\rm} +% +\def\twlpoint{\Twlpoint} +\def\Twlpoint{\normalbaselineskip=14pt +\def\rm{\fam0\twlrm}% +\def\it{\fam\itfam\twlit}% +\def\sl{\fam\slfam\twlsl}% +\def\bf{\fam\bffam\twlbf}% +\def\smc{\twlrm}% +\def\mit{\fam 1}% +\def\cal{\fam 2}% +\textfont0=\twlrm \scriptfont0=\tenrm \scriptscriptfont0=\eightrm +\textfont1=\twli \scriptfont1=\teni \scriptscriptfont1=\eighti +\textfont2=\twlsy \scriptfont2=\tensy \scriptscriptfont2=\eightsy +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\textfont\itfam=\twlit \scriptfont\itfam=\tenit +\textfont\slfam=\twlsl \scriptfont\slfam=\tensl +\textfont\bffam=\twlbf \scriptfont\bffam=\tenbf +\scriptscriptfont\bffam=\tenbf +\setbox\strutbox=\hbox{\vrule height 10pt depth 4pt width 0pt}% +\def\tt{\twltt}\normalbaselines\rm} +% +% +\def\tenpoint{\Tenpoint} +\def\Tenpoint{\normalbaselineskip=12pt +\def\rm{\fam0\tenrm}% +\def\it{\fam\itfam\tenit}% +\def\sl{\fam\slfam\tensl}% +\def\bf{\fam\bffam\tenbf}% +\def\smc{\tenrm}% +\def\mit{\fam 1}% +\def\cal{\fam 2}% +\textfont0=\tenrm \scriptfont0=\eightrm \scriptscriptfont0=\eightrm +\textfont1=\teni \scriptfont1=\eighti \scriptscriptfont1=\eighti +\textfont2=\tensy \scriptfont2=\eightsy \scriptscriptfont2=\eightsy +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\textfont\itfam=\tenit \scriptfont\itfam=\eightit +\textfont\slfam=\tensl \scriptfont\slfam=\eightsl +\textfont\bffam=\tenbf \scriptfont\bffam=\eightbf +\scriptscriptfont\bffam=\eightbf +\setbox\strutbox=\hbox{\vrule height 8.5pt depth 3.5pt width 0pt}% +\def\tt{\tentt}\normalbaselines\rm} +% +\def\eightpoint{\Eightpoint} +\def\Eightpoint{\normalbaselineskip=10pt +\def\rm{\fam0\eightrm}% +\def\it{\fam\itfam\eightit}% +\def\sl{\fam\slfam\eightsl}% +\def\bf{\fam\bffam\eightbf}% +\def\mit{\fam 1}% +\def\cal{\fam 2}% +\textfont0=\eightrm \scriptfont0=\eightrm \scriptscriptfont0=\eightrm +\textfont1=\eighti \scriptfont1=\eighti \scriptscriptfont1=\eighti +\textfont2=\eightsy \scriptfont2=\eightsy \scriptscriptfont2=\eightsy +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\textfont\itfam=\eightit \scriptfont\itfam=\eightit +\textfont\slfam=\eightsl \scriptfont\slfam=\eightsl +\textfont\bffam=\eightbf \scriptfont\bffam=\eightbf +\scriptscriptfont\bffam=\eightbf +\setbox\strutbox=\hbox{\vrule height 7pt depth 3pt width 0pt}% +\def\tt{\eighttt}\normalbaselines\rm} +% +\def\ninepoint{\Ninepoint} +\def\Ninepoint{\normalbaselineskip=10pt +\def\rm{\fam0\ninerm}% +\def\it{\fam\itfam\nineit}% +\def\sl{\fam\slfam\ninesl}% +\def\bf{\fam\bffam\ninebf}% +\def\mit{\fam 1}% +\def\cal{\fam 2}% +\textfont0=\ninerm \scriptfont0=\ninerm \scriptscriptfont0=\ninerm +\textfont1=\ninei \scriptfont1=\ninei \scriptscriptfont1=\ninei +\textfont2=\ninesy \scriptfont2=\ninesy \scriptscriptfont2=\ninesy +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\textfont\itfam=\nineit \scriptfont\itfam=\nineit +\textfont\slfam=\ninesl \scriptfont\slfam=\ninesl +\textfont\bffam=\ninebf \scriptfont\bffam=\ninebf +\scriptscriptfont\bffam=\ninebf +\setbox\strutbox=\hbox{\vrule height 7pt depth 3pt width 0pt}% +\def\tt{\ninett}\normalbaselines\rm} +% +% GENERAL FOOTNOTES +% +\newcount\footmarkcount +\footmarkcount=0\relax +\def\resetfootnote{\global\footmarkcount=0\relax} +% +\def\footmarknumber{\raise 0.8ex\hbox{\eightpoint\rm\the\footmarkcount}} +% +\def\Footnote#1{\global\advance\footmarkcount by 1\relax +\footnote{\footmarknumber}{#1}}% +%\check +% \TeX book footnote +% +% En cas de panique: couper en deux (une seule note autorisee) +% +\def\markfootnote{{\advance\footmarkcount by 1\relax\footmarknumber}} +% +\def\realfootnote#1{\global\advance\footmarkcount by 1\relax +\vfootnote{{\footmarknumber}#1}}% +% +\def\footnotehsize{}% to enable inserting different \hsize (two columns case) +\def\vfootnote#1{\insert\footins\bgroup\parskip \z@\eightpoint + \interlinepenalty=\interfootnotelinepenalty + \splittopskip=\ht\strutbox \advance\splittopskip by 1pt + \splitmaxdepth=\dp\strutbox \floatingpenalty=20000 + \leftskip=\z@ \rightskip=\z@ + \spaceskip \z@ \xspaceskip \z@ + \eightpoint\footnotehsize\noindent{#1}\footstrut\futurelet\next\fo@t} +% +%\check +% +\def\footnoterule{\vskip-3pt + \hrule width 2truein \vskip 2.6pt } % the \hrule is .4pt high +% +% +\def\aujourdhui{\space\number\day\space\ifcase\month\or +janvier\or f\'evrier\or mars\or avril\or +mai\or juin\or juillet\or ao\^ut\or septembre\or +octobre\or novembre\or d\'ecembre\fi +\space\number\year} +\def\today{\space\ifcase\month\or +January\or February\or March\or April\or +May\or June\or July\or August\or September\or +October\or November\or December\fi +\space\number\day,\space\number\year} +\def\boxit#1{\vbox{\hrule\hbox{\vrule\kern3pt + \vbox{\kern3pt#1\kern3pt}\kern3pt\vrule}\hrule}} +\def\cenboxit#1{\centerline{\hbox{\boxit{#1}}}} +\def\Item{\medskip\item} +% +\def\nologo{} +% +\def\umero{\raise 0.8ex\hbox{\kern-0.05em\the\scriptfont\fam o}} + +\let\titremorceau\empty +\def\shorttitle#1{\def\titremorceau{#1}} +\def\title{\shorttitle} +\def\subtitle#1{\def\subt@itremorceau{#1}} +\let\headt@itremorceau\undefined +\def\headtitle#1{\def\headt@itremorceau{#1}} +\def\fulltitle{\headtitle} +\let\othert@itremorceau\empty +\def\othermention#1{\def\othert@itremorceau{#1}} + +\let\s@hortauthor\empty +\def\shortauthor#1{\def\s@hortauthor{#1}} + +\def\fullauthor#1{\def\f@ullauthor{#1}} +\def\author{\fullauthor} + +\newif\ifcopyright + +\def\outmorceau{\shipout\vbox to 270mm{\tenpoint\vss\pagecontents\vss\line{% +\ifodd\pageno\sl \titremorceau\ \ifx\s@hortauthor\empty + \else(\s@hortauthor) + \fi +\ifcopyright +\rm$\copyright$\fi \hss +\number\pageno +\else\rm\number\pageno\hss\sl \titremorceau\ + \ifx\s@hortauthor\empty + \else(\s@hortauthor) + \fi +\ifcopyright\rm$\copyright$\fi\fi}}% + \global\advance\count0 by 1\relax + \ifnum\outputpenalty>-20000 \else\dosupereject\fi}% + +\output{\outmorceau} + +\def\maketitle{\centerline{\enorme \ifx\headt@itremorceau\undefined + \titremorceau\else\headt@itremorceau\fi} +\medskip +\ifx\subt@itremorceau\undefined\else + \centerline{\tenpoint\sl \subt@itremorceau} +\medskip +\fi + + +\hbox to \hsize{\tenpoint + \vtop{\def\\{\hss\egroup\hbox to 0.5\hsize\bgroup\relax}\relax + \hbox to 0.5\hsize + \bgroup\othert@itremorceau\hss + \egroup + }\hss + \vtop{\def\\{\egroup\hbox to 0.5\hsize\bgroup\relax\hss}\relax + \hbox to 0.5\hsize + \bgroup\hss\f@ullauthor + \egroup + }} +\bigskip +} + +\catcode`\>=\catcode@gt +\catcode`\<=\catcode@lt +\catcode`\@=\catcodeat + +\hsize=185mm +\vsize=264mm +\hoffset=-1.79cm +\voffset=-1.54cm + +\endinput diff --git a/Master/texmf-dist/tex/generic/musictex/musictex.tex b/Master/texmf-dist/tex/generic/musictex/musictex.tex new file mode 100644 index 00000000000..d384e72438a --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musictex.tex @@ -0,0 +1,2440 @@ +% + % THIS is MusicTeX +\def\mcversion{5.18} +\message{Version \mcversion\space -- August 26th, 1996}% + +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 + +\newif\ifcatcodesmusic + +\def\catcodesmusic{\ifcatcodesmusic\relax + \else + \edef\catcode@gt{\the\catcode`\>}\catcode`\>=12% + \edef\catcode@lt{\the\catcode`\<}\catcode`\<=12% + \edef\catcode@vert{\the\catcode`\|}\catcode`\|=13% + \edef\catcode@and{\the\catcode`\&}\catcode`\&=13% + \edef\catcode@excl{\the\catcode`\!}\catcode`\!=12% + \edef\catcode@star{\the\catcode`\*}\catcode`\*=12% + \edef\catcode@pt{\the\catcode`\.}\catcode`\.=12% + \edef\catcode@sc{\the\catcode`\:}\catcode`\:=12% + \fi\catcodesmusictrue} + + \catcodesmusic + + % PARAMETERS DIFFERENT THAN IN PLAIN + % +\normallineskiplimit=\p@ +\parindent 10mm + % + % EXTRA FONTS NEEDED + % +\font\enorme=\fonthdg\fonthdge bx12 scaled \magstep4 +\font\moyen=\fonthdg\fonthdge bx12 scaled \magstep1 +\font\tentt=\fonthdg\fonthdge tt10 +\font\ppffsixteen=\fonthdg\fonthdge bxti10 +\font\ppfftwenty=\fonthdg\fonthdge bxti10 scaled \magstep1 + % +\tolerance=10000\relax + % procedures speciales D. taupin + % **** \hsize 16cm \vsize 24cm + % +\let\@plainwlog=\wlog +\def\wlog#1{}% + % + %\check + % +\raggedbottom +\def\p@t{\kern 1.5pt\pointfont\char"2E}% +\def\P@t{\pt@raise\hbox{\p@t}}% +\def\PP@t{\pt@raise\hbox{\p@t\char"2E}}% +\def\PPP@t{\pt@raise\hbox{\p@t\char"2E\char"2E}}% + % + %\check + % +\def\f@tok#1#2\af@tok{#1}% +\def\s@tok#1#2\af@tok{#2}% + % +\def\gl@au#1{\ifnum #1<0\relax\global\advance #1 by -1\relax\fi + \ifnum #1>0\relax\global\advance #1 by 1\relax\fi}% +\def\gl@de#1{\ifnum #1<0\relax\global\advance #1 by 1\relax\fi + \ifnum #1>0\relax\global\advance #1 by -1\relax\fi}% + % + % + % Amount of skip needed at bar lines +\newskip\tempsskip +\newdimen\brace@w +\newdimen\afterruleskip +\newdimen\pt@up % offset point de notes pointees +\newdimen\noteskip +\newdimen\elemskip +\newdimen\q@antum +\newdimen\n@raise +\newdimen\n@width +\newdimen\stem@skip +\newdimen\interligne % entre les lignes + %%%% \newdimen\nullthick % pour les parties sans portees (paroles) +\newdimen\staffbotmarg % marge au-dessous des portees +\newdimen\stafftopmarg % au-dessus des portees +\newdimen\Internote % la moitie de \Interligne +\def\internote{\Internote}% +\newdimen\interbeam % distance entre poutres +\newdimen\Interligne % de la base d'une ligne a l'autre +\newdimen\interportee % distance between staffs of the same instrument (incl) +\newdimen\Interportee % distance between staffs of the same instrument (excl) +\newdimen\interinstrument % distance between instruments (added to \interportee) +\newdimen\systemheight + % +\newdimen\altplancher +\newdimen\altportee +\newdimen\line@width +\newdimen\x@skip +\newdimen\locx@skip +\newdimen\st@bot % note stem bottom +\newdimen\st@top % note stem top + % + % positions x et z de debut des tenues +\newdimen\t@xi\newdimen\t@zi +\newdimen\t@xii\newdimen\t@zii +\newdimen\t@xiii\newdimen\t@ziii +\newdimen\t@xiv\newdimen\t@ziv +\newdimen\t@xv\newdimen\t@zv +\newdimen\t@xvi\newdimen\t@zvi + % +\newdimen\t@y + % + % signes des tenues ( \t@p: entier de -1 a +1 ) + % etat des tenues ( \t@s: 0= inactive, 1= actif, 2= continuation ) + % +\newcount\t@pi\newcount\t@si +\newcount\t@pii\newcount\t@sii +\newcount\t@piii\newcount\t@siii +\newcount\t@piv\newcount\t@siv +\newcount\t@pv\newcount\t@sv +\newcount\t@pvi\newcount\t@svi + % + % positions x et z de debut des poutres +\newdimen\b@xi\newdimen\b@zi +\newdimen\b@xii\newdimen\b@zii +\newdimen\b@xiii\newdimen\b@ziii +\newdimen\b@xiv\newdimen\b@ziv +\newdimen\b@xv\newdimen\b@zv +\newdimen\b@xvi\newdimen\b@zvi + % +\newdimen\bb@xi\newdimen\bb@zi +\newdimen\bb@xii\newdimen\bb@zii +\newdimen\bb@xiii\newdimen\bb@ziii +\newdimen\bb@xiv\newdimen\bb@ziv +\newdimen\bb@xv\newdimen\bb@zv +\newdimen\bb@xvi\newdimen\bb@zvi + % +\newdimen\bbb@xi\newdimen\bbb@zi +\newdimen\bbb@xii\newdimen\bbb@zii +\newdimen\bbb@xiii\newdimen\bbb@ziii +\newdimen\bbb@xiv\newdimen\bbb@ziv +\newdimen\bbb@xv\newdimen\bbb@zv +\newdimen\bbb@xvi\newdimen\bbb@zvi + % +\newdimen\bbbb@zi +\newdimen\bbbb@zii +\newdimen\bbbb@ziii +\newdimen\bbbb@ziv +\newdimen\bbbb@zv +\newdimen\bbbb@zvi + % +\newdimen\bbbbb@zi +\newdimen\bbbbb@zii +\newdimen\bbbbb@ziii +\newdimen\bbbbb@ziv +\newdimen\bbbbb@zv +\newdimen\bbbbb@zvi + % + % pentes des poutres ( entier de -3 a +3 ) + % multiplicite des poutres ( de -5 a +5 . 0= inactive ) + % +\newcount\b@pi\newcount\b@ni +\newcount\b@pii\newcount\b@nii +\newcount\b@piii\newcount\b@niii +\newcount\b@piv\newcount\b@niv +\newcount\b@pv\newcount\b@nv +\newcount\b@pvi\newcount\b@nvi + % +\newif\ifraggedlines + % +\newcount\barno +\newcount\lastbarno +\newcount\notes@open +\def\check@nopen{\ifnum\notes@open>0\relax\enotes\errmessage{ missing + \noexpand\enotes\ mesure \the\barno}\fi}% + % + % altitudes des portees de chaque instrument + % +\newcount\ut@ref +\newcount\noportee +\newcount\noinstrument + % +\newcount\nbporteesi +\newcount\nbporteesii +\newcount\nbporteesiii +\newcount\nbporteesiv +\newcount\nbporteesv +\newcount\nbporteesvi + % +\newcount\signi +\newcount\signii +\newcount\signiii +\newcount\signiv +\newcount\signv +\newcount\signvi + % +\newif\ifadvance\advancetrue +\newcount\transpose +\newcount\normaltranspose +\newcount\o@signi +\newcount\o@signii +\newcount\o@signiii +\newcount\o@signiv +\newcount\o@signv +\newcount\o@signvi + % +\newtoks\cleftoksi +\newtoks\cleftoksii +\newtoks\cleftoksiii +\newtoks\cleftoksiv +\newtoks\cleftoksv +\newtoks\cleftoksvi + % +\newtoks\o@cksi +\newtoks\o@cksii +\newtoks\o@cksiii +\newtoks\o@cksiv +\newtoks\o@cksv +\newtoks\o@cksvi + % +\newtoks\metertoksi +\newtoks\metertoksii +\newtoks\metertoksiii +\newtoks\metertoksiv +\newtoks\metertoksv +\newtoks\metertoksvi + % +\global\nbporteesi=1% +\global\nbporteesii=1% +\global\nbporteesiii=1% +\global\nbporteesiv=1% +\global\nbporteesv=1% +\global\nbporteesvi=1% +\global\cleftoksi={{0}{0}{0}{0}}% +\global\cleftoksii={{0}{0}{0}{0}}% +\global\cleftoksiii={{0}{0}{0}{0}}% +\global\cleftoksiv={{0}{0}{0}{0}}% +\global\cleftoksv={{0}{0}{0}{0}}% +\global\cleftoksvi={{0}{0}{0}{0}}% + % + %\check + % +\def\n@advance{\global\advance\noinstrument by 1\relax}% +\def\n@loop{\global\noinstrument=0\relax\loop + \ifnum\noinstrument<\nbinstruments\relax\n@advance + \selectinstr}% +\def\m@loop{\global\noinstrument=0\relax\loop + \ifnum\noinstrument<\maxinstruments\relax\n@advance + \selectinstr}% + % +\def\savemeters{\savemeter}% +\def\savemeter{\m@loop\global\metertoks={{}{}{}{}}\repeat}% + %\check +\def\maxinstruments{6}% + +\def\setclef#1{\noinstrument #1\relax\selectinstr \cleftoks} +\let\setclefs\setclef + +\def\setstaffs#1{\noinstrument #1\relax\selectinstr \nbportees} + +\def\setinterinstrument#1#2{\noinstrument #1\relax + \expandafter\def\csname interinstrument\romannumeral\noinstrument\endcsname{#2}} + + % +\def\selectinstr{% +\xdef\altitude{\csname k@i\romannumeral\noinstrument\endcsname}% +\xdef\nbportees{\csname nbportees\romannumeral\noinstrument\endcsname}% +\xdef\staffspacing{\csname staffspacing\romannumeral\noinstrument\endcsname}% +\xdef\stafflinesnb{\csname stafflinesnb\romannumeral\noinstrument\endcsname}% +\xdef\clefdut{\csname clefdut\romannumeral\noinstrument\endcsname}% +\xdef\clefdefa{\csname clefdefa\romannumeral\noinstrument\endcsname}% +\xdef\clefdesol{\csname clefdesol\romannumeral\noinstrument\endcsname}% +\xdef\internote{\csname internote\romannumeral\noinstrument\endcsname}% +\xdef\sign{\csname sign\romannumeral\noinstrument\endcsname}% +\xdef\o@sign{\csname o@sign\romannumeral\noinstrument\endcsname}% +\xdef\cleftoks{\csname cleftoks\romannumeral\noinstrument\endcsname}% +\xdef\metertoks{\csname metertoks\romannumeral\noinstrument\endcsname}% +\xdef\o@cks{\csname o@cks\romannumeral\noinstrument\endcsname}% +\interportee=\interfacteur\internote +\interportee=2\interportee +\Interportee=\interportee +\advance\Interportee by -\stafflinesnb\internote +\advance\Interportee by -\stafflinesnb\internote +\advance\Interportee by 2\internote +} + %\check + % + % compteurs de travail + % +\newcount\n@i +\newcount\n@ii +\newcount\n@iii + % + % registres de travail + % +\newbox\toks@box +\newbox\w@rkbox +\newbox\n@otebox + % + %%%%\newdimen\clef@skip +\newdimen\sign@skip + % +\newdimen\y@ +\newdimen\y@i +\newdimen\y@ii +\newdimen\y@iii +\newdimen\y@iv +\newdimen\y@v + % +\newtoks\arg@suite +\def\hlthick{0.5\lthick} +\def\vdlthick{\vrule depth \hlthick} + % + % fabrique un jeu complet (ou systeme complet de portees) + % en fonction de \nbinstruments +\def\null@portee{\global\advance\y@ by \nullthick + \ifdim\systemheight>\p@\global\advance\systemheight by \nullthick + \else + \global\advance\altplancher by \nullthick + \fi +}% + % + %\check + % +\ifx\mult@portee\undefined + \def\mult@portee{\y@ii=\nbportees\interportee + \advance\y@ii by -\Interportee + \advance\y@ii by \nbportees\lthick + \advance\y@ii by -\lthick + \raise\y@\llap{\cmex\raise 8\p@\rlap{\char'072}\raise\y@ii\rlap{\char +'070}\divide\y@ii by 2\relax{\advance\y@ii by 8\p@\raise\y@ii\rlap{\char +'074}}\y@v=\y@ii\relax\advance\y@v by -5\p@ + \kern 3.8\p@ + \vrule depth -5\p@ height \y@v width 1.2\p@ \kern -1.2\p@ + \advance\y@v by \y@ii + \advance\y@ii by 5\p@ + \vrule depth -\y@ii height \y@v width 1.2\p@ + \kern 2.5\p@}}% +\fi % end \ifx \mult@portee + % + %\check + % +\def\n@portee{\global\advance\noportee by 1\relax}% +\def\p@loop{\global\noportee=0\relax + \loop\ifnum\noportee<\nbportees\relax\alt@comp}% + % + %\check + % +\def\alt@comp{\altportee=\altitude + \advance\altportee by \noportee\interportee}% + % +\def\lowersonginstrum{99} % to be used to make heavy bars at staff left +\def\uppersonginstrum{0} % to be used to make heavy bars at staff left +\newdimen\lowersongalt +\newdimen\uppersongalt + % +\def\portees{\rlap{\global\y@=\staffbotmarg + % +\lowersongalt=\z@ +\uppersongalt=\z@ +\global\systemheight=\z@ +\global\altplancher=\y@ +\n@loop + % + \global\noportee=0\relax + \global\altitude=\y@ + \ifnum\noinstrument=\lowersonginstrum\relax + \lowersongalt=\altitude + \fi + % + \ifnum\nbportees=0\relax + \null@portee + \else + \ifnum\nbportees>1\relax + \mult@portee + \fi + {\loop \raise\y@\portee + \n@portee \global\advance\y@ by \interportee + \global\advance\systemheight by \interportee + \ifnum\noportee<\nbportees + \repeat}\fi % fin du \else pour 0 portees=chant + \ifnum\noinstrument=\uppersonginstrum\relax\uppersongalt=\y@ + \advance\uppersongalt by -\Interportee + \advance\uppersongalt by \hlthick + \fi + \ifnum\noinstrument<\nbinstruments + \xdef\interinstrum{\csname interinstrument\romannumeral\noinstrument + \endcsname}% + \expandafter\ifx\interinstrum\relax\xdef\interinstrum{\interinstrument}\fi + \global\advance\systemheight by \interinstrum + \global\advance\y@ by \interinstrum + \fi +\repeat +\global\advance\systemheight by -\Interportee +\global\advance\systemheight by \hlthick + % +\raise\altplancher\rlap{\vdlthick height \systemheight}% +\ifnum\uppersonginstrum>\lowersonginstrum\relax + \advance\uppersongalt by -\lowersongalt + \raise\lowersongalt + \llap{\vdlthick height \uppersongalt width 0.6\Interligne + \kern 0.3\Interligne + \vdlthick height \uppersongalt width \lthick}\type@songsymbols +\fi +{\advance\stafftopmarg by \staffbotmarg +\raise \stafftopmarg\hbox{\vdlthick height \systemheight width \z@}}}}% + % + %\check + % portee simple +\def\staffline{\kern\internote\kern\internote\kern -\lthick +\hrule width \line@width height \hlthick depth \hlthick +} +\def\portee{\rlap{\vbox to \z@ {\vss +\ifnum\stafflinesnb>5\staffline\fi +\ifnum\stafflinesnb>4\staffline\fi +\ifnum\stafflinesnb>3\staffline\fi +\ifnum\stafflinesnb>2\staffline\fi +\ifnum\stafflinesnb>1\staffline\fi +\ifnum\stafflinesnb>0\staffline\fi\kern -\hlthick +}}}% + %\check + % + % initialisations des dimensions etc... + % + %*************** definition des titres des instruments + % *********************** + % +\def\instrumenti{}% +\def\instrumentii{}% +\def\instrumentiii{}% +\def\instrumentiv{}% +\def\instrumentv{}% +\def\instrumentvi{}% + %\check + % +\def\maxlegatenuti{6}% +\def\ten@loop{\global\n@l=0\relax\loop\ifnum\n@l<\maxlegatenuti\relax + \selecttenue{\n@l}}% + % +\def\resettens{\resetlegs}% +\newcount\n@l +\def\resetlegs{\global\setbox\@tenubox + \hbox{\kern\tenboxwidth}\ten@loop \global\t@p=0\relax \global\t@s=0\relax + \global\advance\n@l by 1\relax + \repeat}% + % + %\check + % +\def\piece@begina{\barno=1\relax\global\barsinline=0\relax +\frenchspacing\ifnum1>\nbinstruments\errmessage{\noexpand\nbinstruments + not defined !}\fi +\def\barvrule{\thinvrule}\resetlegs +\savesignature\computewidths}% + % +\def\debutmorceau{\catcodesmusic\leavevmode\piece@begina +\advance\line@width by -\parindent +\portees\instrumentnames +\advance\line@width by \parindent +\tempsskip=2pt plus \gluemaxskip minus 2pt +\zglueskip=0pt plus \gluemaxskip minus .5pt% +\piece@beginb\setnormalhyphen}% + % +\def\piece@beginb{\writeclefs\everystaff +\writesignatures\writemeters +\save@all\currenthyphenpenalty}% + % +\def\save@all{\saveclefs\savesignature\savemeters}% + % +\def\debutextrait{\catcodesmusic\piece@begina +\setbox\w@rkbox=\hbox{\portees}% to compute heights +\setbox\w@rkbox=\hbox\bgroup +\def\barre{\xbarre}\piece@beginb}% + %\check +\def\zfinextrait{\def\suspmorceau{\zsuspmorceau}\finextrait} +\def\finextrait{\def\z@suspend{}\suspmorceau\egroup +\line@width=\wd\w@rkbox +\centerline{\instrumentnames\portees\unhbox\w@rkbox}\endcatcodesmusic}% + % + % saving penalties to be able to restore them at the end of music + % +\def\savepenalties{\edef\restorepenalties{% +\noexpand\linepenalty=\the\linepenalty\noexpand\relax +\noexpand\interlinepenalty=\the\interlinepenalty\noexpand\relax +\noexpand\hyphenpenalty=\the\hyphenpenalty\noexpand\relax +\noexpand\exhyphenpenalty=\the\exhyphenpenalty\noexpand\relax +\noexpand\finalhyphendemerits=\the\finalhyphendemerits\noexpand\relax +\noexpand\doublehyphendemerits=\the\doublehyphendemerits\noexpand\relax +\noexpand\adjdemerits=\the\adjdemerits\noexpand\relax +\noexpand\pretolerance=\the\pretolerance\noexpand\relax +}}% + %\check +\def\computewidths{\computespecifics +\interportee=\interfacteur\Interligne +\Interportee=\interportee\advance\Interportee by -8\internote +\ifdim\stafftopmarg<\p@ \stafftopmarg=\topfacteur\Interligne\fi +\ifdim\staffbotmarg<\p@ \staffbotmarg=\bottomfacteur\Interligne\fi +\global\interligne=\Interligne +\global\Internote=0.5\Interligne + % +\ifx\internotei\undefined\relax\else + \n@loop + % decide staffspacing + \expandafter\ifx\staffspacing \undefined\global\internote=\Internote + \else + \expandafter\ifx\staffspacing \relax\global\internote=\Internote + \else\global\internote=\staffspacing\Internote + \fi\fi + \repeat +\fi + % +\ifdim\nullthick<\p@ \global\nullthick=4\Interligne\fi +\global\advance\interligne by -\lthick + % +\afterruleskip=\stdafterruleskip +\global\line@width=\hsize}% + % +\def\stdafterruleskip{4\Internote}% + % + %\check + % +\def\n@alaligne{\n@suspmorceau\lreprmorceau}% +\def\n@zalaligne{\n@zsuspmorceau\lreprmorceau}% +\def\lreprmorceau{\reprmorceau}% +\def\n@suspmorceau{\check@nopen\gluebrule\newbar\z@suspend}% +\def\n@Suspmorceau{\n@suspmorceau} +\def\n@zsuspmorceau{\check@nopen\termskip\z@suspend}% +\def\z@suspend{\ifraggedlines\else\hfilneg\ \fi + \adv@bottom\par\removelastskip\endcatcodesmusic}% +\def\alapage{\suspmorceau\preprmorceau}% +\def\zalapage{\zsuspmorceau\preprmorceau}% +\def\preprmorceau{\eject\global\linesinpage=0\relax\reprmorceau}% +\def\reprmorceau{\catcodesmusic\atnextline\computewidths\noindent\leavevmode +\global\barsinline=0\relax{\advance\linesinpage by 1\relax\message{Line \the +\linesinpage:}}\relax +\adv@bottom\portees\writeclefs\kern 0.5\Interligne\wbarno@x +\kern -0.5\Interligne\everystaff +\writesignatures\writemeters\zgluearule +\save@all\currenthyphenpenalty\def\atnextline{}}% + % +\def\everystaff{}\def\atnextline{}% + %\check + % +\def\resetsignatures{\generalsignature{0}\savesignature}% + % +\def\savesignature{\m@loop\o@sign=\sign\repeat}% + %\check +\def\saveclefs{\m@loop\global\o@cks=\cleftoks\repeat} + %\check + % + % definitions en fonction du numero de l'instriment + % +\newskip\zglueskip + % +\def\meterfrac#1#2{\setbox\w@rkbox=\vbox{\hbox{\ \meterfont + #1}\hbox{\ \meterfont #2}}% +\vbox to 8\internote{\offinterlineskip\vss\hbox to \wd\w@rkbox{\hss +\meterfont #1\hss}\vss +\vss\hbox to \wd\w@rkbox{\hss\meterfont #2\hss}\vss}}% + %\check +\newtoks\t@gene +\def\generalmeter#1{\t@gene={{#1}{#1}{#1}{#1}}\m@loop +\global\metertoks=\t@gene\repeat}% + %\check +\def\signaturegenerale{\generalsignature}% +\def\generalsignature#1{\m@loop\sign=#1\relax\repeat}% + % + % compteurs de travail + % + % a completer pour fermer les poutres +\def\zglu{\zglue}% +\def\zglue{\nobreak\@tenleader{\zglueskip}\nobreak}% + % +\def\n@skmb{\nobreak\global\advance\n@skip by -\brace@w}% + % +\def\temps{\n@skmb\termskip\nobreak\zglu\nobreak\skip@b}% +\def\changesignatures{\changesignature}% +\def\changesignature{\n@skmb\termskip\nobreak\zglu\nobreak + \skip@b\writenewsignatures}% +\def\z@barre{\n@skmb\termskip\nobreak\skip@b\-\hskip\zglueskip\nobreak}% + +\def\xz@barre{\temps}% + % +\def\newbar{\barvrule\def\barvrule{\thinvrule}\message{bar \the\barno}% +\global\advance\barno by 1\relax}% + % +\def\w@barno{\global\n@iii=\barno\global\divide\n@iii by \freqbarno\relax +\ifnum\n@iii=\lastbarno\relax +\else{\y@i=\altplancher\advance\y@i by \systemheight +\advance\y@i by 2\internote\raise\y@i\llap{\it \number\barno + \kern -6\p@}}\fi\global\lastbarno=\n@iii +}% +\newif\ifprimavolta +\newif\ifsecondavolta +\def\freqbarno{1}\def\wbarno{\w@barno} +\def\wbarno@x{\ifprimavolta\make@prima 1\else + \ifsecondavolta\make@prima 2\else + \wbarno + \fi\fi + \primavoltafalse\secondavoltafalse + \global\n@iii=\barno\global\divide\n@iii by \freqbarno\relax + \global\lastbarno=\n@iii} +% + \def\Setprimavolta#1#2{\primavoltatrue\def\up@volta{#1}\def\lg@volta{#2}} + \def\setprimavolta{\Setprimavolta{2\Interligne}{1cm}} + + \def\Setsecondavolta#1#2{\secondavoltatrue\def\up@volta{#1}\def\lg@volta{#2}} + \def\setsecondavolta{\Setsecondavolta{2\Interligne}{1cm}} + +\def\make@prima#1{{\y@i=\altplancher\advance\y@i by \systemheight +\advance\y@i by \up@volta + \raise\y@i\rlap{\vrule height 2\Interligne\rm\ #1.}\advance\y@i 2\Interligne + \raise\y@i\rlap{\vrule height \z@ depth \lthick width \lg@volta}% + }} +\def\up@volta{2\Interligne}\def\lg@volta{1cm} + % + % discretionary line breaking + % +\def\noautolines{\def\barre{\n@barre}\def\zbarre{\z@barre}% +\def\alaligne{\c@ountline\n@alaligne}\def\zalaligne{\n@zalaligne}% +\def\suspmorceau{\c@ountline\n@suspmorceau}\def\zsuspmorceau{\c@ountline\n@zsuspmorceau}% +\def\Suspmorceau{\n@Suspmorceau} +\def\currenthyphenpenalty{\setnohyphenpenalty}% +\def\updatecontext{\n@updatecon}% +\def\leftrepeat{\n@leftrepeat}% +\def\leftrightrepeat{\n@leftrightrepeat}% +\setnohyphenpenalty}% + % +\def\setnohyphenpenalty{\linepenalty=500\pretolerance=-1% +\finalhyphendemerits=-10\hyphenpenalty=-10% +\exhyphenpenalty=0\doublehyphendemerits=0% +\adjdemerits=0\interlinepenalty=0}% + % +\def\sethyphenpenalty{\linepenalty=500\pretolerance=-1% +\finalhyphendemerits=1000\hyphenpenalty=1000% +\exhyphenpenalty=0\doublehyphendemerits=0% +\adjdemerits=0\interlinepenalty=1000}% + % +\newcount\barsinline +\newcount\linesinpage +\newcount\maxbarsinline +\newcount\maxlinesinpage +\def\c@ountbar{\global\advance\barsinline by 1\relax}% +\def\c@ountline{\global\advance\linesinpage by 1\relax}% + % +\def\autolines#1#2#3{% #1 nombre d'elemskip par mesure, + % #2 nombre de mesures par ligne, + % #3 nb lignes par page +\global\maxbarsinline=#2\relax +\global\maxlinesinpage=#3\relax +\global\elemskip=\line@width\global\advance\elemskip by -10\Internote +\global\divide\elemskip by \maxbarsinline\relax +\global\advance\elemskip by -6\Internote\global\divide\elemskip by #1\relax +\def\barre{\t@barre}\def\updatecontext{\t@updatecon}\def\zbarre{\t@zbarre}% +\def\alaligne{\t@alaligne}\def\zalaligne{\t@zalaligne}% +\def\suspmorceau{\t@suspmorceau}\def\zsuspmorceau{\t@zsuspmorceau}% +\def\Suspmorceau{\t@Suspmorceau}% +\def\leftrepeat{\t@leftrepeat}% +\def\leftrightrepeat{\t@leftrightrepeat}% +\def\currenthyphpenalsty{\sethyphenpenalty}\sethyphenpenalty}% + % +\def\t@barre{\c@ountbar +\ifnum\barsinline<\maxbarsinline\relax\x@barre +\else\t@alaligne +\fi}% +\def\t@zbarre{\c@ountbar +\ifnum\barsinline<\maxbarsinline\relax\xz@barre +\else\t@zalaligne +\fi}% + % +\def\t@alaligne{\c@ountline +\ifnum\linesinpage<\maxlinesinpage\relax\n@alaligne +\else\alapage +\fi} + % +\def\t@suspmorceau{\c@ountline\n@suspmorceau +\ifnum\linesinpage<\maxlinesinpage\relax +\else\eject\global\linesinpage=0\relax +\fi} + % +\def\t@zalaligne{\c@ountline +\ifnum\linesinpage<\maxlinesinpage\relax\n@zalaligne +\else\zalapage +\fi}% + % +\def\t@zsuspmorceau{\c@ountline\n@zsuspmorceau +\ifnum\linesinpage<\maxlinesinpage\relax +\else\eject\global\linesinpage=0\relax +\fi}% + % +\def\t@Suspmorceau{\setdoubleBAR\t@suspmorceau} + % + % +\def\tz@barre{\c@ountbar +\ifnum\barsinline<\maxbarsinline\relax\z@barre +\else + \c@ountline + \ifnum\linesinpage<\maxlinesinpage\relax\zalaligne + \global\advance\linesinpage by -1\relax % car \alaligne aura aussi augmente + \else\zalapage +\fi\fi}% + % +\def\t@updatecon{\c@ountbar + \ifnum\barsinline<\maxbarsinline\relax\x@updatecon +\else + \c@ountline + \ifnum\linesinpage<\maxlinesinpage\l@updatecon + \else\p@updatecon +\fi\fi}% + %\check + % +\noautolines + % +\def\n@barre{\gluebrule\newbar\gluearule}% barre de mesure +\def\xbarre{\c@ountbar\x@barre} +\def\xbeambarre{\notes\charnote0{\hss\altplancher=\z@\newbar\wbarno@x}\enotes} +\def\x@barre{\gluebrule\newbar\zgluearule}% barre de mesure + % sans possibilite de saut + % +\def\d@oubleBAR{\thinvrule\nobreak\hskip +0.6\Internote\global\advance\x@skip0.6\Internote +\nobreak\thickvrule}% + % +\def\addspace#1{\kern#1\global\advance\x@skip#1} + % +\def\d@oublebar{\thinvrule\nobreak\hskip 0.8\Internote +\global\advance\x@skip0.8\Internote +\nobreak\thinvrule}% + % +\def\r@ightrepeat{\hbox{\w@colons\d@oubleBAR}\global\advance\x@skip + 7.12\Internote} +\def\l@eftrepeat{\hbox{\thickvrule\kern 0.6\Internote\thinvrule\w@colons +}\global\advance\x@skip7.12\Internote} +\def\l@eftrightrepeat{\hbox{\w@colons\thickvrule + \kern 0.6\Internote\thickvrule\w@colons}\global\advance\x@skip + 6.2\Internote} + % + %\check + % +\def\leftrightrepeatsymbol{\gluebrule\l@eftrightrepeat\glueaftersymbol} +\def\glueaftersymbol{{\def\wbarno{}\afterruleskip=\Internote\zgluearule}}% +\def\leftrepeatsymbol{\gluebrule\l@eftrepeat\glueaftersymbol}% +\def\rightrepeatsymbol{\gluebrule\r@ightrepeat\glueaftersymbol}% + % + %\check + % +\def\doublebarre{\setdoublebar\barre}% double barre de mesure +\def\setdoublebar{\def\barvrule{\d@oublebar}}% +\def\setemptybar{\def\barvrule{\relax}}% +\def\setdoubleBAR{\def\barvrule{\d@oubleBAR}}% +\def\rightrepeat{\setrightrepeat\barre}% +\def\finrightrepeat{\setrightrepeat\suspmorceau}% + % +\def\setrightrepeat{\def\barvrule{\r@ightrepeat}}% +\def\setleftrepeat{\def\barvrule{\l@eftrepeat}}% +\def\setleftrightrepeat{\def\barvrule{\l@eftrightrepeat}}% + % +\def\think@vrule@f#1{\raise\altplancher\hbox{\vdlthick height\systemheight width + #1}\global\advance\x@skip by #1}% + +\def\stdbarrules{\def\think@vrule{\think@vrule@f}} % standard v rules over all instruments +\stdbarrules + +\def\sepbarrules{\def\think@vrule{\think@vrule@s}} % standard v rules over all instruments + % +\def\think@vrule@s#1{\n@loop \selectinstr + \y@v=\nbportees\interportee \advance\y@v -\Interportee \advance\y@v \lthick + \raise\altitude \hbox to \z@{\vdlthick width #1 height + \y@v\hss}\repeat + \global\advance\x@skip by #1\kern #1} % separated vrules par instrum + + %\check +\def\vrule@inst#1{\selectinstr{\p@loop\raise\altportee + \hbox to \z@{\vrule width #1 height 8\internote\hss}\n@portee\repeat}}% + % + % +\def\thinvrule{\think@vrule{\lthick}}% +\def\thickvrule{\think@vrule{1.2\Internote}}% + % +\def\finmorceau{\setdoubleBAR\finpartition}% +\def\zfinmorceau{\setemptybar\finpartition}% +\def\finpartition{\n@suspmorceau}% + %\check + % +\def\c@other{}% void, but possibly changed by lines.tex... and others +\def\gluearule{\-\zgluearule}% +\def\zgluearule{\nobreak\wbarno@x\ygluearule}% +\def\ygluearule{\nobreak\kern\afterruleskip\nobreak + \global\advance\x@skip\afterruleskip\global\n@skip=\z@}% + % terminate skips and continue slurs and ties if any +\def\termskip{\upd@sk + \ten@loop\ifnum\t@s=0\relax + \else\c@ten + \fi + \global\advance\n@l by 1\relax + \repeat\nobreak + \c@other\nobreak +\global\n@skip=\z@\global\x@skip=\z@}% + % +\def\gluebrule{\nobreak\termskip\@tenleader{\tempsskip}\nobreak}% + % +\def\writesignatures{\global\sign@skip=\z@ +\w@ritesigns +\global\advance\sign@skip by 0.4\Internote \nobreak\hskip\sign@skip +}% +\def\Writesignatures{\global\sign@skip=\z@ +\w@ritesigns +\nobreak\advance\sign@skip by 1.2\Internote\kern\sign@skip\nobreak}% + % +\def\w@ritesigns{\n@loop\writesigni\repeat}% + % + %\check +\def\instrumentnames{\n@loop\writeinsname\repeat}% + % + %\check +\def\writenewsignatures{\global\sign@skip=\z@ + \n@loop\writenewsigni\repeat + \nobreak\ifdim\sign@skip>0.1pt\global\advance\sign@skip by 1.2\Internote + \nobreak\global\n@skip=\sign@skip\termskip + \fi + \nobreak}% + % + %\check + % + % normal hyphenation process when \noautolines + % +\def\setnormalhyphen{\edef\-{\noexpand\discretionary{}% + %\check 2 +{\noexpand\hbox{\noexpand\portees\noexpand\writeclefs +\noexpand\everystaff}% +\noexpand\hbox{\noexpand\writesignatures}% +}% + %\check 2 +{}}}% fin du def \setnormalhyphen + %\check + % ecrire toutes les indications de mesure sur toutes les portees +\def\writemeters{\global\n@skip=\z@ +\n@loop\writemeteri\repeat\nobreak +\ifdim\n@skip>\z@\advance\n@skip by 1.2\Internote + \global\n@skip=\n@skip\termskip +\fi\nobreak}% + % + %\check +\def\writemeteri{\nobreak\selectinstr{\p@loop + \edef\w@call{\noexpand\writemeterp{\noexpand\noportee}\the\metertoks}\relax + \setbox\toks@box=\hbox{\w@call{}{}{}{}}\relax + \ifdim\n@skip<\wd\toks@box\global\n@skip=\wd\toks@box\fi + \raise\altportee\rlap {\box\toks@box}\n@portee + \repeat}}% + %\check +\def\writeclefs{% ecrire toutes les clefs sur toutes les portees +\global\clef@skip=\z@ +\w@riteclefs +\kern\clef@skip}% + % +\def\w@riteclefs{\n@loop\writeclefi\repeat}% + % + %\check +\def\writenewclefs{% ecrire toutes les nouvelles clefs sur toutes les + % portees +\global\clef@skip=\z@ +\w@ritenewclefi +\kern\clef@skip\global\advance\x@skip\clef@skip\nobreak}% + % + %\check +\def\zwritenewclefs{% ecrire toutes les nouvelles clefs sur toutes les + % portees, a gauche et sans espacement +\global\clef@skip=\z@ +\setbox\w@rkbox\hbox{\w@ritenewclefi}\kern -\clef@skip\box\w@rkbox +\kern\clef@skip\nobreak}% + % +\def\w@ritenewclefi{\n@loop\writenewclefi\repeat}% + % + %\check +\def\writesigni{\selectinstr\def\o@test{999}\w@ritenewsigni}% +\def\writenewsigni{\selectinstr\def\o@test{\o@sign}\w@ritenewsigni}% +\def\w@ritenewsigni{{\p@loop + \n@portee + \ifnum\o@test=\sign\relax\else + \edef\get@ref{\noexpand\get@refs\the\cleftoks{}{}{}{}}% + \setbox\toks@box=\hbox{\kern 0.4\Internote\get@ref\compnwsign + \kern 0.4\Internote}% + \ifdim\sign@skip<\wd\toks@box \global\sign@skip=\wd\toks@box\fi + \raise\altportee\rlap{\box\toks@box}% + \fi +\repeat}% +}% + %\check +\def\writeinsname{\selectinstr +\xdef\instrument{\csname instrument\romannumeral +\noinstrument\endcsname}% +\altportee=\altitude +\ifnum\nbportees>0\relax\advance\altportee by \nbportees\interportee + \advance\altportee by -\Interportee + \advance\altportee by \altitude\divide\altportee by 2\relax +\fi + \setbox\n@otebox=\llap{\vbox{\hsize=\parindent\advance\hsize by + -0.8\Internote \centerline{\instrument}}\ + \kern 2\p@}\advance\altportee by -0.5\ht\n@otebox + \raise\altportee\box\n@otebox +}% + %\check +\def\get@refs#1#2#3#4{% #1-#4: cle correspondante 0=sol, 6=fa, 1-4=ut . +\ifcase\noportee\relax\global\ut@ref=0\relax +\or\global\ut@ref=#1\relax +\or\global\ut@ref=#2\relax +\or\global\ut@ref=#3\relax +\or\global\ut@ref=#4\relax +\fi} +\def\compnwsign{\ifnum\o@sign=0\relax + \else\ifnum\sign=0\relax + \else\kern 0.4\Internote + \fi + \fi + \ifnum\o@sign<0\relax\w@flats\w@sharps + \else\w@sharps\w@flats + \fi}% + % + %\check +\def\w@flats{% +\ifnum\sign<0\relax\s@bemol{6}\else\ifnum\o@sign<0\relax\s@becarre{6}\fi\fi +\ifnum\sign<-1\relax\s@bemol{9}\else\ifnum\o@sign<-1\relax\s@becarre{9}\fi +\fi +\ifnum\sign<-2\relax\s@bemol{5}\else\ifnum\o@sign<-2\relax\s@becarre{5}\fi +\fi +\ifnum\sign<-3\relax\s@bemol{8}\else\ifnum\o@sign<-3\relax\s@becarre{8}\fi +\fi +\ifnum\sign<-4\relax\s@bemol{4}\else\ifnum\o@sign<-4\relax\s@becarre{4}\fi +\fi +\ifnum\sign<-5\relax\s@bemol{7}\else\ifnum\o@sign<-5\relax\s@becarre{7}\fi +\fi +\ifnum\sign<-6\relax\s@bemol{3}\else\ifnum\o@sign<-6\relax\s@becarre{3}\fi +\fi +}% + %\check +\def\w@sharps{% +\ifnum\sign>0\relax\s@dieze{10}\else\ifnum\o@sign>0\relax\s@becarre{10}\fi +\fi +\ifnum\sign>1\relax\s@dieze{7}\else\ifnum\o@sign>1\relax\s@becarre{7}\fi\fi +\ifnum\sign>2\relax\s@dieze{11}\else\ifnum\o@sign>2\relax\s@becarre{11}\fi +\fi +\ifnum\sign>3\relax\s@dieze{8}\else\ifnum\o@sign>3\relax\s@becarre{8}\fi\fi +\ifnum\sign>4\relax\s@dieze{5}\else\ifnum\o@sign>4\relax\s@becarre{5}\fi\fi +\ifnum\sign>5\relax\s@dieze{9}\else\ifnum\o@sign>5\relax\s@becarre{9}\fi\fi +\ifnum\sign>6\relax\s@dieze{6}\else\ifnum\o@sign>6\relax\s@becarre{6}\fi\fi +}% + %\check +\def\s@bemol#1{\global\n@iii=#1\relax + \p@bedieze\global\advance\y@iii by \fl@raise\raise\y@iii\hbox to + 2.08\internote{\def\musicnfont{\musickeyfont}\hss\f@lat\hss}% +}% +\def\s@becarre#1{\global\n@iii=#1\relax + \p@bedieze\global\advance\y@iii by \na@raise\raise\y@iii\hbox to + 2.08\internote{\def\musicnfont{\musickeyfont}\hss\n@at\hss}% +}% +\def\s@dieze#1{\global\n@iii=#1\relax + \p@bedieze\global\advance\y@iii by \sh@raise\raise\y@iii\hbox to + 2.16\internote{\def\musicnfont{\musickeyfont}\hss\s@harp\hss}% +}% + % +\def\p@bedieze{\global\advance\n@iii by \ut@ref\relax + \global\advance\n@iii by \ut@ref\relax + % cas de la cle de fa + \ifnum\ut@ref=6\global\advance\n@iii by -14\relax\else + \ifnum\ut@ref>0\global\advance\n@iii by -7\relax\fi\fi + \ifnum\n@iii<1\relax\global\advance\n@iii by 7\relax\fi + \ifnum\n@iii<1\relax\global\advance\n@iii by 7\relax\fi + \ifnum\n@iii>11\relax\global\advance\n@iii by -7\relax\fi + \ifnum\n@iii>11\relax\global\advance\n@iii by -7\relax\fi + \global\y@iii=\n@iii\internote + \global\advance\y@iii by -2\internote +} + %\check + % + %\check + % +\def\writeclefp#1#2#3#4#5{% +\n@i=#1\relax +\ifcase\n@i\singleclef{#2}% +\or\singleclef{#3}\or\singleclef{#4}\or\singleclef{#5}\fi +}% + % + %\check +\def\writemeterp#1#2#3#4#5{% +\n@i=#1\relax +\ifcase\n@i\hbox{#2}\or\hbox{#3}\or\hbox{#4}\or\hbox{#5}\fi +}% + % + %\check +\def\writenewclefp#1#2#3#4#5#6#7#8#9{% +\n@i=#1\relax +\ifcase\n@i\newsingleclef{#2}{#6}% +\or\newsingleclef{#3}{#7}\or\newsingleclef{#4}{#8}\or +\newsingleclef{#5}{#9}\fi +}% + %\check + % +\def\singleclef#1{% +\global\n@iii=#1\relax +\charclef +}% + %\check + % +\def\Clefdut{\global\advance\n@iii by -3\relax\raise\n@iii\Interligne\clefdut}% +\def\Clefdefa{\global\advance\n@iii by -6\relax +\raise\n@iii\Interligne\clefdefa} + % +\def\charclef{% +\ifdim\clef@skip<4.8\Internote\global\clef@skip=4.8\Internote\fi +\ifcase\n@iii\relax\clefdesol\relax +\or{\Clefdut}% +\or{\Clefdut}% +\or{\Clefdut}% +\or{\Clefdut}% +\or{\Clefdefa}% +\or{\Clefdefa}% +\fi}% + %\check + % +\def\smallClefdut{\global\advance\n@iii by -3\relax\raise\n@iii +\Interligne\smallclefdut}% +\def\smallClefdefa{\global\advance\n@iii by -6\relax\raise\n@iii +\Interligne\smallclefdefa}% +\def\smallcharclef{% +\ifdim\clef@skip<4.8\Internote\global\clef@skip=4.8\Internote\fi +\ifcase\n@iii\relax\smallclefdesol\relax +\or{\smallClefdut}% +\or{\smallClefdut}% +\or{\smallClefdut}% +\or{\smallClefdut}% +\or{\smallClefdefa}% +\or{\smallClefdefa}% +\fi}% + %\check +\def\newsingleclef#1#2{% +\global\n@iii=#1\relax +\n@ii=#2\relax +\ifnum\n@ii=\n@iii\relax\else\smallcharclef +\fi}% + %\check +\def\writeclefi{\selectinstr +{\p@loop + \edef\w@call{\noexpand\writeclefp{\noexpand\noportee}\the\cleftoks}% + \setbox\toks@box=\hbox{\w@call{}{}{}{}}% + \ifdim\clef@skip<\wd\toks@box \global\clef@skip=\wd\toks@box\fi + \raise\altportee\rlap{\box\toks@box}\n@portee + \repeat}% +}% + %\check +\def\writenewclefi{\selectinstr{\p@loop + \edef\w@call{\noexpand\writenewclefp{\noexpand\noportee}\the\cleftoks\the +\o@cks}% +\setbox\toks@box=\hbox{\w@call{}{}{}{}}% +\ifdim\clef@skip<\wd\toks@box \global\clef@skip=\wd\toks@box\fi + \raise\altportee\rlap{\box\toks@box}\n@portee\repeat}% +}% + %\check + % minuscule: une seule barre + % majuscule: double barre +\def\changecontexte{\changecontext}% +\def\Changecontexte{\Changecontext}% + % +\def\changecontext{\gluebrule\newbar\nobreak\updatecontext}% +\def\pchangecontext{\gluebrule\newbar\nobreak\p@updatecon}% +\def\lchangecontext{\gluebrule\newbar\nobreak\l@updatecon}% + %\check +\def\Changecontext{\setdoublebar\changecontext}% +\def\pChangecontext{\setdoublebar\pchangecontext}% +\def\lChangecontext{\setdoublebar\lchangecontext}% + % + % write colons on all staffs (a part of [left][right]repeat symbols + % +\def\wrcolons{\w@colons}% +\def\w@colons{\nobreak\hskip 0.8\Internote\nobreak + \n@loop \w@coli\repeat + \nobreak\hskip 0.8\Internote\nobreak}% + % + %\check + % +\def\n@updatecon{% imprime tout ce qui est nouveau +\nobreak\writenewclefs +\nobreak\writenewsignatures\nobreak\setnormalhyphen\-\writemeters\zgluearule +\save@all}% + % +\def\x@updatecon{% imprime tout ce qui est nouveau +\nobreak\writenewclefs\nobreak\wbarno@x +\nobreak\writenewsignatures\nobreak\writemeters\ygluearule +\save@all}% + % +\def\l@updatecon{\nobreak\writenewclefs\nobreak\writenewsignatures +\z@suspend\reprmorceau}% + % +\def\p@updatecon{\nobreak\writenewclefs\nobreak\writenewsignatures +\z@suspend\preprmorceau}% + % + %\check + % +\def\n@leftrepeat{\gluebrule +\nobreak\writenewclefs +\discretionary{\newbar}% + %\check 1 +{\hbox{\portees\writeclefs\everystaff\Writesignatures}% +\l@eftrepeat\hbox{\writemeters}}% + %\check 1 +{\l@eftrepeat}\nobreak\writemeters\zgluearule +\save@all\setnormalhyphen}% + % + %\check + % +\def\n@leftrightrepeat{\gluebrule +\nobreak\writenewclefs + % +\discretionary{\setrightrepeat\newbar}% + %\check 1 +{\hbox{\portees\writeclefs\everystaff\Writesignatures +\l@eftrepeat\writemeters}}% + %\check 1 +{\l@eftrightrepeat}\nobreak\writemeters\zgluearule +\save@all\setnormalhyphen}% + % +\def\t@leftrepeat{\c@ountbar + \ifnum\barsinline<\maxbarsinline\relax\setleftrepeat\x@barre +\else + \c@ountline + \ifnum\linesinpage<\maxlinesinpage\l@leftrepeat + \else\p@leftrepeat +\fi\fi}% + % + %\check + % +\def\t@leftrightrepeat{\c@ountbar + \ifnum\barsinline<\maxbarsinline\relax\setleftrightrepeat\x@barre +\else + \c@ountline + \ifnum\linesinpage<\maxlinesinpage\l@leftrightrepeat + \else\p@leftrightrepeat +\fi\fi}% + % + %\check + % +\def\l@leftrepeat{\suspmorceau + \reprmorceau\l@eftrepeat}% + % +\def\p@leftrepeat{\suspmorceau + \preprmorceau\l@eftrepeat}% + % + %\check + % +\def\l@leftrightrepeat{\setrightrepeat\suspmorceau + \reprmorceau\l@eftrepeat}% + % +\def\p@leftrightrepeat{\setrightrepeat\suspmorceau + \preprmorceau\l@eftrepeat}% + % +\def\Changeclef{\Changeclefs}\def\Changeclefs{% +\gluebrule\thinvrule\nobreak\hskip 1.2\Internote\nobreak\newbar +\nobreak\writenewclefs\saveclefs}% + %\check +\def\changeclefs{\termskip\writenewclefs\saveclefs}% +\def\zchangeclefs{\termskip\zwritenewclefs\saveclefs}% + %\check + %************************************************************************** + % les notes proprement dites + %************************************************************************** +\def\vnotes#1\elemskip{\noteskip=#1\elemskip \n@otes}% +\def\hardnotes#1\notes{\noteskip=#1\relax \n@otes} +\def\znotes{\noteskip=\z@\n@otes}% +\def\multnoteskip#1{\noteskip=#1\noteskip\relax}% +\def\scalenoteskip{1.0}% + % + %\check + % +\def\enotes{\e@notes}% + % +\newdimen\n@skip +\def\skip@n{\hskip \n@skip}% +\def\skip@b{\hskip \brace@w\global\advance\x@skip by\brace@w}% + % +\def\upd@sk{\nobreak\skip@n\global\advance\x@skip by\n@skip\nobreak}% + % +\def\nextstaff{\endstaff\beginstaff}% +\def\nextinstrument{\endinstrument\begininstrument}% + % +\def\n@otes{\def|{\nextstaff}\def&{\nextinstrument}\normaltranspose=\transpose +\multnoteskip{\scalenoteskip}\check@nopen +\global\advance\notes@open by 1\relax\upd@sk +\def\rq{\rq@}\def\lq{\lq@}\def\ds{\demisoupir}\relax +\locx@skip=\x@skip +\global\n@skip=\noteskip +\global\noinstrument=0\relax +\begininstrument}% + % + %\check +\def\begininstrument{\global\advance\noinstrument by 1\relax +\selectinstr\resetstem +\ifdim\internote<0.76\Internote\csname set@tinynotesize\endcsname + \computespecifics +\else\ifdim\internote<0.95\Internote\csname set@smallnotesize\endcsname + \computespecifics + \else\csname currentsize\endcsname\fi +\fi +\global\noportee=0\relax\beginstaff +}% + %\check + % +\def\endinstrument{\endstaff}% + %\check + % +\def\beginstaff{\alt@comp + \n@portee + \edef\get@ref{\noexpand\get@refs\the\cleftoks{}{}{}{}}\relax\get@ref + \setbox\n@otebox=\hbox\bgroup\computeqn@w + \locx@skip=\x@skip }% + %\check + % +\def\endstaff{\egroup + \ifdim\n@skip<\wd\n@otebox \global\n@skip=\wd\n@otebox + \fi + \nobreak\raise\altportee\rlap{\unhbox\n@otebox}\nobreak}% + % + %\check + % +\def\e@notes{\global\notes@open=0\relax\endinstrument +\ifdim\n@skip<\noteskip \showthe\noteskip\showthe\n@skip +\global\n@skip=\noteskip +\fi}% + % + %\check + % +\def\shortstems{\def\stemfactor{4.00}} +\def\normalstems{\def\stemfactor{4.66}} +\normalstems + % queue de note vers le bas +\def\p@tail{\global\advance\st@bot by -\stemfactor\interbeam\global\stem@skip=\z@ +\minst@bot\pd@tail}% + % queue de note vers le haut +\def\d@tail{\global\advance\st@top by \stemfactor\interbeam\maxst@top\pd@tail}% +\def\minst@bot{\global\advance\st@bot by -\altportee + \ifdim\st@bot>2\Interligne \global\st@bot=2\Interligne\fi + \global\advance\st@bot by \altportee} +\def\maxst@top{\global\advance\st@top by -\altportee + \ifdim\st@top<2\Interligne \global\st@top=2\Interligne\fi + \global\advance\st@top by \altportee} + % + %\check + %\def\pd@tail{\global\advance\st@top by -\st@bot + % \ifdim\st@top>\p@\global\advance\st@bot by -\altportee + % \raise\st@bot\rlap{\kern\stem@skip\vrule height\st@top width \lthick}\fi + % \resetstem}% + %\check +\def\pd@tail{\ifdim\st@top>\st@bot + \global\advance\st@bot by -\altportee + \global\advance\st@top by -\altportee + \kern\stem@skip + \vrule height\st@top depth -\st@bot width \lthick + \kern-\stem@skip + \kern-\lthick +\fi \resetstem}% + %\check +\def\resetstem{\global\st@bot=99cm\global\st@top=-\st@bot}% + % +\def\setstem{{\advance\y@i by -\n@raise \advance\y@i by \altportee +\ifdim\st@bot>\y@i\global\st@bot=\y@i\fi +\ifdim\st@top<\y@i\global\st@top=\y@i\fi}}% + % + %\check + % + % sequence de placement d'un caractere a une position dans la portee +\def\pl@note{\pl@base \advance\y@i by \n@raise}% +\def\pl@base{\y@i=\n@i\internote}% + % + % lignes supplementaires pour \n@i (position) + % +\newcount\h@lnlv +\newdimen\hlp@width +\newdimen\h@lineup +\newdimen\h@linedn + %\def\h@linei{\raise\h@lnlv\internote + % \llap{\vdlthick width 1.6\hlp@width height \hlthick + % \kern -1.3\hlp@width}}% +\def\h@linei{\h@lineup=\h@lnlv\internote +\h@linedn=\h@lineup +\advance\h@lineup by \hlthick +\advance\h@linedn by -\hlthick +\kern -0.3\hlp@width +\vrule height \h@lineup depth -\h@linedn width 1.6\hlp@width +\kern -1.3\hlp@width}% + %\check + % +\def\h@linesqn{\h@lines{\qn@width}}% +\def\adv@locx@mqn{\advance\locx@skip by -\qn@width}% + % +\def\h@lines#1{% +\ifnum\stafflinesnb>3 % no help lines for percussion instruments + \hlp@width=#1\h@lnlv=0\relax + \loop\advance\h@lnlv by -1\relax + \ifnum\n@i<\h@lnlv\relax\advance\h@lnlv by -1\relax + \ifnum\h@lnlv<-20\relax\showthe\h@lnlv\fi + \h@linei\repeat +% \h@lnlv=8\relax +\h@lnlv=\stafflinesnb\relax +\advance\h@lnlv\stafflinesnb\relax +\advance\h@lnlv -2\relax +\loop\advance\h@lnlv by 1\relax + \ifnum\n@i>\h@lnlv\relax\advance\h@lnlv by 1\relax + \ifnum\h@lnlv>30\relax\showthe\h@lnlv\fi + \h@linei\repeat +\fi}% + %\check + % *********** les symboles de notes ou assimiles **************** + % + % placement + % +\newcount\inh@alt +\def\getn@i{\global\inh@alt=0\relax\xgetn@i}% + % +\def\inhgetn@i{\global\inh@alt=1\relax\xgetn@i}% + % +\def\xgetn@i#1{\n@i=9999\relax % par defaut +\edef\t@ruc{\f@tok #1\noexpand\relax\af@tok}\ifcat a\t@ruc\relax +\getn@iletter{#1}% +\else\getn@inonlet{#1}% \ifcat pas lettre +\fi\global\n@raise=\z@}% % +\def\getn@inonlet#1{\edef\ss@uite{}\edef\s@uite{\s@tok #1{}\af@tok}% +\edef\alt@suite{}\ifcat 1\t@ruc\relax +\t@rucfig{#1}% cas active character dont chiffre +\else\t@rucexpcar{#1}% +\fi\alt@suite}% fi du \ifcat 1 + %\check + % analysis of accidentals within collective note coding +\def\absoluteaccidentals{\def\Xna{\na}\def\Xsh{\sh}\def\Xfl{\fl}% +\def\Xdsh{\dsh}\def\Xdfl{\dfl}}% +\absoluteaccidentals + % +\def\t@rucexpcar#1{\if ^\t@ruc\relax + \edef\alt@suite{\ifnum + \inh@alt=0\relax\noexpand\Xsh{\s@uite}\fi + \noexpand\getn@i{\s@uite}}\fi + \if _\t@ruc\relax + \edef\alt@suite{\ifnum + \inh@alt=0\relax\noexpand\Xfl{\s@uite}\fi + \noexpand\getn@i{\s@uite}}\fi}% + %\check +\def\t@rucfig#1{\if=\t@ruc\relax + \edef\alt@suite{\ifnum + \inh@alt=0\relax\noexpand\Xna{\s@uite}\fi + \noexpand\getn@i{\s@uite}}\fi +\if*\t@ruc\relax + \sk + \edef\alt@suite{\noexpand\getn@i{\s@uite}}\fi +\if.\t@ruc\relax + \edef\alt@suite{\ifnum + \inh@alt=0\relax\noexpand\pt{\s@uite}\fi + \noexpand\getn@i{\s@uite}}\fi +\if>\t@ruc\relax + \edef\alt@suite{\ifnum + \inh@alt=0\relax\noexpand\Xdsh{\s@uite}\fi + \noexpand\getn@i{\s@uite}}\fi +\if<\t@ruc\relax + \edef\alt@suite{\ifnum + \inh@alt=0\relax\noexpand\Xdfl{\s@uite}\fi + \noexpand\getn@i{\s@uite}}\fi +\if!\t@ruc\relax + \transpose=\normaltranspose\relax + \edef\alt@suite{\noexpand\getn@i{\s@uite}}\fi +\if'\t@ruc\relax + \advance\transpose by 7\relax + \edef\alt@suite{\noexpand\getn@i{\s@uite}}\fi +\if`\t@ruc\relax + \advance\transpose by -7\relax + \edef\alt@suite{\noexpand\getn@i{\s@uite}}% +\else \if -\t@ruc\relax\n@i=#1\relax\fi + \if 1\t@ruc\relax\n@i=#1\relax\fi + \if 2\t@ruc\relax\n@i=#1\relax\fi + \if 3\t@ruc\relax\n@i=#1\relax\fi + \if 4\t@ruc\relax\n@i=#1\relax\fi + \if 5\t@ruc\relax\n@i=#1\relax\fi + \if 6\t@ruc\relax\n@i=#1\relax\fi + \if 7\t@ruc\relax\n@i=#1\relax\fi + \if 8\t@ruc\relax\n@i=#1\relax\fi + \if 9\t@ruc\relax\n@i=#1\relax\fi + \if 0\t@ruc\relax\n@i=#1\relax\fi +\fi}% + %\check + % +\def\getn@iletter#1{\n@i=\expandafter`\t@ruc\relax +\ifnum\n@i >96\relax \advance\n@i by -101\relax % ramener au E (position + % zero en clef de sol, ut@ref=0) +\else\advance\n@i by -83\relax % ramener au S= E + 14 +\fi +\advance\n@i by \ut@ref\relax +\advance\n@i by \ut@ref\relax +\advance\n@i by \transpose\relax +\edef\s@uite{\s@tok #1{}\af@tok}\edef\ss@uite{\noexpand\n@fon{\s@uite}}}% + %\check + % +\def\pt@raise{\ifodd\n@i\relax\pt@up=-0.1\Interligne\else\pt@up +=0.3\Interligne\fi +\advance\pt@up by -\n@raise\raise\pt@up}% + % +\def\lcharnote#1#2{\getn@i{#1}\pl@llap{#2}}% +\def\ccharnote#1#2{\getn@i{#1}\pl@lrlap{#2}}% + % +\def\bigaccid{\def\small@test{\noteskip>-1\p@}}% +\def\smallaccid{\def\small@test{\noteskip>9999\p@}}% +\def\varaccid{\def\small@test{\noteskip>1.9\qn@width}}% +\def\k@eiqdskip{\kern 0.8\qd@skip} +\def\k@meiqdskip{\kern -0.8\qd@skip} + % +\varaccid % accidents de taille variable + %\check +\def\lfl#1{\getn@i{#1}\global\n@raise=\fl@raise + \pl@llap{\ifdim\small@test\f@lat\else\smallf@lat\fi\k@eiqdskip}}% + %\check +\def\ldfl#1{\getn@i{#1}\global\n@raise=\fl@raise + \pl@llap{\ifdim\small@test\df@lat\else\smalldf@lt\fi\k@eiqdskip}}% + %\check +\def\lsh#1{\getn@i{#1}\global\n@raise=\sh@raise + \pl@llap{\ifdim\small@test\s@harp\else\smalls@harp\fi\k@eiqdskip}}% +\def\ldsh#1{\getn@i{#1}\global\n@raise=\z@ + \pl@llap{\ifdim\small@test\ds@harp\else\smallds@harp\fi\k@eiqdskip}}% + %\check +\def\lna#1{\getn@i{#1}\global\n@raise=\na@raise + \pl@llap{\ifdim\small@test\n@at\else\smalln@at\fi\k@eiqdskip}}% + %\check +\def\pl@llap{\pl@note\raise\y@i\llap}% +\def\pl@lrlap{\pl@note\raise\y@i\lrlap}% +\def\lrlap#1{\rlap{\hss#1}}% +\def\uplap#1{\vbox to\z@{\vss#1}} + %**************** notes (sans queue) ******************* + % +\def\xcharnote#1#2#3{\getn@i{#2}\pl@base + \raise\y@i\hbox to #1{#3\hss}\advance\locx@skip by #1\relax}% + %\check + % +\def\raise@note{\advance\locx@skip by\noteskip\raise\y@i\hbox to \noteskip}% + % + % rondes sous diverses formes + % + % ronde decalee a gauche (sans avance) +\def\lw#1{\kern -\wd@skip\zw{#1}\kern \wd@skip}% + % + % ronde decalee a droite (sans avance) +\def\rw#1{\kern \wd@skip\zw{#1}\kern -\wd@skip}% + %\check + % ronde sans avance +\def\zw#1{\getn@i{#1}\def\n@fon{\zw}\def\n@sym{\w@h}\g@zw}% +\def\zwp#1{\getn@i{#1}\def\n@fon{\zwp}\def\n@sym{\w@hp}\g@zw}% +\def\zwpp#1{\getn@i{#1}\def\n@fon{\zwpp}\def\n@sym{\w@hpp}\g@zw}% +\def\zwppp#1{\getn@i{#1}\def\n@fon{\zwppp}\def\n@sym{\w@hppp}\g@zw}% +\def\g@zw{\advancefalse\g@w}% + %\check + % +\def\phpause{\hbox to \noteskip{\vrule width + 1.2\qn@width height \internote\hss}}% +\def\pause{\hbox{\raise 5\internote\phpause}\advance\locx@skip by \noteskip}% +\def\hpause{\hbox{\raise 4\internote\phpause}\advance\locx@skip by \noteskip}% +\def\demisoupir{\hbox to \noteskip{\d@soup\hss}\advance\locx@skip by \noteskip}% +\def\qp{\hbox to \noteskip{\s@oupir\hss}\advance\locx@skip by \noteskip}% +\def\soupir{\qp}% +\def\dsoupir{\demisoupir}% + % quart de soupir +\def\qs{\hbox to \noteskip{\q@soup\hss}% +\advance\locx@skip by \noteskip}% +\def\qsoupir{\qs}% +\def\quartsoupir{\qs}% + % huitieme de soupir +\def\hs{\hbox to \noteskip{\h@soup\hss}% +\advance\locx@skip by \noteskip}% +\def\hsoupir{\hs}% +\def\huitsoupir{\hs}% + % seizieme de soupir +\def\qqs{\hbox to \noteskip{\s@soup\hss}% +\advance\locx@skip by \noteskip}% +\def\seizsoupir{\qqs}% + %\check +\def\pl@noteq{\pl@note \setstem + \ifdim\noteskip>\z@ + \ifdim\st@bot<29cm + \s@tem + \fi + \fi +}% + % +\def\Ped{{\cmsy P\kern -1\p@\it ed.}}% +\def\PED{\rlap{\zcharnote{-5}{\kern -2\p@\Ped}}}% +\def\DEP{\rlap{\zcharnote{-7}{\kern 0.5\noteskip\kern -4\p@\moyen *}}}% + %\check +\def\pl#1{\zcharnote{#1}{\raise 2\p@ \rlap{\ttyeight +}}}% +\def\pointdorgue#1{\zcharnote{#1}{\raise \Interligne\p@orgue}}% +\def\pointdurgue#1{\zcharnote{#1}{\raise-\Interligne\p@urgue}}% +\def\ntrille#1#2{\zcharnote{#1}{\trille{#2\elemskip}}}% +\def\nTrille#1#2{\zcharnote{#1}{\Trille{#2\elemskip}}}% +\def\xtrille#1#2{\zcharnote{#1}{\trille{#2}}}% +\def\xTrille#1#2{\zcharnote{#1}{\Trille{#2}}}% + % +\def\pt#1{\inhgetn@i{#1}\def\n@fon{\pt}\def\n@sym{\z@p}\g@pt} +\def\ppt#1{\inhgetn@i{#1}\def\n@fon{\ppt}\def\n@sym{\z@pp}\g@pt} +\def\pppt#1{\inhgetn@i{#1}\def\n@fon{\pppt}\def\n@sym{\z@ppp}\g@pt} +\def\g@pt{\n@raiseq \pl@note\raise\y@i\rlap{\n@sym}\fi}% + % +\def\n@raiseq{\global\n@raise=\qu@raise\ifnum\n@i<100\relax} + % + %\check + % + % blanche sans queue decalee a gauche + % blanche pointee sans queue + % blanche decalee a gauche +\def\lh#1{\kern -\hd@skip\zh{#1}\kern \hd@skip}% + % blanche decalee a droite sans queue +\def\rh#1{\kern \hd@skip\zh{#1}\kern -\hd@skip}% + % blanche sans queue ni avance +\def\zh#1{\getn@i{#1}\def\n@fon{\zh}\def\n@sym{\h@a}\g@zh} +\def\zhp#1{\getn@i{#1}\def\n@fon{\zhp}\def\n@sym{\h@ap}\g@zh} +\def\zhpp#1{\getn@i{#1}\def\n@fon{\zhpp}\def\n@sym{\h@app}\g@zh} +\def\zhppp#1{\getn@i{#1}\def\n@fon{\zhppp}\def\n@sym{\h@appp}\g@zh} +\def\g@zh{\global\n@raise=\ha@raise\global\n@width=\hn@width\g@z}% +\def\g@z{\ifnum\n@i<100\relax + \h@lines{\n@width}\pl@note\setstem\rlap@symss\fi}% + % + % noires sans queues + % +\def\zq#1{\getn@i{#1}\def\n@fon{\zq}\def\n@sym{\q@u}\g@zq} +\def\zqp#1{\getn@i{#1}\def\n@fon{\zqp}\def\n@sym{\q@up}\g@zq} +\def\zqpp#1{\getn@i{#1}\def\n@fon{\zqpp}\def\n@sym{\q@upp}\g@zq} +\def\zqppp#1{\getn@i{#1}\def\n@fon{\zqppp}\def\n@sym{\q@uppp}\g@zq} +\def\g@zq{\global\n@raise=\qu@raise\global\n@width=\qn@width\g@z}% + % + %\check +\def\rq@#1{\kern \qd@skip\zq{#1}\kern -\qd@skip}% +\def\lq@#1{\kern -\qd@skip\zq{#1}\kern \qd@skip}% + % *********************** notes avec queue ********************** + % + %\check +\def\qu{\advancetrue\qu@z}% +\def\qup{\advancetrue\qup@z}% +\def\qupp{\advancetrue\qupp@z}% +\def\quppp{\advancetrue\quppp@z}% +\def\qu@z#1{\getn@i{#1}\def\n@fon{\qu}\def\n@sym{\q@u}\g@qu}% +\def\qup@z#1{\getn@i{#1}\def\n@fon{\qup}\def\n@sym{\q@up}\g@qu}% +\def\qupp@z#1{\getn@i{#1}\def\n@fon{\qupp}\def\n@sym{\q@upp}\g@qu}% +\def\quppp@z#1{\getn@i{#1}\def\n@fon{\quppp}\def\n@sym{\q@uppp}\g@qu}% + %\check +\def\g@qu{\n@raiseq + \global\stem@skip=\qd@skip\def\s@tem{\d@tail}\g@qbh@\fi}% + % +\def\q@up{\hbox to \qn@width{\q@u\hss}\P@t}% +\def\q@upp{\hbox to \qn@width{\q@u\hss}\PP@t}% +\def\q@uppp{\hbox to \qn@width{\q@u\hss}\PPP@t}% +\def\h@ap{\hbox to \hn@width{\h@a\hss}\P@t}% +\def\h@app{\hbox to \hn@width{\h@a\hss}\PP@t}% +\def\h@appp{\hbox to \hn@width{\h@a\hss}\PPP@t}% +\def\w@hp{\hbox to \wn@width{\w@h\hss}\P@t}% +\def\w@hpp{\hbox to \wn@width{\w@h\hss}\PP@t}% +\def\w@hppp{\hbox to \wn@width{\w@h\hss}\PPP@t}% + % +\def\z@p{\kern \qn@width\P@t}\def\z@pp{\kern \qn@width\PP@t}% +\def\z@ppp{\kern \qn@width \PPP@t}% + %\check +\def\rqu#1{\getn@i{#1}\def\n@fon{\qu}\def\n@sym{\kern \qd@skip\q@u}% + \n@raiseq + \kern \qd@skip \h@linesqn\kern -\qd@skip + \global\stem@skip=\qd@skip\def\s@tem{\d@tail}\pl@symss\fi}% + %\check + % noire queue en haut sans avance +\def\zqu{\advancefalse\qu@z}% +\def\zqup{\advancefalse\qup@z}% +\def\zqupp{\advancefalse\qupp@z}% +\def\zquppp{\advancefalse\quppp@z}% + % + % espace vide d'une note +\def\off#1{\advance\locx@skip by #1\kern #1}% +\def\sk{\off\noteskip}% +\def\qsk{\off\qn@width}% +\def\hqsk{\off{0.5\qn@width}}% +\def\hsk{\off\hn@width}% + \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 1} +\def\loff{\loffset 1} +%\check +\def\lqu#1{\kern -\qd@skip\zqu{#1}\kern \qd@skip}% + %\check + % noires queue en base +\def\ql{\advancetrue\ql@z}% +\def\qlp{\advancetrue\qlp@z}% +\def\qlpp{\advancetrue\qlpp@z}% +\def\qlppp{\advancetrue\qlppp@z}% +\def\ql@z#1{\getn@i{#1}\def\n@fon{\ql}\def\n@sym{\q@u}\g@ql}% +\def\qlp@z#1{\getn@i{#1}\def\n@fon{\qlp}\def\n@sym{\q@up}\g@ql}% +\def\qlpp@z#1{\getn@i{#1}\def\n@fon{\qlpp}\def\n@sym{\q@upp}\g@ql}% +\def\qlppp@z#1{\getn@i{#1}\def\n@fon{\qlppp}\def\n@sym{\q@uppp}\g@ql}% +\def\g@ql{\n@raiseq + \def\s@tem{\p@tail}\g@qbh@\fi}% + % + % la meme sans avance +\def\zql{\advancefalse\ql@z}% +\def\zqlp{\advancefalse\qlp@z}% +\def\zqlpp{\advancefalse\qlpp@z}% +\def\zqlppp#1{\advancefalse\qlppp@z}% + %\check + % decalees a gauche et a droite +\def\lql#1{\kern -\qd@skip\zql{#1}\kern \qd@skip}% +\def\rql#1{\kern \qd@skip\zql{#1}\kern -\qd@skip}% + % + % croches, doubles croches, triples croches, quadruple croches queue en + % haut et en bas + % +\def\clp{\advancetrue\mclp1}\def\cup{\advancetrue\mcup1}% +\def\clpp{\advancetrue\mclpp1}\def\cupp{\advancetrue\mcupp1}% +\def\clppp{\advancetrue\mclppp1}\def\cuppp{\advancetrue\mcuppp1}% + % +\def\zclp{\advancefalse\mclp1}\def\zcup{\advancefalse\mcup1}% +\def\zclpp{\advancefalse\mclpp1}\def\zcupp{\advancefalse\mcupp1}% +\def\zclppp{\advancefalse\mclppp1}\def\zcuppp{\advancefalse\mcuppp1}% + % +\def\cu{\advancetrue\mcu1}\def\ccu{\advancetrue\mcu2} +\def\cccu{\advancetrue\mcu3}\def\ccccu{\advancetrue\mcu4}% +\def\cl{\advancetrue\mcl1}\def\ccl{\advancetrue\mcl2} +\def\cccl{\advancetrue\mcl3}\def\ccccl{\advancetrue\mcl4}% + % +\def\zcu{\advancefalse\mcu1}\def\zccu{\advancefalse\mcu2}% +\def\zcccu{\advancefalse\mcu3}\def\zccccu{\advancefalse\mcu4}% +\def\zcl{\advancefalse\mcl1}\def\zccl{\advancefalse\mcl2}% +\def\zcccl{\advancefalse\mcl3}\def\zccccl{\advancefalse\mcl4}% + % +\def\mcu#1#2{\getn@i{#2}\def\n@sym{\q@u}% +\edef\n@fon{\noexpand\mcu #1}\g@cu{#1}} +\def\mcup#1#2{\getn@i{#2}\def\n@sym{\q@up}% +\edef\n@fon{\noexpand\mcup #1}\g@cu{#1}} +\def\mcupp#1#2{\getn@i{#2}\def\n@sym{\q@upp}% +\edef\n@fon{\noexpand\mcupp #1}\g@cu{#1}} +\def\mcuppp#1#2{\getn@i{#2}\def\n@sym{\q@uppp}% +\edef\n@fon{\noexpand\mcupp #1}\g@cu{#1}} +\def\g@cu#1{\n@raiseq + \h@linesqn\global\stem@skip=\qd@skip + \def\s@tem{\d@cr#1}\pl@symssq\fi}% +\def\mcl#1#2{\getn@i{#2}\def\n@sym{\q@u}% +\edef\n@fon{\noexpand\mcl #1}\g@cl{#1}} +\def\mclp#1#2{\getn@i{#2}\def\n@sym{\q@up}% +\edef\n@fon{\noexpand\mclp #1}\g@cl{#1}} +\def\mclpp#1#2{\getn@i{#2}\def\n@sym{\q@upp}% +\edef\n@fon{\noexpand\mclpp #1}\g@cl{#1}} +\def\mclppp#1#2{\getn@i{#2}\def\n@sym{\q@uppp}% +\edef\n@fon{\noexpand\mclppp #1}\g@cl{#1}} +\def\g@cl#1{\n@raiseq + \h@linesqn\def\s@tem{\p@cr#1}\pl@symssq\fi}% + % + % ronde +\def\wh#1{\getn@i{#1}\def\n@fon{\wh}\def\n@sym{\w@h}\g@wh}% +\def\whp#1{\getn@i{#1}\def\n@fon{\whp}\def\n@sym{\w@hp}\g@wh}% +\def\whpp#1{\getn@i{#1}\def\n@fon{\whpp}\def\n@sym{\w@hpp}\g@wh}% +\def\whppp#1{\getn@i{#1}\def\n@fon{\whppp}\def\n@sym{\w@hppp}\g@wh}% +\def\g@wh{\advancetrue\g@w}% +\def\g@w{\global\n@raise=\wh@raise\ifnum\n@i<100\relax + \h@lines{\wn@width}\def\s@tem{\resetstem}\pl@symssq\fi}% + %\check +\def\zwh#1{\getn@i{#1}\def\n@fon{\wh}\def\n@sym{\w@h}\rlap{\g@wh}}% + % + % blanche sans queue isolee +\def\nh#1{\getn@i{#1}\def\n@fon{\nh}\def\n@sym{\h@a}\g@nh}% +\def\g@nh{\advancetrue\g@nhz}% +\def\g@nhz{\global\n@raise=\ha@raise\ifnum\n@i<100\relax + \h@lines{\hn@width}\def\s@tem{\resetstem}\pl@symssq\fi}% +\def\znh#1{\getn@i{#1}\def\n@fon{\nh}\def\n@sym{\h@a}\rlap{\g@nhz}}% + % + % noiree sans queue isolee +\def\nq#1{\getn@i{#1}\def\n@fon{\nq}\def\n@sym{\q@u}\g@nq}% +\def\g@nq{\advancetrue\g@nqz}% +\def\g@nqz{\global\n@raise=\qu@raise\ifnum\n@i<100\relax + \h@lines{\hn@width}\def\s@tem{\resetstem}\pl@symssq\fi}% +\def\znq#1{\getn@i{#1}\def\n@fon{\nq}\def\n@sym{\q@u}\rlap{\g@nqz}}% + % + % blanche avec queue +\def\ha{\hu}% +\def\hu#1{\getn@i{#1}\def\n@fon{\hu}\def\n@sym{\h@a}\g@hu}% +\def\hup#1{\getn@i{#1}\def\n@fon{\hup}\def\n@sym{\h@ap}\g@hu}% +\def\hupp#1{\getn@i{#1}\def\n@fon{\hupp}\def\n@sym{\h@app}\g@hu}% +\def\huppp#1{\getn@i{#1}\def\n@fon{\huppp}\def\n@sym{\h@appp}\g@hu}% +\def\g@hu{\advancetrue\g@huz}% +\def\g@huz{\global\n@raise=\ha@raise\ifnum\n@i<100\relax + \h@lines{\hn@width}\global\stem@skip=\hd@skip + \def\s@tem{\d@tail}\pl@symssq\fi}% + % + %\check +\def\rhu#1{\getn@i{#1}\def\n@fon{\hu}\global\n@raise=\ha@raise +\def\n@sym{\kern \hd@skip\h@a}% +\ifnum\n@i<100\relax + \kern \hd@skip + \h@lines{\hn@width}\kern -\hd@skip + \global\stem@skip=\hd@skip\def\s@tem{\d@tail}\pl@symss\fi}% + %\check + % blanche avec queue sans avance +\def\zhu#1{\getn@i{#1}\def\n@fon{\hu}\def\n@sym{\h@a}\g@zhu}% +\def\zhup#1{\getn@i{#1}\def\n@fon{\hup}\def\n@sym{\h@ap}\g@zhu}% +\def\zhupp#1{\getn@i{#1}\def\n@fon{\hupp}\def\n@sym{\h@app}\g@zhu}% +\def\zhuppp#1{\getn@i{#1}\def\n@fon{\huppp}\def\n@sym{\h@appp}\g@zhu}% +\def\g@zhu{\advancefalse\g@huz}% + %\check +\def\lhu#1{\kern -\hn@width\zhu{#1}\kern \hn@width}% + % + % + % blanches queue en bas +\def\hl#1{\getn@i{#1}\def\n@fon{\hl}\def\n@sym{\h@a}\g@hl}% +\def\hlp#1{\getn@i{#1}\def\n@fon{\hlp}\def\n@sym{\h@ap}\g@hl}% +\def\hlpp#1{\getn@i{#1}\def\n@fon{\hlpp}\def\n@sym{\h@app}\g@hl}% +\def\hlppp#1{\getn@i{#1}\def\n@fon{\hlppp}\def\n@sym{\h@appp}\g@hl}% +\def\g@hl{\advancetrue\g@hlz}% +\def\g@hlz{\global\n@raise=\ha@raise\ifnum\n@i<100\relax + \h@lines{\hn@width}\def\s@tem{\p@tail}\pl@symssq\fi}% + %\check +\def\zhl#1{\getn@i{#1}\def\n@fon{\hl}\def\n@sym{\h@a}\rlap{\g@zhl}}% +\def\zhlp#1{\getn@i{#1}\def\n@fon{\hlp}\def\n@sym{\h@ap}\rlap{\g@zhl}}% +\def\zhlpp#1{\getn@i{#1}\def\n@fon{\hlpp}\def\n@sym{\h@app}\rlap{\g@zhl}}% +\def\zhlppp#1{\getn@i{#1}\def\n@fon{\hlppp}\def\n@sym{\h@appp}\rlap{\g@zhl}}% +\def\g@zhl{\advancefalse\g@hlz}% + %\check +\def\rhl#1{\kern \hd@skip\zhl{#1}\kern -\hd@skip}% +\def\lhl#1{\kern -\hn@width\zhl{#1}\kern \hn@width}% + %\check + %**************** initialisation de poutres ****************** + % \ibu{0<numero<10}{altitude~note}{pente de -9 a +9} + % \ibl{0<numero<10}{altitude~note}{pente de -9 a +9} + % +\def\selectpoutre#1{{\n@i=#1\relax + \ifnum\n@i<0\relax\n@i=29\relax\fi + \advance\n@i by 1\relax +\xdef\b@x{\csname b@x\romannumeral\n@i\endcsname}% +\xdef\b@z{\csname b@z\romannumeral\n@i\endcsname}% +\xdef\bb@x{\csname bb@x\romannumeral\n@i\endcsname}% +\xdef\bb@z{\csname bb@z\romannumeral\n@i\endcsname}% +\xdef\bbb@x{\csname bbb@x\romannumeral\n@i\endcsname}% +\xdef\bbb@z{\csname bbb@z\romannumeral\n@i\endcsname}% +\xdef\bbbb@x{\csname bbbb@x\romannumeral\n@i\endcsname}% +\xdef\bbbb@z{\csname bbbb@z\romannumeral\n@i\endcsname}% +\xdef\bbbbb@x{\csname bbbbb@x\romannumeral\n@i\endcsname}% +\xdef\bbbbb@z{\csname bbbbb@z\romannumeral\n@i\endcsname}% +\xdef\b@n{\csname b@n\romannumeral\n@i\endcsname}% +\xdef\b@p{\csname b@p\romannumeral\n@i\endcsname}}\s@lopdefs}% + % fin selectpoutre + % +\def\ibu#1{\selectpoutre{#1}\i@bu}% +\def\i@bu#1#2{\ifnum\b@n=0\relax\else\t@bu\fi + \global\b@n=-1\relax + \global\b@x=\locx@skip + \global\advance\b@x by \qd@skip\inhgetn@i{#1}\pl@base + \global\b@z=\y@i\global\advance\b@z by\altportee\global\b@p=#2\relax + \global\advance\b@z by 4.333\interbeam}% + % +\def\ibl#1{\selectpoutre{#1}\i@bl}% +\def\i@bl#1#2{\ifnum\b@n=0\relax\else\t@bl\fi + \global\b@n=1\relax + \global\b@x=\locx@skip\inhgetn@i{#1}\pl@base + \global\b@z=\y@i\global\advance\b@z by \altportee\global\b@p=#2\relax + \global\advance\b@z by -4.333\interbeam}% + %\check +\def\ibbu#1{\selectpoutre{#1}\i@bbu}% +\def\ibbl#1{\selectpoutre{#1}\i@bbl}% +\def\i@bbu#1#2{\ifnum\b@n=0\relax\i@bu{#1}{#2}\relax\global\advance\b@z by + \interbeam\fi\n@bbu\relax}% +\def\i@bbl#1#2{\ifnum\b@n=0\relax\i@bl{#1}{#2}\relax\global\advance\b@z by + -\interbeam\fi\n@bbl\relax}% +\def\nbbu#1{\selectpoutre{#1}\ifnum\b@n>-2\relax\ifnum\b@n<2\relax\n@bbu\fi +\fi}% +\def\nbbl#1{\selectpoutre{#1}\ifnum\b@n>-2\relax\ifnum\b@n<2\relax\n@bbl\fi +\fi}% +\def\n@bbu{\gl@au{\b@n}\global\bb@z=\b@z + \ifnum\b@n<0\relax\global\advance\bb@z by -\interbeam + \else \global\advance\bb@z by \interbeam + \fi + {\advance\locx@skip by \qd@skip \global\bb@x=\locx@skip + \advance\locx@skip by -\b@x + \global\advance\bb@z by \s@lope\locx@skip }}% + % +\def\n@bbl{\gl@au{\b@n}\global\bb@x=\locx@skip + \global\advance\bb@x by \lthick + \global\bb@z=\b@z\ifnum\b@n<0\relax\global\advance\bb@z by -\interbeam + \else \global\advance\bb@z by \interbeam \fi + {\advance\locx@skip by -\b@x +\global\advance\bb@z by \s@lope\locx@skip }}% + %\check +\def\ibbbu#1{\selectpoutre{#1}\i@bbbu}% +\def\ibbbl#1{\selectpoutre{#1}\i@bbbl}% +\def\i@bbbu#1#2{\ifnum\b@n=0\relax\i@bbu{#1}{#2}% +\global\advance\b@z by \interbeam +\global\advance\bb@z by \interbeam +\fi\n@bbbu}% +\def\i@bbbl#1#2{\ifnum\b@n=0\relax\i@bbl{#1}{#2}% +\global\advance\b@z by -\interbeam +\global\advance\bb@z by -\interbeam +\fi\n@bbbl}% +\def\nbbbu#1{\selectpoutre{#1}\ifnum\b@n=-1\relax\n@bbu\fi\ifnum\b@n +=1\relax\n@bbu\fi + \ifnum\b@n=-2\relax\n@bbbu\fi\ifnum\b@n=2\relax\n@bbbu\fi +}% +\def\nbbbl#1{\selectpoutre{#1}\ifnum\b@n=-1\relax\n@bbl\fi\ifnum\b@n +=1\relax\n@bbl\fi + \ifnum\b@n=-2\relax\n@bbbl\fi\ifnum\b@n=2\relax\n@bbbl\fi +}% +\def\n@bbbu{\gl@au{\b@n}\global\bbb@z=\b@z + \ifnum\b@n<0\relax\global\advance\bbb@z by -2\interbeam + \else \global\advance\bbb@z by 2\interbeam + \fi + {\advance\locx@skip by \qd@skip\global\bbb@x=\locx@skip + \advance\locx@skip by -\b@x + \global\advance\bbb@z by \s@lope\locx@skip }}% + % +\def\n@bbbl{\gl@au{\b@n}\global\bbb@x=\locx@skip + \global\advance\bbb@x by \lthick + \global\bbb@z=\b@z\ifnum\b@n<0\relax\global\advance\bbb@z by + -2\interbeam + \else \global\advance\bbb@z by 2\interbeam + \fi + {\advance\locx@skip by -\b@x\global\advance\bbb@z by \s@lope\locx@skip }}% + %\check + % +\def\ibbbbu#1{\selectpoutre{#1}\i@bbbbu}% +\def\ibbbbl#1{\selectpoutre{#1}\i@bbbbl}% +\def\i@bbbbu#1#2{\ifnum\b@n=0\relax\i@bbbu{#1}{#2}% +\global\advance\b@z by \interbeam +\global\advance\bb@z by \interbeam +\global\advance\bbb@z by \interbeam +\fi\n@bbbbu}% +\def\i@bbbbl#1#2{\ifnum\b@n=0\relax\i@bbbl{#1}{#2}% +\global\advance\b@z by -\interbeam +\global\advance\bb@z by -\interbeam +\global\advance\bbb@z by -\interbeam +\fi\n@bbbbl}% +\def\nbbbbu#1{\selectpoutre{#1}% + \ifnum\b@n=-1\relax\n@bbu\fi\ifnum\b@n=1\relax\n@bbu\fi + \ifnum\b@n=-2\relax\n@bbbu\fi\ifnum\b@n=2\relax\n@bbbu\fi + \ifnum\b@n=-3\relax\n@bbbbu\fi\ifnum\b@n=3\relax\n@bbbbu\fi +}% +\def\nbbbbl#1{\selectpoutre{#1}% + \ifnum\b@n=-1\relax\n@bbl\fi\ifnum\b@n=1\relax\n@bbl\fi + \ifnum\b@n=-2\relax\n@bbbl\fi\ifnum\b@n=2\relax\n@bbbl\fi + \ifnum\b@n=-3\relax\n@bbbbl\fi\ifnum\b@n=3\relax\n@bbbbl\fi +}% +\def\n@bbbbu{\gl@au{\b@n}\global\bbbb@z=\b@z + \ifnum\b@n<0\relax\global\advance\bbbb@z by -3\interbeam + \else \global\advance\bbbb@z by 3\interbeam + \fi + {\advance\locx@skip by \qd@skip \global\bbbb@x=\locx@skip + \advance\locx@skip by -\b@x + \global\advance\bbbb@z by \s@lope\locx@skip }}% + % +\def\n@bbbbl{\gl@au{\b@n}{\advance\locx@skip by \lthick + \global\bbbb@x=\locx@skip}\global\bbbb@z=\b@z + \ifnum\b@n<0\relax\global\advance\bbbb@z by -3\interbeam + \else \global\advance\bbbb@z by 3\interbeam + \fi + {\advance\locx@skip by -\b@x\global\advance\bbbb@z by \s@lope\locx@skip }}% + %\check + % + % +\def\ibbbbbu#1{\selectpoutre{#1}\i@bbbbbu}% +\def\ibbbbbl#1{\selectpoutre{#1}\i@bbbbbl}% +\def\i@bbbbbu#1#2{\ifnum\b@n=0\relax\i@bbbbu{#1}{#2}% +\global\advance\b@z by \interbeam +\global\advance\bb@z by \interbeam +\global\advance\bbb@z by \interbeam +\global\advance\bbbb@z by \interbeam +\fi\n@bbbbbu}% +\def\i@bbbbbl#1#2{\ifnum\b@n=0\relax\i@bbbbl{#1}{#2}% +\global\advance\b@z by -\interbeam +\global\advance\bb@z by -\interbeam +\global\advance\bbb@z by -\interbeam +\global\advance\bbbb@z by -\interbeam +\fi\n@bbbbbl}% +\def\nbbbbbu#1{\selectpoutre{#1}\ifnum\b@n=-1\relax\n@bbu\fi\ifnum\b@n +=1\relax\n@bbu\fi + \ifnum\b@n=-2\relax\n@bbbu\fi\ifnum\b@n=2\relax\n@bbbu\fi + \ifnum\b@n=-3\relax\n@bbbbu\fi\ifnum\b@n=3\relax\n@bbbbu\fi + \ifnum\b@n=-4\relax\n@bbbbbu\fi\ifnum\b@n=4\relax\n@bbbbbu\fi +}% +\def\nbbbbbl#1{\selectpoutre{#1}\ifnum\b@n=-1\relax\n@bbl\fi\ifnum\b@n +=1\relax\n@bbl\fi + \ifnum\b@n=-2\relax\n@bbbl\fi\ifnum\b@n=2\relax\n@bbbl\fi + \ifnum\b@n=-3\relax\n@bbbbl\fi\ifnum\b@n=3\relax\n@bbbbl\fi + \ifnum\b@n=-4\relax\n@bbbbbl\fi\ifnum\b@n=4\relax\n@bbbbbl\fi +}% +\def\n@bbbbbu{\gl@au{\b@n}\global\bbbbb@z=\b@z + \ifnum\b@n<0\relax\global\advance\bbbbb@z by -4\interbeam + \else \global\advance\bbbbb@z by 4\interbeam + \fi + {\advance\locx@skip by \qd@skip \global\bbbbb@x=\locx@skip + \advance\locx@skip by -\b@x + \global\advance\bbbbb@z by \s@lope\locx@skip }}% + % +\def\n@bbbbbl{\gl@au{\b@n}{\advance\locx@skip by \lthick + \global\bbbbb@x=\locx@skip}\global\bbbbb@z=\b@z + \ifnum\b@n<0\relax\global\advance\bbbbb@z by -4\interbeam + \else \global\advance\bbbbb@z by 4\interbeam + \fi + {\advance\locx@skip by -\b@x\global\advance\bbbbb@z by \s@lope\locx@skip }}% + %\check + % + % terminaison de toutes les poutres en suspens + % + %***** terminer une poutre superieure **************** + %\check + % +\def\tbu#1{\selectpoutre{#1}\t@bu}% +\def\tqh#1{\selectpoutre{#1}\t@qh}% +\def\tbbu#1{\selectpoutre{#1}\t@bbu}% +\def\tbbbu#1{\selectpoutre{#1}\t@bbbu}% +\def\tbbbbu#1{\selectpoutre{#1}\t@bbbbu}% +\def\tbbbbbu#1{\selectpoutre{#1}\t@bbbbbu}% + %\check +\def\t@qh{\t@bu\qh@}% +\def\t@bu{\ifnum\b@n<-1\relax\t@bbu\fi +\ifnum\b@n>1\relax\t@bbu\fi +\y@i=\b@z +\advance\y@i by -\altportee +\y@ii=\locx@skip +\advance\y@ii by \qn@width +\advance\y@ii by -\b@x +\llap{\p@outre\hskip -\qn@width}% +\global\b@n=0\relax}% + % + %\check +\def\t@bbu{\ifnum\b@n<-2\relax\t@bbbu\fi + \ifnum\b@n>2\relax\t@bbbu\fi +\ifnum\b@n=1\relax{\adv@locx@mqn\n@bbu}\fi +\ifnum\b@n=-1\relax{\adv@locx@mqn\n@bbu}\fi +\y@i=\bb@z\y@ii=-\bb@x\t@xbu}% + %\check +\def\t@xbu{\advance\y@i by -\altportee +\advance\y@ii by \locx@skip \advance\y@ii by \qn@width +\llap{\p@outre\hskip -\qn@width}% +\ifnum\b@n>0\relax +\advance\y@i by \s@lope\y@ii\raise\y@i\rlap{\kern\qn@width +\kern -\lthick\vrule height \z@ depth 1.8\internote width \lthick}\fi +\gl@de{\b@n}}% + %\check +\def\t@bbbu{\ifnum\b@n<-3\relax\t@bbbbu\fi + \ifnum\b@n>3\relax\t@bbbbu\fi +\ifnum\b@n=1\relax{\adv@locx@mqn\n@bbu}\fi +\ifnum\b@n=-1\relax{\adv@locx@mqn\n@bbu}\fi +\ifnum\b@n=2\relax{\adv@locx@mqn\n@bbbu}\fi +\ifnum\b@n=-2\relax{\adv@locx@mqn\n@bbbu}\fi +\y@i=\bbb@z\y@ii=-\bbb@x\t@xbu}% + % + %\check +\def\t@bbbbu{\ifnum\b@n<-4\relax\t@bbbbbu\fi + \ifnum\b@n>4\relax\t@bbbbbu\fi +\ifnum\b@n=1\relax{\adv@locx@mqn\n@bbu}\fi +\ifnum\b@n=-1\relax{\adv@locx@mqn\n@bbu}\fi +\ifnum\b@n=2\relax{\adv@locx@mqn\n@bbbu}\fi +\ifnum\b@n=-2\relax{\adv@locx@mqn\n@bbbu}\fi +\ifnum\b@n=3\relax{\adv@locx@mqn\n@bbbbu}\fi +\ifnum\b@n=-3\relax{\adv@locx@mqn\n@bbbbu}\fi +\y@i=\bbbb@z\y@ii=-\bbbb@x\t@xbu}% + %\check +\def\t@bbbbbu{\ifnum\b@n<-5\relax\showthe\b@n\global\b@n=-5\relax\fi +\ifnum\b@n>5\relax\showthe\b@n\global\b@n=5\relax\fi +\ifnum\b@n=1\relax{\adv@locx@mqn\n@bbu}\fi +\ifnum\b@n=-1\relax{\adv@locx@mqn\n@bbu}\fi +\ifnum\b@n=2\relax{\adv@locx@mqn\n@bbbu}\fi +\ifnum\b@n=-2\relax{\adv@locx@mqn\n@bbbu}\fi +\ifnum\b@n=3\relax{\adv@locx@mqn\n@bbbbu}\fi +\ifnum\b@n=-3\relax{\adv@locx@mqn\n@bbbbu}\fi +\ifnum\b@n=4\relax{\adv@locx@mqn\n@bbbbbu}\fi +\ifnum\b@n=-4\relax{\adv@locx@mqn\n@bbbbbu}\fi +\y@i=\bbbbb@z\y@ii=-\bbbbb@x\t@xbu}% + %***** terminer une poutre inferieure**************** +\def\tbl#1{\selectpoutre{#1}\t@bl}% +\def\tqb#1{\selectpoutre{#1}\t@qb}% +\def\tbbl#1{\selectpoutre{#1}\t@bbl}% +\def\tbbbl#1{\selectpoutre{#1}\t@bbbl}% +\def\tbbbbl#1{\selectpoutre{#1}\t@bbbbl}% +\def\tbbbbbl#1{\selectpoutre{#1}\t@bbbbbl}% + % provisoire +\def\t@qb{\t@bl\qb@}% +\def\t@bl{\relax +\ifnum\b@n<-1\relax\t@bbl\fi +\ifnum\b@n>1\relax\t@bbl\fi +\y@i=\b@z +\advance\y@i by -\altportee +\y@ii=\locx@skip +\advance\y@ii by \lthick +\advance\y@ii by -\b@x +\kern\lthick\llap{\p@outre}\kern -\lthick +\global\b@n=0\relax}% + %\check + % +\def\t@bbl{\relax +\ifnum\b@n<-2\relax\t@bbbl\fi +\ifnum\b@n>2\relax\t@bbbl\fi +\ifnum\b@n=1\relax{\adv@locx@mqn\n@bbl}\fi +\ifnum\b@n=-1\relax{\adv@locx@mqn\n@bbl}\fi +\y@i=\bb@z\y@ii=-\bb@x\t@xbl}% + % +\def\t@xbl{\advance\y@i by -\altportee +\advance\y@ii by \locx@skip +\advance\y@ii by \lthick +\kern\lthick\llap{\p@outre}\kern-\lthick +\ifnum\b@n<0\relax\advance\y@i by \s@lope\y@ii +\raise\y@i\rlap{\vrule height \interbeam width \lthick}\fi +\gl@de{\b@n}}% + %\check +\def\t@bbbl{\ifnum\b@n<-3\relax\t@bbbbl\fi + \ifnum\b@n>3\relax\t@bbbbl\fi +\ifnum\b@n=1\relax{\adv@locx@mqn\n@bbl}\fi +\ifnum\b@n=-1\relax{\adv@locx@mqn\n@bbl}\fi +\ifnum\b@n=2\relax{\adv@locx@mqn\n@bbbl}\fi +\ifnum\b@n=-2\relax{\adv@locx@mqn\n@bbbl}\fi +\y@i=\bbb@z\y@ii=-\bbb@x\t@xbl}% + %\check +\def\t@bbbbl{\ifnum\b@n<-4\relax\t@bbbbbl\fi + \ifnum\b@n>4\relax\t@bbbbbl\fi +\ifnum\b@n=1\relax{\adv@locx@mqn\n@bbl}\fi +\ifnum\b@n=-1\relax{\adv@locx@mqn\n@bbl}\fi +\ifnum\b@n=2\relax{\adv@locx@mqn\n@bbbl}\fi +\ifnum\b@n=-2\relax{\adv@locx@mqn\n@bbbl}\fi +\ifnum\b@n=3\relax{\adv@locx@mqn\n@bbbbl}\fi +\ifnum\b@n=-3\relax{\adv@locx@mqn\n@bbbbl}\fi +\y@i=\bbbb@z\y@ii=-\bbbb@x\t@xbl}% + %\check +\def\t@bbbbbl{\relax +\ifnum\b@n<-5\relax\showthe\b@n\global\b@n=-5\relax\fi +\ifnum\b@n>5\relax\showthe\b@n\global\b@n=5\relax\fi +\ifnum\b@n=1\relax{\adv@locx@mqn\n@bbl}\fi +\ifnum\b@n=-1\relax{\adv@locx@mqn\n@bbl}\fi +\ifnum\b@n=2\relax{\adv@locx@mqn\n@bbbl}\fi +\ifnum\b@n=-2\relax{\adv@locx@mqn\n@bbbl}\fi +\ifnum\b@n=3\relax{\adv@locx@mqn\n@bbbbl}\fi +\ifnum\b@n=-3\relax{\adv@locx@mqn\n@bbbbl}\fi +\ifnum\b@n=4\relax{\adv@locx@mqn\n@bbbbbl}\fi +\ifnum\b@n=-4\relax{\adv@locx@mqn\n@bbbbbl}\fi +\y@i=\bbbbb@z\y@ii=-\bbbbb@x\t@xbl}% + %******************** notes accrchees aux poutres + % ************************************ + % +\def\zqh#1{\selectpoutre{#1}\advancefalse\qh@}% +\def\zqb#1{\selectpoutre{#1}\advancefalse\qb@}% +\def\zqhp#1{\selectpoutre{#1}\advancefalse\qhp@}% +\def\zqbp#1{\selectpoutre{#1}\advancefalse\qbp@}% +\def\zqhpp#1{\selectpoutre{#1}\advancefalse\qhpp@}% +\def\zqbpp#1{\selectpoutre{#1}\advancefalse\qbpp@}% + % +\def\qh#1{\selectpoutre{#1}\qh@}% +\def\hh#1{\selectpoutre{#1}\hh@}% +\def\qhp#1{\selectpoutre{#1}\qhp@}% +\def\qhpp#1{\selectpoutre{#1}\qhpp@}% +\def\qhppp#1{\selectpoutre{#1}\qhppp@}% +\def\qh@#1{\getn@i{#1}\def\n@fon{\qh@}\def\n@sym{\q@u}\g@qh@}% % position +\def\hh@#1{\getn@i{#1}\def\n@fon{\hh@}\def\n@sym{\h@a}\g@qh@}% % position +\def\qhp@#1{\getn@i{#1}\def\n@fon{\qhp@}\def\n@sym{\q@up}\g@qh@}% % position +\def\qhpp@#1{\getn@i{#1}\def\n@fon{\qhpp@}\def\n@sym{\q@upp}\g@qh@}% % position +\def\qhppp@#1{\getn@i{#1}\def\n@fon{\qhppp@}\def\n@sym{\q@uppp}\g@qh@}% % + % position +\def\qb#1{\selectpoutre{#1}\qb@}% +\def\hb#1{\selectpoutre{#1}\hb@}% +\def\qbp#1{\selectpoutre{#1}\qbp@}% +\def\qbpp#1{\selectpoutre{#1}\qbpp@}% +\def\qbppp#1{\selectpoutre{#1}\qbppp@}% +\def\qb@#1{\getn@i{#1}\def\n@fon{\qb@}\def\n@sym{\q@u}\g@qb@} % #1 position +\def\hb@#1{\getn@i{#1}\def\n@fon{\hb@}\def\n@sym{\h@a}\g@qb@} % #1 position +\def\qbp@#1{\getn@i{#1}\def\n@fon{\qbp@}\def\n@sym{\q@up}\g@qb@} % #1 position +\def\qbpp@#1{\getn@i{#1}\def\n@fon{\qbpp@}\def\n@sym{\q@upp}\g@qb@} % #1 + % position +\def\qbppp@#1{\getn@i{#1}\def\n@fon{\qbppp@}\def\n@sym{\q@uppp}\g@qb@} % #1 + % position +\def\g@qb@{\n@raiseq + \global\stem@skip=\z@\def\s@tem{\d@balk}\g@qbh@\fi}% + % +\def\g@qh@{\n@raiseq + \global\stem@skip=\qd@skip\def\s@tem{\d@balk}\g@qbh@\fi}% + % +\def\g@qbh@{\h@linesqn\pl@symssq}% + % +\def\pl@symss{\pl@noteq\raise@note{\n@sym\hss}\ss@uite}% +\def\pl@symssq{\ifadvance\pl@symss\else\plap@symss\fi\advancetrue}% + % +\def\rlap@symss{\raise\y@i\rlap{\n@sym}\ss@uite}% +\def\plap@symss{\pl@noteq\rlap@symss}% + % +\def\d@balk{% % queue de note vers une poutre +\y@ii=\b@z % a augmenter avec la pente +\y@v=\locx@skip\advance\y@v by \stem@skip\advance\y@v by -\b@x +\advance\y@ii by \s@lope\y@v +\ifdim\y@ii>\st@top % la poutre est au-dessus + \ifnum\b@n>0\relax\advance\y@ii by \b@n\interbeam + \advance\y@ii by -\interbeam + \fi\global\st@top=\y@ii % a mettre a jour avec la pente ulterieurement +\else + \ifdim\y@ii<\st@bot + \ifnum\b@n<0\relax\advance\y@ii by \b@n\interbeam + \advance\y@ii by \interbeam + \fi\global\st@bot=\y@ii +\fi\fi\pd@tail}% + % + %*********************************** notes sans avancement (accords) +\def\zha#1{{\noteskip=\z@\ha{#1}}}% + % +\def\charnote{\xcharnote{\noteskip}}% +\let\hcharnote\charnote +\def\zcharnote{\xcharnote{\z@}}% + +\def\zchar#1#2{\raise#1\internote\rlap{#2}} +\def\lchar#1#2{\raise#1\internote\llap{#2}} +\def\cchar#1#2{\raise#1\internote\lrlap{#2}} +\let\hchar\zchar + + %\check + % + %************************* liaisons horizontales ************************** + % Tie Fixes. + % I have rewritten several tie macros to eliminate those annoying gaps which + % often appear. The new macros cause ties to be extended with leader, rather + % than lines whose length has to be guessed. TeX cannot make multiple + % horizontal lines with \leaders, so instead I use an \hbox containing + % several short fragments of lines. Each line fragment is of length + % \tenboxwidth, which is initially .75pt. + % In order for the new ties to work properly, every horizontal space must be + % recorded. I have had to amend some macros so that they record the space + % which they produce. + % +\newbox\@tenubox \newskip\@tenuskip \newdimen\tenboxwidth \tenboxwidth.75pt + % + % -macros to maintain a box of tie extenders which is used in the leaders +\global\setbox\@tenubox\hbox{\kern\tenboxwidth} +\def\@uptenubox{\global\setbox\@tenubox + \hbox{\kern\tenboxwidth}\ten@loop + \ifnum\t@s=0\relax\else\up@tenbox\fi + \global\advance\n@l by 1\relax\repeat}% +\def\up@tenbox{\y@ii\t@z\advance\y@ii by \t@y + \global\setbox\@tenubox\hbox{\unhbox\@tenubox + \kern-\tenboxwidth\vrule width\tenboxwidth height\y@ii depth-\t@z}} + % + % -This macro makes the leaders. #1 is the amount of skip. It is extended + % by \tenboxwidth on each side in order to get the lines to join up. +\def\@tenleader#1{\@tenuskip=#1\advance\@tenuskip by2\tenboxwidth\relax +\nobreak\kern-\tenboxwidth\nobreak\cleaders\copy\@tenubox\hskip\@tenuskip +\kern-\tenboxwidth\nobreak} + % +\def\selecttenue#1{{\n@i=#1\relax +\ifnum\n@i<0\relax\n@i=29\fi + \advance\n@i by 1\relax +\xdef\t@x{\csname t@x\romannumeral\n@i\endcsname}% +\xdef\t@z{\csname t@z\romannumeral\n@i\endcsname}% +\xdef\t@p{\csname t@p\romannumeral\n@i\endcsname}% +\xdef\t@s{\csname t@s\romannumeral\n@i\endcsname}% +\xdef\t@w{\csname t@w\romannumeral\n@i\endcsname}}% +\ifnum\t@w=0\relax + \global\t@y=1.2\p@ +\else + \global\t@y= 0.2\Interligne +\fi +}% fin selecttenue + % + %\check + % mise a jour marge inferieure et correction d'altitude de tenues + % +\newdimen\bottom@adv +\def\advancebottom#1{\global\bottom@adv=#1\relax}% +\def\adv@bottom{\global\advance\staffbotmarg by \bottom@adv + \ten@loop \global\advance\t@z by \bottom@adv\relax + \global\advance\n@l by 1\relax + \repeat \@uptenubox + \global\bottom@adv=\z@}% + % + %\check + % +\def\lu@slur{\cmex\char"7A}\def\ru@slur{\cmex\char"7B}% +\def\ll@slur{\cmex\char"7C}\def\rl@slur{\cmex\char"7D}% +\setbox\n@otebox=\hbox{\lu@slur}\brace@w=\wd\n@otebox + % +\def\leg@hrule{\leaders\hrule height \t@y\hfill}% + % + % complete slur of length #1 (up and down) +\def\up@leg{% longueur y@ii +\hbox to \y@ii{\lu@slur\ifdim \y@ii>2\brace@w\leg@hrule +\else\hss\fi\ru@slur}}% + % +\def\lo@leg{% longueur y@ii +\hbox to \y@ii{\ll@slur\ifdim \y@ii>2\brace@w\leg@hrule +\else\hss\fi\rl@slur}}% + % + % slur termination of length #1 (up and down) +\def\up@rleg{% longueur y@ii +\hbox to \y@ii{\ifdim \y@ii>\brace@w\leg@hrule +\else\hss\fi\ru@slur}}% + % +\def\lo@rleg{% longueur y@ii +\hbox to \y@ii{\ifdim \y@ii>\brace@w\leg@hrule +\else\hss\fi\rl@slur}}% + %\check + % + % slur beginning (left) (up and down) +\def\up@les{% longueur y@ii +\hbox to \y@ii{\lu@slur\ifdim \y@ii>\brace@w\leg@hrule +\else\hss\fi}}% + % +\def\lo@les{% longueur y@ii +\hbox to \y@ii{\ll@slur\ifdim \y@ii>\brace@w\leg@hrule +\else\hss\fi}}% + %\check + % + % noter un debut de tenue + % +\def\itenu#1{\selecttenue{#1}\i@tenu}% + % \rtenu starts a 'tenuto' one note head on the right +\def\rtenu#1#2{\selecttenue{#1}\i@tenu{#2}\global\advance\t@x by \wn@width}% + % +\def\check@tenvoid{\ifnum\t@s=0\relax\else\errmessage{Attemt to re-open an +opened slur/tie}\fi} +\def\check@tenopen{\ifnum\t@s=0\errmessage{Attemt to close an +unopened slur/tie}\fi} + % +\def\i@tenu#1{\check@tenvoid\global\t@p=1\relax % sens=1 + \global\t@s=1\relax % etat en cours + \global\t@x=\locx@skip + \global\advance\t@x by \qd@skip + \inhgetn@i{#1}\pl@base\global\t@z=\y@i\global\advance\t@z by\altportee + \global\advance\t@z by 3.7\p@ + \global\t@y=1.2\p@ + \global\t@w=0\relax + \up@tenbox}% + % +\def\itenl#1{\selecttenue{#1}\i@tenl}% +\def\minternote{-\internote}% + % \rtenl starts a 'tenuto' one note head on the right +\def\rtenl#1#2{\selecttenue{#1}\i@tenl{#2}\global\advance\t@x by \wn@width}% +\def\i@tenl#1{\check@tenvoid\global\t@p=-1\relax % sens= -1 + \global\t@s=1\relax % actif + \global\t@x=\locx@skip + \global\advance\t@x by \qd@skip + \inhgetn@i{#1}\pl@base\global\t@z=\y@i\global\advance\t@z by \altportee + \global\advance\t@z by -4.5\p@\relax + \global\t@y=1.2\p@ + \global\t@w=0\relax + \up@tenbox}% + %\check +\def\tten#1{\selecttenue{#1}\t@ten}% +\def\tleg#1{\selecttenue{#1}\check@tenopen{\advance\locx@skip by + 1.5\qn@width\kern 1.5\qn@width\t@ten\kern -1.5\qn@width}}% + +\def\liftslur#1{\selecttenue{#1}\l@iftslur}% +\def\l@iftslur#1{\global\advance\t@z by #1\relax}% + % + %\check + % + %********************** ponctuations speciales **************************** + % +\def\breath{\raise 3\Interligne\hbox{\enorme'}}% +\def\zbreath{\raise 3\Interligne\rlap{\enorme'}}% +\def\cbreath{\charnote0{\raise 3\Interligne + \hbox to \noteskip{\hss\enorme'\hss}}}% +\def\uptext#1{\resetstem\raise 5\Interligne\rlap{#1}}% +\def\Uptext#1{\resetstem\raise 7\Interligne\rlap{#1}}% +\def\text@sp{\vrule width \z@ height 8.5\p@ depth 3.5\p@} +\def\f{{\ppff {f}}} +\def\ff{{\ppff {f}\kern -0.1ex{f}}} +\def\fff{{\ppff {f}\kern -0.1ex{f}\kern -0.1ex{f}}} +\def\ffff{{\ppff {f}\kern -0.1ex{f}\kern -0.1ex{f}\kern -0.1ex{f}}} +\def\m@idcomp{\y@v=\interportee\advance\y@v by 4\Interligne\divide\y@v by + %%\def\m@idcomp{\y@v=\Interportee\divide\y@v by + 2\relax +\raise\y@v\vbox to \z@}% + % +\def\midtwotext#1{{\m@idcomp +{\vss\hbox to \noteskip{\hss\text@sp #1\hss}\vss}}}% +\def\rmidtwotext#1{{\m@idcomp +{\vss\hbox to \noteskip{\text@sp #1\hss}\vss}}}% +\def\zmidtwotext#1{{\m@idcomp +{\vss\rlap{\text@sp #1}\vss}}}% +\def\lmidtwotext#1{{\m@idcomp +{\vss\hbox to \noteskip{\hss\text@sp #1}\vss}}}% + %\check +\def\metron#1#2{{\shortstems\noteskip 10\p@ #1 1\ = #2}}% + %\check + % + %************************************************************************** + % definition standard, modifiables par l'usager + %************************************************************************** + % +\def\resetfacteurs{\stafftopmarg=\z@\staffbotmarg=\z@\nullthick=8\Internote + % +\def\stafflinesnbi{5}% +\def\stafflinesnbii{5}% +\def\stafflinesnbiii{5}% +\def\stafflinesnbiv{5}% +\def\stafflinesnbv{5}% +\def\stafflinesnbvi{5}% + % +\def\clefduti{\clefdutsymbol}% +\def\clefdutii{\clefdutsymbol}% +\def\clefdutiii{\clefdutsymbol}% +\def\clefdutiv{\clefdutsymbol}% +\def\clefdutv{\clefdutsymbol}% +\def\clefdutvi{\clefdutsymbol}% + % +\def\clefdefai{\clefdefasymbol}% +\def\clefdefaii{\clefdefasymbol}% +\def\clefdefaiii{\clefdefasymbol}% +\def\clefdefaiv{\clefdefasymbol}% +\def\clefdefav{\clefdefasymbol}% +\def\clefdefavi{\clefdefasymbol}% + % +\def\clefdesoli{\clefdesolsymbol}% +\def\clefdesolii{\clefdesolsymbol}% +\def\clefdesoliii{\clefdesolsymbol}% +\def\clefdesoliv{\clefdesolsymbol}% +\def\clefdesolv{\clefdesolsymbol}% +\def\clefdesolvi{\clefdesolsymbol}% + % +\def\interfacteur{9}% +\def\bottomfacteur{3}% +\def\topfacteur{3}% +\elemskip=4\Internote +\def\gluemaxskip{0.1\line@width}% +\zglueskip=0pt plus \gluemaxskip minus .5pt% +\tempsskip=2pt plus \gluemaxskip minus 2pt +}% +\resetfacteurs + %\check +\def\normal{\ifdim\Interligne<\p@\computewidths\fi +\def\scalenoteskip{1.0}\elemskip=4\Internote +\def\notes{\vnotes 1.0\elemskip }% double croches +\def\Notes{\vnotes 1.4\elemskip }% croches +\def\NOtes{\vnotes 2.0\elemskip }% croches pointees +\def\NOTes{\vnotes 2.8\elemskip }% noires +\def\NOTEs{\vnotes 4.0\elemskip }% +\def\NOTES{\vnotes 5.6\elemskip }% +}% + % +\ifx\large\undefined + \def\large{\normal\elemskip=4.8\Internote}\fi + % +\def\etroit{\normal +\def\Notes{\vnotes 1.3\elemskip }% croches +\def\NOtes{\vnotes 1.8\elemskip }% croches pointees +\def\NOTes{\vnotes 2.6\elemskip }% noires +\def\NOTEs{\vnotes 3.6\elemskip }% +\def\NOTES{\vnotes 5.2\elemskip }% +}% + %\check +\def\testseq{}% +\def\nspace{\vnotes 0.2\elemskip\sk\enotes}% + % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\barfill{\leaders\hbox{ --}\hfill}% +\def\octnvrule{\vrule width \z@ height 3\p@ depth 3\p@}% +\def\octvrule{\vrule width \lthick height 3\p@ depth 3\p@}% +\def\octsup#1#2{\zcharnote{#1}{\hbox to #2\noteskip +{\llap{\rm 8}\barfill\octnvrule}}}% +\def\Octsup#1#2{\zcharnote{#1}{\hbox to #2{\rm 8\barfill\octnvrule}}}% + %\check +\def\octfin#1#2{\zcharnote{#1}{\hbox to #2\noteskip{\llap{\rm 8}\barfill +--\octvrule}}}% +\def\Octfin#1#2{\zcharnote{#1}{\hbox to #2{\rm 8\barfill +--\octvrule}}}% +\def\octline#1{\zcharnote{#1}{\hbox to \line@width{\llap{\rm 8}\barfill +\octnvrule\hskip 12\Internote}}}% +\def\Octline#1{\zcharnote{#1}{\hbox to \line@width{\rm 8\barfill +\octnvrule\hskip 8\Internote}}}% + %\check +\def\xtuplet#1#2{\global\n@l=#1\relax\global\advance\n@l by -1\relax +{\divide\noteskip by \n@l\relax\zcharnote{#2}{\kern\n@l\noteskip + \hbox to\z@{\hss\it #1\hss}}}}% +\def\triolet{\xtuplet3}% + %\check + \let\thelyrics\empty +\def\hardlyrics#1\notes{\let\save@noteskip\noteskip + \def\noteskip{\z@\relax\errmessage{You cannot use \noexpand\noteskip + in \noexpand\hardlyrics's 1st argument!}}% +\def\thelyrics{\hbox{#1}}% +\wd\ch@box\z@ \setbox\ch@box\thelyrics \let\noteskip\save@noteskip + \noteskip\wd\ch@box \n@otes} + %\check + + +%\def\setsongraise#1#2{\n@v#1\relax % select instrument +% \expandafter\def\csname T@R\romannumeral\n@v\endcsname{#2}} +\def\setsongraise#1#2{\noinstrument#1\relax % select instrument + \expandafter\def\csname T@R\romannumeral\noinstrument\endcsname{#2}} + +\let\T@Ri\z@ +\let\T@Rii\z@ +\let\T@Riii\z@ +\let\T@Riv\z@ +\let\T@Rv\z@ +\let\T@Rvi\z@ + +\def\zsong{\let\@Ti\rlap \C@t} +\def\lsong{\let\@Ti\llap \C@t} +\def\csong{\let\@Ti\lrlap \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\lrlap#1{\rlap{\hss#1}} +\def\hard@box#1{\rlap{\hbox to\noteskip{#1\hfil}}} +\def\dhard@box#1{\rlap{\hbox to 2\noteskip{#1\hfil}}} +\def\thard@box#1{\rlap{\hbox to 3\noteskip{#1\hfil}}} + +\def\C@tx{\edef\savenu@iv{\the\y@iv}% + \ifnum\noinstrument= 1 \y@iv\staffbotmarg + \else + \advance\noinstrument -1\relax + \y@iv\csname interinstrument\romannumeral\noinstrument\endcsname + \C@Inter \advance\y@iv\stem@skip \divide\y@iv 2 + \advance\noinstrument 1 + \fi + \advance\y@iv-\csname T@R\romannumeral\noinstrument\endcsname +%% \advance\noinstrument 1 \fi + \edef\lower@dim{\the\y@iv}\relax \y@iv\savenu@iv\relax + \lower\lower@dim\uplap} + +\def\C@Inter{\stem@skip\interportee \advance\stem@skip-8\internote + \ifnum\stafflinesnb=4 \advance\stem@skip 2\internote \fi + \ifnum\stafflinesnb=6 \advance\stem@skip-2\internote \fi} + + + % +\let\wlog=\@plainwlog + % +\def\interfacteur{1}% +\csname musicnorfont\endcsname +\def\nbinstruments{\maxinstruments}\savemeter +\csname normalnotesize\endcsname +\normal % to get \notes correctly defined +\resetfacteurs +\def\nbinstruments{0}% + % +\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or + 2488\or 2986\or 3583\or 4300\or 5160\fi\relax} + % + +\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 +\catcodesmusicfalse} + +\endcatcodesmusic + +\catcode`\@=\catcodeat +\def\musictexactive{\relax} +\endinput + diff --git a/Master/texmf-dist/tex/generic/musictex/musictrp.tex b/Master/texmf-dist/tex/generic/musictex/musictrp.tex new file mode 100644 index 00000000000..31c952ef87d --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musictrp.tex @@ -0,0 +1,175 @@ + +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 +\edef\catcode@gt{\the\catcode`\>}\catcode`\>=12 +\edef\catcode@lt{\the\catcode`\<}\catcode`\<=12 +% +\def\Na#1{\ifdim\small@test\bigNa{#1}\else\smallNa{#1}\fi}% +\def\Fl#1{\ifdim\small@test\bigFl{#1}\else\smallFl{#1}\fi}% +\def\Sh#1{\ifdim\small@test\bigSh{#1}\else\smallSh{#1}\fi}% +\def\dFl#1{\ifdim\small@test\bigdFl{#1}\else\smalldFl{#1}\fi}% +\def\dSh#1{\ifdim\small@test\bigdSh{#1}\else\smalldSh{#1}\fi}% +% +\def\cNa{\cautionacctrue\smallNa} +\def\cFl{\cautionacctrue\smallFl} +\def\cSh{\cautionacctrue\smallSh} +\def\cdFl{\cautionacctrue\smalldFl} +\def\cdSh{\cautionacctrue\smalldSh} +% +\def\lNa#1{\k@meiqdskip\bigNa{#1}\k@eiqdskip}% +\def\lFl#1{\k@meiqdskip\bigFl{#1}\k@eiqdskip}% +\def\lSh#1{\k@meiqdskip\bigSh{#1}\k@eiqdskip}% +\def\ldFl#1{\k@meiqdskip\bigdFl{#1}\k@eiqdskip}% +\def\ldSh#1{\k@meiqdskip\bigdSh{#1}\k@eiqdskip}% +% +%\check +% +\def\sign@diff{\global\n@iii=\n@i + \global\advance\n@iii by -\ut@ref\relax + \global\advance\n@iii by -\ut@ref\relax + \loop\ifnum\n@iii>6\relax \global\advance\n@iii by -7\relax\repeat + \loop\ifnum\n@iii<0\relax \global\advance\n@iii by 7\relax\repeat + \n@ii=999\relax + \ifcase\n@iii\relax\n@ii=6\relax % mi + \or\n@ii=1\relax % fa + \or\n@ii=3\relax % sol + \or\n@ii=5\relax % la + \or\n@ii=7\relax % si + \or\n@ii=2\relax % do + \or\n@ii=4\relax % re + \fi % \n@ii positive signature limit + % \n@ii-8 negative signature limit + \advance\n@ii by -\sign + \advance\n@ii by 6 + \divide\n@ii by 7\relax +} +% +\def\bigdFl#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\global\n@raise=\sh@raise\pl@llap{\f@lat}\relax + \or \global\n@raise=\fl@raise\pl@llap{\df@lat}\relax + \else \message{Impossible to double flatten the note ! + \noexpand\Fl #1 }\showthe\n@ii + \fi +}% +%\check +% +\def\bigFl#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\global\n@raise=\na@raise\pl@llap{\n@at}\relax + \or \global\n@raise=\fl@raise\pl@llap{\f@lat}\relax + \or \global\n@raise=\fl@raise\pl@llap{\df@lat}\relax + \else \message{Impossible to flatten the note ! + \noexpand\Fl #1 }\showthe\n@ii + \fi +}% +%\check +\def\bigNa#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\global\n@raise=\sh@raise\pl@llap{\s@harp}\relax + \or \global\n@raise=\na@raise\pl@llap{\n@at}\relax + \or \global\n@raise=\fl@raise\pl@llap{\f@lat}\relax + \else \message{Impossible to reset natural the note ! + \noexpand\Na #1 }\showthe\n@ii + \fi +}% +\def\bigSh#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\global\n@raise=\z@\pl@llap{\ds@harp}\relax + \or \global\n@raise=\sh@raise\pl@llap{\s@harp}\relax + \or \global\n@raise=\na@raise\pl@llap{\n@at}\relax + \else \message{Impossible to sharpen the note ! + \noexpand\Sh #1 }\showthe\n@ii + \fi +}% +\def\bigdSh#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\message{Impossible to double sharpen the note ! + \noexpand\dSh #1 }\showthe\n@ii + \or \global\n@raise=\z@\pl@llap{\ds@harp}\relax + \or \global\n@raise=\sh@raise\pl@llap{\s@harp}\relax + \else \message{Impossible to double sharpen the note ! + \noexpand\dSh #1 }\showthe\n@ii + \fi +}% +% +\def\smalldFl#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\global\n@raise=\fl@raise\pl@llap{\smallf@lat}\relax + \or \global\n@raise=\fl@raise\pl@llap{\smalldf@lat}\relax + \else \message{Impossible to double flatten the note ! + \noexpand\Fl #1 }\showthe\n@ii + \fi +}% +%\check +% +\def\smallFl#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\global\n@raise=\na@raise\pl@llap{\smalln@at}\relax + \or \global\n@raise=\fl@raise\pl@llap{\smallf@lat}\relax + \or \global\n@raise=\fl@raise\pl@llap{\smalldf@lat}\relax + \else \message{Impossible to flatten the note ! + \noexpand\Fl #1 }\showthe\n@ii + \fi +}% +%\check +\def\smallNa#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\global\n@raise=\sh@raise\pl@llap{\smalls@harp}\relax + \or \global\n@raise=\na@raise\pl@llap{\smalln@at}\relax + \or \global\n@raise=\fl@raise\pl@llap{\smallf@lat}\relax + \else \message{Impossible to reset natural the note ! + \noexpand\Na #1 }\showthe\n@ii + \fi +}% +\def\smallSh#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\global\n@raise=\z@\pl@llap{\smallds@harp}\relax + \or \global\n@raise=\sh@raise\pl@llap{\smalls@harp}\relax + \or \global\n@raise=\na@raise\pl@llap{\smalln@at}\relax + \else \message{Impossible to sharpen the note ! + \noexpand\Sh #1 }\showthe\n@ii + \fi +}% +\def\smalldSh#1{\getn@i{#1}\sign@diff + \ifcase\n@ii\relax\message{Impossible to double sharpen the note ! + \noexpand\dSh #1 }\showthe\n@ii + \or \global\n@raise=\z@\pl@llap{\smallds@harp}\relax + \or \global\n@raise=\sh@raise\pl@llap{\smalls@harp}\relax + \else \message{Impossible to double sharpen the note ! + \noexpand\dSh #1 }\showthe\n@ii + \fi +}% +\def\pl@hboxq#1{\pl@note\raise\y@i\hbox to \qd@skip{\hss #1 \hss}}% +\def\upperFl#1{\getn@i{#1}\sign@diff\global\n@raise=3\internote + \ifcase\n@ii\relax + \pl@hboxq{\smalln@at}\relax + \or + \pl@hboxq{\smallf@lat}\relax + \or + \pl@hboxq{\smalldf@lat}\relax + \else \message{Impossible to sharpen the note ! + \noexpand\Sh #1 }\showthe\n@ii + \fi +}% +\def\upperNa#1{\getn@i{#1}\sign@diff\global\n@raise=3\internote + \ifcase\n@ii\relax + \pl@hboxq{\smalls@harp}\relax + \or + \pl@hboxq{\smalln@at}\relax + \or + \pl@hboxq{\smallf@lat}\relax + \else \message{Impossible to sharpen the note ! + \noexpand\Sh #1 }\showthe\n@ii + \fi +}% +\def\upperSh#1{\getn@i{#1}\sign@diff\global\n@raise=3\internote + \ifcase\n@ii\relax + \pl@hboxq{\smallds@harp}\relax + \or + \pl@hboxq{\smalls@harp}\relax + \or + \pl@hboxq{\smalln@at}\relax + \else \message{Impossible to sharpen the note ! + \noexpand\Sh #1 }\showthe\n@ii + \fi +}% +\def\relativeaccidentals{\def\Xna{\Na}\def\Xsh{\Sh}\def\Xfl{\Fl}% +\def\Xdsh{\dSh}\def\Xdfl{\dFl}}% + + + +\catcode`\>=\catcode@gt +\catcode`\<=\catcode@lt +\catcode`\@=\catcodeat + diff --git a/Master/texmf-dist/tex/generic/musictex/musicvbm.tex b/Master/texmf-dist/tex/generic/musictex/musicvbm.tex new file mode 100644 index 00000000000..f2025bed144 --- /dev/null +++ b/Master/texmf-dist/tex/generic/musictex/musicvbm.tex @@ -0,0 +1,94 @@ +% adjustable beam slopes +% #1: beam number, #2: starting pitch, #3: ending pitch, #4: extension (number +% of \noteskip's) +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 + +\def\Ibu#1{\selectpoutre{#1}\I@bu{\i@bu}}% +\def\Ibbu#1{\selectpoutre{#1}\I@bu{\i@bbu}}% +\def\Ibbbu#1{\selectpoutre{#1}\I@bu{\i@bbbu}}% +\def\Ibbbbu#1{\selectpoutre{#1}\I@bu{\i@bbbbu}}% +\def\Ibl#1{\selectpoutre{#1}\I@bl{\i@bl}}% +\def\Ibbl#1{\selectpoutre{#1}\I@bl{\i@bbl}}% +\def\Ibbbl#1{\selectpoutre{#1}\I@bl{\i@bbbl}}% +\def\Ibbbbl#1{\selectpoutre{#1}\I@bl{\i@bbbbl}}% +% +\newcount\s@lopenum +\newcount\the@pitch +\newdimen\b@eamlength +% +% compute altitude difference of tried beam in \y@iv +% and compare with notes altitude difference +% +\def\I@buuchk{\y@iv=0.05\b@eamlength\multiply \y@iv by \s@lopenum\relax +\ifdim \y@iv>\n@ii\internote\relax + \advance\s@lopenum by -1\relax\I@buuchk +\fi +\ifnum \s@lopenum>9\relax \advance\n@i by 1\relax + \advance\n@ii by -1\relax\I@buuchk +\fi}% +% +\def\I@budchk{\y@iv=0.05\b@eamlength\multiply \y@iv by \s@lopenum\relax +\ifdim \y@iv<\n@ii\internote\relax + \advance\s@lopenum by 1\relax\I@budchk +\fi}% +% +\def\I@bu#1#2#3#4{{\inhgetn@i{#3}\n@ii=\n@i\relax +\inhgetn@i{#2}\advance\n@ii by -\n@i\relax +\b@eamlength=\noteskip +\multiply\b@eamlength by #4\relax +\ifnum\n@ii=0\relax + \edef\I@boper{\noexpand #1}\I@boper{#2}0\relax +\else\ifnum\n@ii>0\relax\s@lopenum=10\relax \I@buuchk + \else \s@lopenum=-10\relax \I@budchk + \fi + \edef\I@boper{\noexpand #1{\the\n@i}{\the\s@lopenum}\relax}\I@boper +\fi}}% +% +%\check +% +\def\I@bldchk{\y@iv=0.05\b@eamlength\multiply \y@iv by \s@lopenum\relax +\ifdim \y@iv<\n@ii\internote\relax + \advance\s@lopenum by 1\relax\I@bldchk +\fi +\ifnum \s@lopenum<-9\relax \advance\n@i by -1\relax + \advance\n@ii by 1\relax\I@bldchk +\fi}% +% +\def\I@bluchk{\y@iv=0.05\b@eamlength\multiply \y@iv by \s@lopenum\relax +\ifdim \y@iv>\n@ii\internote\relax + \advance\s@lopenum by -1\relax\I@bluchk +\fi}% +% +\def\I@bl#1#2#3#4{{\inhgetn@i{#3}\n@ii=\n@i\relax +\inhgetn@i{#2}\advance\n@ii by -\n@i\relax +\b@eamlength=\noteskip +\multiply\b@eamlength by #4\relax +\ifnum\n@ii=0\relax + \edef\I@boper{\noexpand #1}\I@boper{#2}0\relax +\else\ifnum\n@ii>0\relax\s@lopenum=10\relax \I@bluchk + \else \s@lopenum=-10\relax \I@bldchk + \fi + \edef\I@boper{\noexpand #1{\the\n@i}{\the\s@lopenum}\relax}\I@boper +\fi}}% +% +%\check +% sets of double notes with computed slopes +\def\Dqbbl#1#2{\Ibbl0{#1}{#2}1\qb0{#1}\tqb0{#2}}% +\def\Dqbbu#1#2{\Ibbu0{#1}{#2}1\qh0{#1}\tqh0{#2}}% +\def\Dqbl#1#2{\Ibl0{#1}{#2}1\qb0{#1}\tqb0{#2}}% +\def\Dqbu#1#2{\Ibu0{#1}{#2}1\qh0{#1}\tqh0{#2}}% +%\check +% sets of triple notes with computed slopes +\def\Tqbbl#1#2#3{\Ibbl0{#1}{#3}2\qb0{#1}\qb0{#2}\tqb0{#3}}% +\def\Tqbbu#1#2#3{\Ibbu0{#1}{#3}2\qh0{#1}\qh0{#2}\tqh0{#3}}% +\def\Tqbl#1#2#3{\Ibl0{#1}{#3}2\qb0{#1}\qb0{#2}\tqb0{#3}}% +\def\Tqbu#1#2#3{\Ibu0{#1}{#3}2\qh0{#1}\qh0{#2}\tqh0{#3}}% +%\check +% sets of quadruple notes with computed slopes +\def\Qqbbl#1#2#3#4{\Ibbl0{#1}{#4}3\qb0{#1}\qb0{#2}\qb0{#3}\tqb0{#4}}% +\def\Qqbbu#1#2#3#4{\Ibbu0{#1}{#4}3\qh0{#1}\qh0{#2}\qh0{#3}\tqh0{#4}}% +\def\Qqbl#1#2#3#4{\Ibl0{#1}{#4}3\qb0{#1}\qb0{#2}\qb0{#3}\tqb0{#4}}% +\def\Qqbu#1#2#3#4{\Ibu0{#1}{#4}3\qh0{#1}\qh0{#2}\qh0{#3}\tqh0{#4}}% +%\check +\catcode`\@=\catcodeat + |