5916 lines
192 KiB
TeX
5916 lines
192 KiB
TeX
|
%
|
||
|
% This file is part of MusiXTeX
|
||
|
%
|
||
|
% MusiXTeX is free software; you can redistribute it and/or modify
|
||
|
% it under the terms of the GNU General Public License as published by
|
||
|
% the Free Software Foundation; either version 2, or (at your option)
|
||
|
% any later version.
|
||
|
%
|
||
|
% MusiXTeX is distributed in the hope that it will be useful,
|
||
|
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
% GNU General Public License for more details.
|
||
|
%
|
||
|
% You should have received a copy of the GNU General Public License
|
||
|
% along with MusiXTeX; see the file COPYING. If not, write to
|
||
|
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||
|
% Boston, MA 02111-1307, USA.
|
||
|
%
|
||
|
%
|
||
|
\ifx\undefined\startpiece \else \endinput \fi
|
||
|
\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
|
||
|
|
||
|
\ifx\makeatletter\undefined\def\makeatletter{\catcode`\@=11\relax}\fi
|
||
|
\ifx\makeatother\undefined\def\makeatother{\catcode`\@=12\relax}\fi
|
||
|
|
||
|
\def\mufl@x{0.83}%
|
||
|
\def\mxmajorvernumber{1}
|
||
|
\def\mxminorvernumber{34}
|
||
|
\def\mxvernumber{\mxmajorvernumber\mxminorvernumber}% make it possible to compare with \ifnum
|
||
|
\def\mxversuffix{}%
|
||
|
\edef\mxversion{\mxmajorvernumber.\mxminorvernumber\mxversuffix}
|
||
|
\def\mxdate{2021-07-24}
|
||
|
|
||
|
\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}%
|
||
|
\everyjob{\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}}%
|
||
|
|
||
|
% version 1.34
|
||
|
%
|
||
|
% redefine \tabfnt... commands to allow re-definition in musixftab.tex
|
||
|
% decrement the number of slashes if tabstylespace is true
|
||
|
%
|
||
|
|
||
|
% version 1.33a
|
||
|
%
|
||
|
% improved implementations of the tablature commands:
|
||
|
% + 4-7 slashes are replaced by numbers 4-7
|
||
|
% + notehead-less stems are replaced by tiny notes (without ledger lines)
|
||
|
|
||
|
% version 1.33
|
||
|
%
|
||
|
% \tabfnt etc. now uses (Helvetica) bold
|
||
|
% replace ledger lines by slashes (/) for tablature notes below the staff
|
||
|
% new commands \tzqu, \tzcup, etc. for stems without noteheads, for use in tablature
|
||
|
|
||
|
% version 1.32
|
||
|
|
||
|
% commented out spurious \let\doublebar\doublebar@II
|
||
|
% forbid line-breaking at \zdoublebar
|
||
|
|
||
|
% version 1.31
|
||
|
%
|
||
|
% defined \zzdoublebar, \zzbar, \zendpiece
|
||
|
|
||
|
% version 1.30
|
||
|
%
|
||
|
% defined \zdoublebar for use within a bar
|
||
|
% defined \hbp and \hbpp
|
||
|
|
||
|
% version 1.29
|
||
|
%
|
||
|
% defined \tabfnt, \tabcleffnt, \tabstringfnt, \tab etc. to support tablature
|
||
|
|
||
|
% version 1.28
|
||
|
%
|
||
|
% defined
|
||
|
% \z[left|right|leftright]repeat, for use *within* a bar
|
||
|
% \zz...repeat, to force to the end of a system
|
||
|
% corrected definition of \C@Inter for \nblines < 4
|
||
|
|
||
|
% version 1.27
|
||
|
%
|
||
|
% introduced \meterN
|
||
|
% eliminated \ds@oup
|
||
|
% introduced \nqqb \nqqh \nqqqb \nqqqh abbreviations and
|
||
|
% synonyms \nqql \nqqu \nqqql \nqqqu
|
||
|
% introduced \hap, \happ analogous to \qap, \qapp
|
||
|
% introduced \hbsk analogous to \hsk
|
||
|
% introduced \bqsk, \bhsk, \btsk analogous to \qsk, \hqsk, \tqsk
|
||
|
% introduced \xxtuplet
|
||
|
|
||
|
% version 1.26
|
||
|
%
|
||
|
% deleted spurious definition in \resetlayout and
|
||
|
% spurious space in definition of \interfacteur...
|
||
|
|
||
|
% version 1.25
|
||
|
%
|
||
|
% included a "dummy" tuplet.tex in the distribution
|
||
|
% added \ignorespaces in musixltx.tex
|
||
|
% defined \qap, \qapp, \tqsk
|
||
|
|
||
|
% version 1.24
|
||
|
%
|
||
|
% preserve changes to \transpose in an hboxed tremolo command
|
||
|
% test that musixtex.tex has already been loaded in some extensions:
|
||
|
% musixps, musixec, musixhv, musixplt, musixtmr, musixppff
|
||
|
% changed from \it to \ppff in several places
|
||
|
% support new command \setinterstaff{n}{m}
|
||
|
% define \largenotesize, \Largenotesize
|
||
|
% correct typos \twtybf[g] \svtbf[g]
|
||
|
|
||
|
% version 1.23
|
||
|
%
|
||
|
% added \xtr and \ptr ornaments
|
||
|
% adjusted spacing of \tr
|
||
|
% corrected definition of \C@Inter for \nblines > 6
|
||
|
|
||
|
% version 1.22
|
||
|
%
|
||
|
% bi and sc font definitions added; sl and tt definitions for musixsty moved
|
||
|
% explicit font choices for \txtfont replaced by generic commands \smalltype\it etc.
|
||
|
% \pdlud \halfwidthbigwedge and \raise-height font-dependent
|
||
|
% \cbreath and \zbreath use \BIGtype rather than \BIGfont
|
||
|
|
||
|
|
||
|
% version 1.21
|
||
|
%
|
||
|
% RDT adjusted the offsets and/or vertical positions for some tremolos
|
||
|
% RDT moved \lastbarpos\lin@pos after calls to \Writ@meters
|
||
|
% to correct \centerbar positioning
|
||
|
% RDT copied the definition of \Hpause from musixlit.tex
|
||
|
% RDT introduced \Changeclefs, \cHpause and \centerHpause
|
||
|
% RDT replaced \smalltype\it by \txtfont in octave clef commands
|
||
|
% RDT moved definitions of \txtfont into \comput@fonts
|
||
|
% RDT added support for piano-pedal bracket notation
|
||
|
|
||
|
% version 1.20
|
||
|
%
|
||
|
% RDT re-defined tremolo commands to allow for numerical pitches;
|
||
|
% use of \raise and \hbox suggested by Jean-Pierre Colon
|
||
|
|
||
|
% version 1.19:
|
||
|
%
|
||
|
% RDT corrected typos in the definition of \comput@fonts
|
||
|
% affecting ppff fonts for \Largemusicsize
|
||
|
% RDT introduced definitions for tremolo commands \trml, \trmu, etc.
|
||
|
% RDT turned off lyrics for \metron and \metronequiv notes
|
||
|
|
||
|
% version 1.18:
|
||
|
%
|
||
|
% RDT added definitions of \raggedstoppiece and \slide from musixext.tex
|
||
|
% RDT increased the length of beam stems (adapted from J.-P. Coulon)
|
||
|
|
||
|
% version 1.17:
|
||
|
%
|
||
|
% RDT re-defined \txtfont for non-normal staff sizes
|
||
|
% RDT defined \tinyppff and \ppfftwelve, and re-defined \ppff to be staffsize dependent
|
||
|
% RDT introduced \tqqb \tqqh \tqqqb \tqqqh abbreviations
|
||
|
% and synonyms \tqql \tqqu \tqqql \tqqqu
|
||
|
% RDT introduced ornaments \tr, \trt
|
||
|
% RDT re-defined \triolet to be consistent with musixdoc (prints \txt, not nec. 3)
|
||
|
% RDT introduced \cpause etc. and corrected definitions of \centerpause etc.
|
||
|
% RDT introduced double-dotted rests \qppp, \dspp, \qspp, etc.
|
||
|
|
||
|
% version 1.16:
|
||
|
%
|
||
|
% RDT corrected the definitions of \nnotes and \nnnotes
|
||
|
|
||
|
% HM corrected the definitions for cautionary small accidentals
|
||
|
|
||
|
% RDT added \check@staff ... \fi to \@qa h, \@mca, \hs, \qqs
|
||
|
% so that \qa, \ca, \ha, etc. can be "hidden" using \setstaffs{n}{0}
|
||
|
|
||
|
% RDT incorporated tuplet.tex (approved by George Sicherman)
|
||
|
% and introduced \txtfont to allow changing size or style
|
||
|
|
||
|
% RDT introduced
|
||
|
% \qqsk, a one-quarter notehead skip
|
||
|
% \tqu and \tql, synonyms for \tqh and \tqb
|
||
|
% \ztqu and \ztql, synonyms for \ztqh and \ztqb
|
||
|
% \hpp, \qpp, \dsp, \qsp, \hsp, \qqsp for pointed rests
|
||
|
% \nnotes, \nnnotes: 1.6 and 1.28 \elemskip spacing
|
||
|
% \zcn, \ccn, \lcn, synomyms for \zcharnote etc.
|
||
|
|
||
|
% RDT incorporated curly.tex (approved by Mthimkhulu Molekwa)
|
||
|
|
||
|
% RDT modernized the treatment of text fonts
|
||
|
% meterfonts must be bf, even if titling fonts are rm or sc
|
||
|
% added dynamic-mark macros \sfz \sfzp
|
||
|
|
||
|
% version 1.15:
|
||
|
%
|
||
|
% moved out:
|
||
|
% - 1/128th beams -> musixbm
|
||
|
% - triple pointed notes -> musixtri
|
||
|
|
||
|
% and shrinked the memory consumption
|
||
|
|
||
|
%++ickd 19Sep1997: with help of William P. Houser introduced dotted slurs.
|
||
|
% Changes marked with +ickd for added single lines, -ickd for replaced
|
||
|
%++ickd single lines, ++ickd...++ickd for added blocks
|
||
|
|
||
|
%++simick 04Dec2000: Don Simons and Werner Icking made some improvements
|
||
|
% to volta-processing and centerbar processing the changes are
|
||
|
% marked with +simick for added single lines, -simick for
|
||
|
%++simick replaced lines and ++simick...++simick for added blocks
|
||
|
|
||
|
% Hiroaki, May2010, T.115: change register allocation codes into new ones
|
||
|
% which enables >12 elements. Search the string "version 1.15" for details.
|
||
|
%
|
||
|
|
||
|
% TeXperts may want to change the next
|
||
|
|
||
|
% PARAMETER DIFFERENT THAN PLAIN
|
||
|
|
||
|
\showboxdepth=0
|
||
|
\showboxbreadth=0
|
||
|
|
||
|
\ifx\undefined\documentstyle % -> []plain.tex
|
||
|
\parindent0pt
|
||
|
\hoffset-15.4mm
|
||
|
\voffset-10mm
|
||
|
\hsize190mm
|
||
|
\vsize260mm
|
||
|
\fi
|
||
|
|
||
|
%%% from LaTeX
|
||
|
% The following definitions save token space. E.g., using \@height
|
||
|
% instead of height saves 5 tokens at the cost in time of one macro
|
||
|
% expansion.
|
||
|
|
||
|
\def\@height{height}
|
||
|
\def\@depth{depth}
|
||
|
\def\@width{width}
|
||
|
|
||
|
%%% also removed 'by', '='
|
||
|
|
||
|
\def\@to{to}
|
||
|
\def\p@ne{.1}
|
||
|
\def\qu@rt{.25}
|
||
|
\def\h@lf{.5}
|
||
|
\def\p@seven{.7}
|
||
|
|
||
|
%%%from plain
|
||
|
% To make the macros more efficient in time and space,
|
||
|
% several constant values are declared here as control sequences
|
||
|
% If they were changed, anything could happen; so they are private symbols
|
||
|
|
||
|
%\chardef\active=13
|
||
|
%\chardef\&=`\& -> 38
|
||
|
%\chardef\#=`\# -> 35
|
||
|
%\chardef\$=`\$ -> 36
|
||
|
% Nomenclature: '@' means most times 'e' or seperator, sometimes 'o','a'
|
||
|
|
||
|
\chardef\f@ur=4
|
||
|
\chardef\fiv@=5
|
||
|
\chardef\si@=6
|
||
|
\chardef\s@v@n=7
|
||
|
\chardef\@ight=8
|
||
|
\chardef\nin@=9
|
||
|
\chardef\t@n=10
|
||
|
\chardef\@l@v@n=11
|
||
|
\chardef\tw@lv@=12
|
||
|
\chardef\fourt@@n=14
|
||
|
\chardef\fiv@t@@n=15
|
||
|
\chardef\tw@nty=20
|
||
|
\chardef\@xxiii=23
|
||
|
\chardef\@xxv=25
|
||
|
\chardef\@xxiv=24
|
||
|
\chardef\@xxvi=26
|
||
|
\chardef\@xxvii=27
|
||
|
\chardef\@xxix=29
|
||
|
\chardef\@xxxii=32
|
||
|
\chardef\@xl=40
|
||
|
\chardef\@xli=41
|
||
|
\chardef\@xlv=45
|
||
|
\chardef\@l=50
|
||
|
\chardef\@lii=52
|
||
|
\chardef\@liv=54
|
||
|
\chardef\@lxxxiii=83
|
||
|
\chardef\@c=100
|
||
|
\chardef\@cxv=115
|
||
|
\chardef\@cxxviii=128
|
||
|
|
||
|
\newif\ifcatcodesmusic
|
||
|
|
||
|
\def\catcodesmusic{\ifcatcodesmusic\relax
|
||
|
\else
|
||
|
\edef\catcode@gt{\the\catcode`\>}\catcode`\>\tw@lv@
|
||
|
\edef\catcode@lt{\the\catcode`\<}\catcode`\<\tw@lv@
|
||
|
\edef\catcode@vert{\the\catcode`\|}\catcode`\|\active
|
||
|
\edef\catcode@and{\the\catcode`\&}\catcode`\&\active
|
||
|
\edef\catcode@excl{\the\catcode`\!}\catcode`\!\tw@lv@
|
||
|
\edef\catcode@star{\the\catcode`\*}\catcode`\*\tw@lv@
|
||
|
\edef\catcode@pt{\the\catcode`\.}\catcode`\.\tw@lv@
|
||
|
\edef\catcode@sc{\the\catcode`\:}\catcode`\:\tw@lv@
|
||
|
\let\@@bar\bar
|
||
|
\def\bar{\barre}%
|
||
|
\fi\catcodesmusictrue}
|
||
|
|
||
|
\catcodesmusic
|
||
|
|
||
|
% MusicTeX + MuFlex -> MusiXTeX
|
||
|
\def\musixtex{MusiX\TeX}
|
||
|
|
||
|
\def\kernm{\kern-}
|
||
|
|
||
|
%...\let\@wloG=\wlog
|
||
|
%...\def\wlog#1{}
|
||
|
|
||
|
%%% account registers
|
||
|
|
||
|
% \let\maxinstruments\si@ % [version 1.15] here disabled to avoid conflict
|
||
|
|
||
|
% temporary registers
|
||
|
|
||
|
\newcount\n@i
|
||
|
\newcount\n@ii
|
||
|
\newcount\n@iii
|
||
|
\newcount\n@iv
|
||
|
\newcount\n@v
|
||
|
\newcount\n@vi
|
||
|
\newcount\n@vii
|
||
|
\newcount\n@viii
|
||
|
\newcount\count@
|
||
|
|
||
|
\newbox\toks@box
|
||
|
\newbox\w@rkbox
|
||
|
\newbox\n@otebox
|
||
|
|
||
|
\newdimen\y@
|
||
|
\newdimen\y@i
|
||
|
\newdimen\y@ii
|
||
|
\newdimen\y@iii
|
||
|
\newdimen\y@iv
|
||
|
\newdimen\y@v
|
||
|
|
||
|
% [version 1.15] moved out to the new register allocation code -- start from here --
|
||
|
% altitude
|
||
|
% \newskip\k@ii
|
||
|
% InterNote
|
||
|
% \newdimen\i@ni
|
||
|
\def\i@n{\z@} % safety in case of....
|
||
|
% positions x et z de debut des poutres
|
||
|
% \newdimen\b@xi \newdimen\b@zi
|
||
|
% \newdimen\c@xi \newskip\c@zi
|
||
|
% \newdimen\d@xi \newskip\d@zi
|
||
|
% \newdimen\e@xi \newskip\e@zi
|
||
|
% \newdimen\f@xi \newskip\f@zi
|
||
|
% pentes des poutres ( entier de -9 a +9 )
|
||
|
% multiplicite des poutres ( de -5 a +5 . 0= inactive )
|
||
|
% \newcount\b@pi \newcount\b@ni
|
||
|
% Number of Portees
|
||
|
% \newcount\n@pi \n@pi\@ne
|
||
|
% Actual Signs Old Signs
|
||
|
% \newcount\a@si \newcount\o@si
|
||
|
% ActualCleftoks
|
||
|
% \newtoks\a@ci \a@ci={{\z@}{\z@}{\z@}{\z@}}
|
||
|
% OldCleftoks
|
||
|
% \newtoks\o@ci
|
||
|
% MeterToks
|
||
|
% \newtoks\m@ti
|
||
|
% Altitude of choir groups
|
||
|
% \newskip\g@bi
|
||
|
% Height of choir groups
|
||
|
% \newskip\g@hi
|
||
|
|
||
|
% [version 1.15] moved out to the new register allocation code -- until here --
|
||
|
% \let\maxgroups\thr@@ % maximum three groups of instruments or choirs [version 1.15] moved to later, using \setmaxgroups
|
||
|
\newcount\group@no
|
||
|
|
||
|
%%% [version 1.15] new register allocation code -- start from here --
|
||
|
%
|
||
|
% register allocation for use inside \loop...\if...\repeat
|
||
|
% (only for plain, but no harm even in case of LaTeX)
|
||
|
\edef\noexpand@newcount{\noexpand\newcount}%
|
||
|
\edef\noexpand@newdimen{\noexpand\newdimen}%
|
||
|
\edef\noexpand@newskip{\noexpand\newskip}%
|
||
|
%\edef\noexpand@newmuskip{\noexpand\newmuskip}% not used
|
||
|
%\edef\noexpand@newbox{\noexpand\newbox}% not used
|
||
|
\edef\noexpand@newtoks{\noexpand\newtoks}%
|
||
|
%\edef\noexpand@newmarks{\noexpand\newmarks}% not used
|
||
|
%
|
||
|
% a shortcut for register allocation routines
|
||
|
\def\roman@c@{\romannumeral\count@}%
|
||
|
%
|
||
|
% some registers (i@n, b@x, b@z, c@x, d@x, e@x, s@x, s@Y)
|
||
|
% should be allocated by \newdimen (for id 0...5) and \newskip (for id 6...11)
|
||
|
% because T.114 and earlier did so and for the compatibility to Stanislav
|
||
|
% Kneifl's musixps.tex 0.92a.
|
||
|
% And again \newdimen (for id>11), because both \dimen and \skip are
|
||
|
% applicable but \dimen uses less memory in case of >255 on e-TeX.
|
||
|
\def\noexpand@newdimsk{%
|
||
|
\ifnum\count@<7 \let\@@newdimsk=\noexpand@newdimen
|
||
|
\else\ifnum\count@<13 \let\@@newdimsk=\noexpand@newskip
|
||
|
\else\let\@@newdimsk=\noexpand@newdimen
|
||
|
\fi\fi \@@newdimsk}%
|
||
|
%
|
||
|
% and some other registers (c@z, d@z, e@z, f@z, g@z)
|
||
|
% should be allocated by \newskip (for id 0...11) and \newdimen (for id>11)
|
||
|
% for the same reason of above.
|
||
|
\def\noexpand@newskdim{%
|
||
|
\ifnum\count@<13 \let\@@newskdim=\noexpand@newskip
|
||
|
\else \let\@@newskdim=\noexpand@newdimen
|
||
|
\fi \@@newskdim}%
|
||
|
%
|
||
|
% registers for instrument
|
||
|
\newdimen\interinstrument % moved from "distance between instruments" to here
|
||
|
\def\setmaxinstruments#1{%
|
||
|
\ifnum#1>\@oldmaxinstruments
|
||
|
\chardef\maxinstruments=#1\relax
|
||
|
\ifnum#1>\@c
|
||
|
\errmessage{The maximum reference number of elements is limited to \the\@c}
|
||
|
\chardef\maxinstruments=\@c
|
||
|
\fi
|
||
|
\count@\@oldmaxinstruments\loop
|
||
|
\advance\count@ by\@ne
|
||
|
%
|
||
|
\expandafter \let \csname interinstrument\roman@c@\endcsname \interinstrument
|
||
|
\expandafter\def\csname interfacteur\roman@c@\endcsname{\interfacteur}% RDT 1.26
|
||
|
%
|
||
|
% altitude
|
||
|
\expandafter \noexpand@newskip \csname k@i\roman@c@\endcsname
|
||
|
%
|
||
|
% InterNote
|
||
|
\expandafter \noexpand@newdimsk \csname i@n\roman@c@\endcsname
|
||
|
%
|
||
|
% beam horizontal positions: x=start, z=end, 8th-64th beams
|
||
|
\expandafter \noexpand@newdimsk \csname b@x\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newdimsk \csname b@z\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newdimsk \csname c@x\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newskdim \csname c@z\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newdimsk \csname d@x\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newskdim \csname d@z\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newdimsk \csname e@x\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newskdim \csname e@z\roman@c@\endcsname
|
||
|
%
|
||
|
% pentes des poutres ( entier de -9 a +9 ) (slopes of the beams)
|
||
|
% multiplicite des poutres ( de -5 a +5 . 0= inactive ) (multiplicity of the beams)
|
||
|
\expandafter \noexpand@newcount \csname b@p\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newcount \csname b@n\roman@c@\endcsname
|
||
|
%
|
||
|
% Number of Portees
|
||
|
\expandafter \noexpand@newcount \csname n@p\roman@c@\endcsname
|
||
|
\csname n@p\roman@c@\endcsname\@ne
|
||
|
%
|
||
|
% Actual Signs
|
||
|
\expandafter \noexpand@newcount \csname a@s\roman@c@\endcsname
|
||
|
%
|
||
|
% Old Signs
|
||
|
\expandafter \noexpand@newcount \csname o@s\roman@c@\endcsname
|
||
|
%
|
||
|
% ActualCleftoks
|
||
|
\expandafter \noexpand@newtoks \csname a@c\roman@c@\endcsname
|
||
|
\csname a@c\roman@c@\endcsname={{\z@}{\z@}{\z@}{\z@}}%
|
||
|
%
|
||
|
% OldCleftoks
|
||
|
\expandafter \noexpand@newtoks \csname o@c\roman@c@\endcsname
|
||
|
%
|
||
|
% MeterToks
|
||
|
\expandafter \noexpand@newtoks \csname m@t\roman@c@\endcsname
|
||
|
%
|
||
|
% staffsize
|
||
|
\expandafter \let \csname staffspacing\roman@c@\endcsname \@ne
|
||
|
%
|
||
|
% text, lyrics, free positioning of chars
|
||
|
\expandafter \let \csname T@R\roman@c@\endcsname \z@
|
||
|
%
|
||
|
% preset clef symbols
|
||
|
\expandafter \let \csname treblec@s\roman@c@\endcsname \z@
|
||
|
\expandafter \let \csname altoc@s\roman@c@\endcsname \z@
|
||
|
\expandafter \let \csname bassc@s\roman@c@\endcsname \z@
|
||
|
%
|
||
|
% preset default staff lines as 5
|
||
|
\expandafter \let \csname n@l\roman@c@\endcsname \fiv@
|
||
|
%
|
||
|
\ifnum\count@<\maxinstruments\repeat
|
||
|
\expandafter\message\expandafter{maxinstruments=\the\maxinstruments}%
|
||
|
\chardef\@oldmaxinstruments=\maxinstruments\relax%
|
||
|
\normalnotesize\resetlayout
|
||
|
\fi
|
||
|
}%
|
||
|
%
|
||
|
% registers for 128th beam
|
||
|
\def\setmaxcxxviiibeams#1{%
|
||
|
\ifnum#1>\maxinstruments
|
||
|
\errmessage{The number of 128th beam must not exceed maxinstruments}%
|
||
|
\else
|
||
|
\ifnum#1>\@oldmaxcxxviiibeams
|
||
|
\chardef\maxcxxviiibeams=#1\relax
|
||
|
\ifnum#1>\@c
|
||
|
\errmessage{The maximum reference number of elements is limited to \the\@c}
|
||
|
\chardef\maxcxxviiibeams=\@c
|
||
|
\fi
|
||
|
\count@\@oldmaxcxxviiibeams \loop
|
||
|
\advance\count@ by\@ne
|
||
|
\expandafter \noexpand@newdimen \csname f@x\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newskdim \csname f@z\roman@c@\endcsname
|
||
|
\ifnum\count@<\maxcxxviiibeams\repeat
|
||
|
\expandafter\message\expandafter{max128beams=\the\maxcxxviiibeams}%
|
||
|
\chardef\@oldmaxcxxviiibeams=\maxcxxviiibeams\relax%
|
||
|
\fi
|
||
|
\fi
|
||
|
}%
|
||
|
%
|
||
|
% registers for 256th beam
|
||
|
\def\setmaxcclvibeams#1{%
|
||
|
\ifnum#1>\maxcxxviiibeams
|
||
|
\errmessage{The number of 256th beam must not exceed the number of 128th beam}%
|
||
|
\else
|
||
|
\ifnum#1>\@oldmaxcclvibeams
|
||
|
\chardef\maxcclvibeams=#1\relax
|
||
|
\ifnum#1>\@c
|
||
|
\errmessage{The maximum reference number of elements is limited to \the\@c}
|
||
|
\chardef\maxcclvibeams=\@c
|
||
|
\fi
|
||
|
\count@\@oldmaxcclvibeams \loop
|
||
|
\advance\count@ by\@ne
|
||
|
\expandafter \noexpand@newdimen \csname g@x\roman@c@\endcsname
|
||
|
\expandafter \noexpand@newskdim \csname g@z\roman@c@\endcsname
|
||
|
\ifnum\count@<\maxcclvibeams\repeat
|
||
|
\expandafter\message\expandafter{max256beams=\the\maxcclvibeams}%
|
||
|
\chardef\@oldmaxcclvibeams=\maxcclvibeams\relax%
|
||
|
\fi
|
||
|
\fi
|
||
|
}%
|
||
|
%
|
||
|
% registers for choir group
|
||
|
\def\setmaxgroups#1{%
|
||
|
\ifnum#1>\@oldmaxgroups
|
||
|
\chardef\maxgroups=#1\relax
|
||
|
\ifnum#1>\@c
|
||
|
\errmessage{The maximum reference number of elements is limited to \the\@c}
|
||
|
\chardef\maxgroups=\@c
|
||
|
\fi
|
||
|
\count@\@oldmaxgroups \loop
|
||
|
\advance\count@ by\@ne
|
||
|
% Altitude
|
||
|
\expandafter \noexpand@newskip \csname g@b\roman@c@\endcsname
|
||
|
% Height
|
||
|
\expandafter \noexpand@newskip \csname g@h\roman@c@\endcsname
|
||
|
%
|
||
|
\expandafter \let \csname lowersonginstrum\roman@c@\endcsname \maxdimen
|
||
|
\expandafter \let \csname uppersonginstrum\roman@c@\endcsname \z@
|
||
|
\ifnum\count@<\maxgroups\repeat
|
||
|
\expandafter\message\expandafter{maxgroups=\the\maxgroups}%
|
||
|
\chardef\@oldmaxgroups=\maxgroups\relax%
|
||
|
\fi
|
||
|
}%
|
||
|
%
|
||
|
% registers for slur
|
||
|
\def\setmaxslurs#1{%
|
||
|
\ifnum#1>\@oldmaxslurs
|
||
|
\chardef\maxslurs=#1\relax
|
||
|
\ifnum#1>\@c
|
||
|
\errmessage{The maximum reference number of elements is limited to \the\@c}
|
||
|
\chardef\maxslurs=\@c
|
||
|
\fi
|
||
|
\count@\@oldmaxslurs \loop
|
||
|
\advance\count@ by\@ne
|
||
|
%
|
||
|
% horizontal start position of slur
|
||
|
\expandafter \noexpand@newdimsk \csname s@x\roman@c@\endcsname
|
||
|
%
|
||
|
% sense u,d and x (flag) for pending slurs
|
||
|
\expandafter \noexpand@newtoks \csname s@s\roman@c@\endcsname
|
||
|
\csname s@s\roman@c@\endcsname={x}%
|
||
|
%
|
||
|
% vertical offset of slur
|
||
|
\expandafter \noexpand@newdimsk \csname s@Y\roman@c@\endcsname
|
||
|
%
|
||
|
% altportee of slur
|
||
|
\expandafter \noexpand@newskip \csname s@a\roman@c@\endcsname
|
||
|
%
|
||
|
% vertical start position of slur [steps of internote]
|
||
|
\expandafter \noexpand@newcount \csname s@y\roman@c@\endcsname
|
||
|
%
|
||
|
% instrument number of that slur (to retrieve internote)
|
||
|
\expandafter \noexpand@newcount \csname s@N\roman@c@\endcsname
|
||
|
%
|
||
|
% vertical end position of slur [steps of internote], used from
|
||
|
% \breakslur. the value \maxdimen is used to decide, if
|
||
|
% \breakslur is used or not (flag)
|
||
|
\expandafter \noexpand@newcount \csname s@z\roman@c@\endcsname
|
||
|
\csname s@z\roman@c@\endcsname\maxdimen
|
||
|
%
|
||
|
%++ickd: dotted indicator for pending slurs
|
||
|
\expandafter \noexpand@newtoks \csname s@d\roman@c@\endcsname
|
||
|
%
|
||
|
\ifnum\count@<\maxslurs\repeat
|
||
|
\expandafter\message\expandafter{maxslurs=\the\maxslurs}%
|
||
|
\chardef\@oldmaxslurs=\maxslurs\relax%
|
||
|
\fi
|
||
|
}%
|
||
|
%
|
||
|
% registers for trill (MusiXTeX-type trill only. Legacy \trillC and
|
||
|
% \TrillC are out of the scope.)
|
||
|
\def\setmaxtrills#1{%
|
||
|
\ifnum#1>\@oldmaxtrills
|
||
|
\chardef\maxtrills=#1\relax
|
||
|
\ifnum#1>\@c
|
||
|
\errmessage{The maximum reference number of elements is limited to \the\@c}
|
||
|
\chardef\maxtrills=\@c
|
||
|
\fi
|
||
|
\count@\@oldmaxtrills \loop
|
||
|
\advance\count@ by\@ne
|
||
|
% starting horizontal pos
|
||
|
\expandafter \noexpand@newskip \csname tr@x\roman@c@\endcsname
|
||
|
\csname tr@x\roman@c@\endcsname\maxdimen\relax
|
||
|
% heading of trill
|
||
|
\expandafter \noexpand@newtoks \csname tr@sw\roman@c@\endcsname
|
||
|
% height of trill
|
||
|
\expandafter \noexpand@newskip \csname tr@y\roman@c@\endcsname
|
||
|
\ifnum\count@<\maxtrills\repeat
|
||
|
\expandafter\message\expandafter{maxtrills=\the\maxtrills}%
|
||
|
\chardef\@oldmaxtrills=\maxtrills\relax%
|
||
|
\fi
|
||
|
}%
|
||
|
%
|
||
|
% registers for octave line
|
||
|
\def\setmaxoctlines#1{%
|
||
|
\ifnum#1>\@oldmaxoctlines
|
||
|
\chardef\maxoctlines=#1\relax
|
||
|
\ifnum#1>\@c
|
||
|
\errmessage{The maximum reference number of elements is limited to \the\@c}
|
||
|
\chardef\maxoctlines=\@c
|
||
|
\fi
|
||
|
\count@\@oldmaxoctlines \loop
|
||
|
\advance\count@ by\@ne
|
||
|
% starting horizontal pos
|
||
|
\expandafter \noexpand@newskip \csname o@x\roman@c@\endcsname
|
||
|
\csname o@x\roman@c@\endcsname\maxdimen\relax
|
||
|
% height of octline
|
||
|
\expandafter \noexpand@newskip \csname o@y\roman@c@\endcsname
|
||
|
% sense of octline
|
||
|
\expandafter \noexpand@newtoks \csname o@sw\roman@c@\endcsname
|
||
|
\ifnum\count@<\maxoctlines\repeat
|
||
|
\expandafter\message\expandafter{maxoctlines=\the\maxoctlines}%
|
||
|
\chardef\@oldmaxoctlines=\maxoctlines\relax%
|
||
|
\fi
|
||
|
}%
|
||
|
%
|
||
|
\chardef\@oldmaxinstruments=\z@
|
||
|
\chardef\@oldmaxcxxviiibeams=\z@
|
||
|
\chardef\@oldmaxcclvibeams=\z@
|
||
|
\chardef\@oldmaxgroups=\z@
|
||
|
\chardef\@oldmaxslurs=\z@
|
||
|
\chardef\@oldmaxtrills=\z@
|
||
|
\chardef\@oldmaxoctlines=\z@
|
||
|
%
|
||
|
% actual setup (=register allocation) of the maximum element numbers
|
||
|
% should be done after fonts definition.
|
||
|
%
|
||
|
%%% [version 1.15] new register allocation code -- until here --
|
||
|
|
||
|
|
||
|
%%% fonts
|
||
|
|
||
|
\newif\iflongDCfontnames
|
||
|
\newif\iflongECfontnames
|
||
|
\longDCfontnamesfalse % obsolete
|
||
|
\longECfontnamesfalse % to use EC fonts, \input musixec
|
||
|
\def\fontid{cm} % deprecated but used in pmx.tex
|
||
|
|
||
|
%%
|
||
|
% Small bold sans serif fonts % version 1.33 RDT
|
||
|
%%
|
||
|
|
||
|
\font\threedc=phvb8t at 3pt
|
||
|
\font\fourdc=phvb8t at 4pt
|
||
|
\font\fivedc=phvb8t at 5pt
|
||
|
\font\sixdc=phvb8t at 6pt
|
||
|
|
||
|
%%
|
||
|
% Seven point fonts
|
||
|
%%
|
||
|
|
||
|
\font\sevenrm=cmr7
|
||
|
\font\sevenbf=cmbx7
|
||
|
\font\sevenit=cmti7
|
||
|
\font\sevenbi=cmbxti10 at 7pt % version 1.22 RDT
|
||
|
\font\sevensc=cmcsc10 at 7pt
|
||
|
\font\sevenss=phvr8t at 7pt % version 1.29 RDT
|
||
|
\font\sevendc=phvb8t at 7pt
|
||
|
|
||
|
|
||
|
%%
|
||
|
% Eight point fonts
|
||
|
%%
|
||
|
|
||
|
\font\eightrm=cmr8
|
||
|
\font\eightbf=cmbx8
|
||
|
\font\eightit=cmti8
|
||
|
\font\eightbi=cmbxti10 at 8pt % version 1.22 RDT
|
||
|
\font\eightsc=cmcsc10 at 8pt
|
||
|
\font\eightss=phvr8t at 8pt % version 1.29 RDT
|
||
|
\font\eightdc=phvb8t at 8pt
|
||
|
|
||
|
%%
|
||
|
% Nine point fonts
|
||
|
%%
|
||
|
|
||
|
\font\ninerm=cmr9
|
||
|
\font\ninebf=cmbx9
|
||
|
\font\nineit=cmti9
|
||
|
\font\ninebi=cmbxti10 at 9pt % version 1.22 RDT
|
||
|
\font\ninesc=cmcsc10 at 9pt
|
||
|
\font\niness=phvr8t at 9pt % version 1.29 RDT
|
||
|
\font\ninedc=phvb8t at 9pt
|
||
|
|
||
|
%%
|
||
|
% Ten point fonts
|
||
|
%%
|
||
|
|
||
|
\font\tenrm=cmr10
|
||
|
\font\tenbf=cmbx10
|
||
|
\font\tenit=cmti10
|
||
|
\font\tenbi=cmbxti10 % version 1.22 RDT
|
||
|
\font\tensc=cmcsc10
|
||
|
\font\tenss=phvr8t % version 1.29 RDT
|
||
|
\font\tendc=phvb8t
|
||
|
|
||
|
%%
|
||
|
% Eleven point fonts
|
||
|
%%
|
||
|
\font\elevenrm=cmr9 scaled \magstephalf
|
||
|
\font\elevenbf=cmbx9 scaled \magstephalf
|
||
|
\font\elevenit=cmti9 scaled \magstephalf
|
||
|
\font\elevenbi=cmbxti10 at 11pt % version 1.22 RDT
|
||
|
\font\elevensc=cmcsc10 at 11pt
|
||
|
\font\elevenss=phvr8t at 11pt % version 1.29 RDT
|
||
|
\font\elevendc=phvb8t at 11pt
|
||
|
|
||
|
%%
|
||
|
% Twelve point fonts
|
||
|
%%
|
||
|
\font\twelverm=cmr12
|
||
|
\font\twelvebf=cmbx12
|
||
|
\font\twelveit=cmti12
|
||
|
\font\twelvebi=cmbxti10 scaled \magstep1 % version 1.22 RDT
|
||
|
\font\twelvesc=cmcsc10 scaled \magstep1
|
||
|
\font\twelvess=phvr8t scaled \magstep1 % version 1.29 RDT
|
||
|
\font\twelvedc=phvb8t scaled \magstep1
|
||
|
|
||
|
% 14pt fonts
|
||
|
\font\frtrm=cmr12 scaled \magstep1
|
||
|
\font\frtbf=cmbx12 scaled \magstep1
|
||
|
\font\frtit=cmti12 scaled \magstep1
|
||
|
\font\frtsc=cmcsc10 scaled \magstep2
|
||
|
\font\frtbi=cmbxti10 scaled \magstep2 % version 1.22 RDT
|
||
|
\font\frtss=phvr8t scaled \magstep2 % version 1.29 RDT
|
||
|
\font\frtdc=phvb8t scaled \magstep2
|
||
|
%
|
||
|
% 17pt
|
||
|
\font\svtrm=cmr12 scaled \magstep2
|
||
|
\font\svtbf=cmbx12 scaled \magstep2
|
||
|
\font\svtit=cmti12 scaled \magstep2
|
||
|
\font\svtsc=cmcsc10 scaled \magstep3
|
||
|
\font\svtbi=cmbxti10 scaled \magstep3
|
||
|
\font\svtdc=phvb8t scaled \magstep3
|
||
|
%
|
||
|
% 20pt
|
||
|
\font\twtyrm=cmr12 scaled \magstep3
|
||
|
\font\twtybf=cmbx12 scaled \magstep3
|
||
|
\font\twtyit=cmti12 scaled \magstep3
|
||
|
\font\twtysc=cmcsc10 scaled \magstep4
|
||
|
\font\twtybi=cmbxti10 scaled \magstep4 % version 1.22 RDT
|
||
|
\font\twtydc=phvb8t scaled \magstep4
|
||
|
%
|
||
|
% 25pt
|
||
|
\font\twfvrm=cmr12 scaled \magstep4
|
||
|
\font\twfvbf=cmbx12 scaled \magstep4
|
||
|
\font\twfvit=cmti12 scaled \magstep4
|
||
|
\font\twfvsc=cmcsc10 scaled \magstep5
|
||
|
\font\twfvbi=cmbxti10 scaled \magstep5 % version 1.22 RDT
|
||
|
%
|
||
|
%%
|
||
|
%%
|
||
|
% Define five font families
|
||
|
%%
|
||
|
\def\tinytype{%
|
||
|
\let\rm\sevenrm
|
||
|
\let\bf\sevenbf
|
||
|
\let\it\sevenit
|
||
|
\let\bi\sevenbi
|
||
|
\let\sc\sevensc
|
||
|
\rm}
|
||
|
\def\smalltype{%
|
||
|
\let\rm\eightrm
|
||
|
\let\bf\eightbf
|
||
|
\let\it\eightit
|
||
|
\let\bi\eightbi
|
||
|
\let\sc\eightsc
|
||
|
\rm}
|
||
|
\def\Smalltype{%
|
||
|
\let\rm\ninerm
|
||
|
\let\bf\ninebf
|
||
|
\let\it\nineit
|
||
|
\let\bi\ninebi
|
||
|
\let\sc\ninesc
|
||
|
\rm}
|
||
|
\def\normtype{%
|
||
|
\let\rm\tenrm
|
||
|
\let\bf\tenbf
|
||
|
\let\it\tenit
|
||
|
\let\bi\tenbi
|
||
|
\let\sc\tensc
|
||
|
\rm}
|
||
|
\def\medtype{%
|
||
|
\let\rm\twelverm
|
||
|
\let\bf\twelvebf
|
||
|
\let\it\twelveit
|
||
|
\let\bi\twelvebi
|
||
|
\let\sc\twelvesc
|
||
|
\rm}
|
||
|
%
|
||
|
% four font families at big/Big/BIg/BIG sizes
|
||
|
% default is \bf here and in musixec, but \sc in musixplt, \rm in musixtmr
|
||
|
%
|
||
|
\def\bigfont{%
|
||
|
\let\rm\frtrm
|
||
|
\let\bf\frtbf
|
||
|
\let\it\frtit
|
||
|
\let\sc\frtsc
|
||
|
\let\bi\frtbi
|
||
|
\bf}
|
||
|
\def\Bigfont{%
|
||
|
\let\rm\svtrm
|
||
|
\let\bf\svtbf
|
||
|
\let\it\svtit
|
||
|
\let\sc\svtsc
|
||
|
\let\bi\svtbi
|
||
|
\bf}
|
||
|
\def\BIgfont{%
|
||
|
\let\rm\twtyrm
|
||
|
\let\bf\twtybf
|
||
|
\let\it\twtyit
|
||
|
\let\sc\twtysc
|
||
|
\let\bi\twtybi
|
||
|
\bf}
|
||
|
\def\BIGfont{%
|
||
|
\let\rm\twfvrm
|
||
|
\let\bf\twfvbf
|
||
|
\let\it\twfvit
|
||
|
\let\sc\twfvsc
|
||
|
\let\bi\twfvbi
|
||
|
\bf}
|
||
|
%%
|
||
|
% large fonts for titles
|
||
|
% (If you prefer Roman, use \rm)
|
||
|
% (If you prefer small-caps, use \sc)
|
||
|
%
|
||
|
\def\bigtype{\bigfont\bf} % default for "big" fonts is \bf
|
||
|
\def\Bigtype{\Bigfont\bf}
|
||
|
\def\BIgtype{\BIgfont\bf}
|
||
|
\def\BIGtype{\BIGfont\bf}
|
||
|
%
|
||
|
%
|
||
|
% Bold italic fonts for dynamic markings.
|
||
|
%%
|
||
|
|
||
|
\font\ppfftwelve=cmbxti10 at 8pt % version 1.17 RDT
|
||
|
\font\ppffsixteen=cmbxti10
|
||
|
\font\ppfftwenty=cmbxti10 scaled \magstep1
|
||
|
\font\ppfftwentyfour=cmbxti10 scaled \magstep2
|
||
|
\font\ppfftwentynine=cmbxti10 scaled \magstep3
|
||
|
|
||
|
\def\ppff{\ifdim\internote<\p@seven6\Internote\tinyppff% version 1.17 RDT
|
||
|
\else\ifdim\internote<.95\Internote\smallppff%
|
||
|
\else\ifdim\internote<1.19\Internote\normppff%
|
||
|
\else\medppff\fi\fi\fi}%
|
||
|
|
||
|
|
||
|
\def\tinydyn{\let\ppff\ppfftwelve} % version 1.18 RDT
|
||
|
\def\smalldyn{\let\ppff\ppffsixteen}
|
||
|
\def\normdyn{\let\ppff\ppfftwenty}
|
||
|
\def\meddyn{\let\ppff\ppfftwentyfour}
|
||
|
|
||
|
\font\tabfntthirteen=phvb8t at 4pt % version 1.34 RDT
|
||
|
\font\tabfntsixteen=phvb8t at 5pt
|
||
|
\font\tabfnttwenty=phvb8t at 6pt
|
||
|
\font\tabfnttwentyfour=phvb8t at 8pt
|
||
|
\font\tabfnttwentynine=phvb8t at 10pt
|
||
|
|
||
|
\font\musiceleven=musix11
|
||
|
\font\musicthirteen=musix13
|
||
|
\font\musicsixteen=musix16
|
||
|
\font\musictwenty=musix20
|
||
|
\font\musictwentyfour=musix24
|
||
|
\font\musictwentynine=musix29
|
||
|
|
||
|
|
||
|
%
|
||
|
% tt fonts needed by musixsty % version 1.22 RDT
|
||
|
%
|
||
|
\font\eighttt=cmtt8
|
||
|
\font\ninett=cmtt9
|
||
|
\font\tentt=cmtt10
|
||
|
\font\twelvett=cmtt12
|
||
|
\font\frttt=cmtt12 scaled \magstep1
|
||
|
\font\svttt=cmtt12 scaled \magstep2
|
||
|
\font\twtytt=cmtt12 scaled \magstep3
|
||
|
\font\twfvtt=cmtt12 scaled \magstep4
|
||
|
%
|
||
|
%
|
||
|
% sl fonts needed by musixsty % version 1.22 RDT
|
||
|
%
|
||
|
\font\eightsl=cmsl8
|
||
|
\font\ninesl=cmsl9
|
||
|
\font\tensl=cmsl10
|
||
|
\font\twelvesl=cmsl12
|
||
|
\font\frtsl=cmsl12 scaled \magstep1
|
||
|
\font\svtsl=cmsl12 scaled \magstep2
|
||
|
\font\twtysl=cmsl12 scaled \magstep3
|
||
|
\font\twfvsl=cmsl12 scaled \magstep4
|
||
|
|
||
|
% piano brackets, slides, guitar chords, lines, (de)crescendi, circles
|
||
|
|
||
|
\font\mxsps=musixspx
|
||
|
|
||
|
|
||
|
%%%
|
||
|
%
|
||
|
% Slur macro package for MusicTeX
|
||
|
%
|
||
|
% Ross Mitchell, February 20 1993
|
||
|
%
|
||
|
%%%
|
||
|
%%
|
||
|
% Load the font set
|
||
|
%
|
||
|
% Nomenclature: slur[p][size]
|
||
|
% [p] : sign of slur gradient; u=positive, d=negative, z=zero
|
||
|
%%
|
||
|
|
||
|
\font\slurz=xslz20
|
||
|
\font\slurzd=xslz20d %+ickd
|
||
|
|
||
|
\font\slurueleven=xslu11 % slur up eleven points
|
||
|
\font\sluruthirteen=xslu13
|
||
|
\font\slurusixteen=xslu16
|
||
|
\font\slurutwenty=xslu20
|
||
|
\font\slurutwentyfour=xslu24
|
||
|
\font\slurutwentynine=xslu29
|
||
|
|
||
|
\font\slurdeleven=xsld11 % slur down eleven points
|
||
|
\font\slurdthirteen=xsld13
|
||
|
\font\slurdsixteen=xsld16
|
||
|
\font\slurdtwenty=xsld20
|
||
|
\font\slurdtwentyfour=xsld24
|
||
|
\font\slurdtwentynine=xsld29
|
||
|
|
||
|
%++ickd same for dotted slurs
|
||
|
\font\sluruelevend=xslu11d % slur up eleven points
|
||
|
\font\sluruthirteend=xslu13d
|
||
|
\font\slurusixteend=xslu16d
|
||
|
\font\slurutwentyd=xslu20d
|
||
|
\font\slurutwentyfourd=xslu24d
|
||
|
\font\slurutwentynined=xslu29d
|
||
|
|
||
|
\font\slurdelevend=xsld11d % slur down eleven points
|
||
|
\font\slurdthirteend=xsld13d
|
||
|
\font\slurdsixteend=xsld16d
|
||
|
\font\slurdtwentyd=xsld20d
|
||
|
\font\slurdtwentyfourd=xsld24d
|
||
|
\font\slurdtwentynined=xsld29d
|
||
|
%++ickd
|
||
|
|
||
|
%!these fonts can't be used with highres printers (>~800dpi)
|
||
|
% for these printers comes a interface to PS using DVIPS (PS-Tricks)
|
||
|
% and \special{}-commands next time (patience is a virtue ...)
|
||
|
|
||
|
\font\xtie=xslhz20
|
||
|
\font\xtied=xslhz20d %+ickd
|
||
|
|
||
|
\font\hslurdeleven=xslhd11 % slur half down eleven points
|
||
|
\font\hslurdthirteen=xslhd13
|
||
|
\font\hslurdsixteen=xslhd16 % slur half down sixteen points
|
||
|
\font\hslurdtwenty=xslhd20
|
||
|
\font\hslurdtwentyfour=xslhd24
|
||
|
\font\hslurdtwentynine=xslhd29
|
||
|
|
||
|
\font\hslurueleven=xslhu11
|
||
|
\font\hsluruthirteen=xslhu13
|
||
|
\font\hslurusixteen=xslhu16
|
||
|
\font\hslurutwenty=xslhu20
|
||
|
\font\hslurutwentyfour=xslhu24
|
||
|
\font\hslurutwentynine=xslhu29
|
||
|
|
||
|
%++ickd same for dotted slurs
|
||
|
\font\hslurdelevend=xslhd11d % slur half down eleven points
|
||
|
\font\hslurdthirteend=xslhd13d
|
||
|
\font\hslurdsixteend=xslhd16d % slur half down sixteen points
|
||
|
\font\hslurdtwentyd=xslhd20d
|
||
|
\font\hslurdtwentyfourd=xslhd24d
|
||
|
\font\hslurdtwentynined=xslhd29d
|
||
|
|
||
|
\font\hsluruelevend=xslhu11d
|
||
|
\font\hsluruthirteend=xslhu13d
|
||
|
\font\hslurusixteend=xslhu16d
|
||
|
\font\hslurutwentyd=xslhu20d
|
||
|
\font\hslurutwentyfourd=xslhu24d
|
||
|
\font\hslurutwentynined=xslhu29d
|
||
|
%++ickd
|
||
|
|
||
|
% number of pending slurs
|
||
|
|
||
|
\newcount\N@s
|
||
|
|
||
|
% [version 1.15] moved out to the new register allocation code (except for \s@Y)
|
||
|
% horizontal start position of slur
|
||
|
% \newdimen\s@xi
|
||
|
% sense u,d and x (flag) for pending slurs
|
||
|
% \newtoks\s@si \s@si={x}
|
||
|
% vertical offset of slur
|
||
|
\newdimen\s@Y % this register is for common use
|
||
|
% \newdimen\s@Yi
|
||
|
% altportee of slur
|
||
|
% \newskip\s@ai
|
||
|
% vertical start position of slur [steps of internote]
|
||
|
% \newcount\s@yi
|
||
|
% instrument number of that slur (to retrieve internote)
|
||
|
% \newcount\s@Ni
|
||
|
% vertical end position of slur [steps of internote], used from \breakslur
|
||
|
% the value \maxdimen is used to decide, if \breakslur is used or not (flag)
|
||
|
% \newcount\s@zi \s@zi\maxdimen
|
||
|
%++ickd: dotted indicator for pending slurs
|
||
|
% \newtoks\s@di % moved out to the new register allocation code
|
||
|
%++ickd
|
||
|
|
||
|
\def\roman@n@i{\romannumeral\n@i\endcsname}
|
||
|
|
||
|
%
|
||
|
% [version 1.15] make slurs independent from \maxinstruments
|
||
|
\def\test@slurnum{%
|
||
|
\ifnum\n@i<\z@ \n@i\@c \fi
|
||
|
\ifnum\n@i<\maxslurs \else
|
||
|
\count@\maxslurs \advance\count@\m@ne
|
||
|
\errmessage{Wrong slur reference number \the\n@i! (valid: 0 to \the\count@)}% [version 1.15]
|
||
|
\n@i\z@% [version 1.15]
|
||
|
\fi
|
||
|
\advance\n@i\@ne}%
|
||
|
%
|
||
|
\def\s@l@ctslur#1\relax{%
|
||
|
\n@i#1\relax\test@slurnum% [version 1.15] make it independent from beams
|
||
|
\edef\s@a{\csname s@a\roman@n@i}% dimen (altportee)
|
||
|
\edef\s@x{\csname s@x\roman@n@i}% dimen (hor start pos)
|
||
|
\edef\s@y{\csname s@y\roman@n@i}% count (startnote [internote])
|
||
|
\edef\s@N{\csname s@N\roman@n@i}% count (instrument number)
|
||
|
\edef\s@z{\csname s@z\roman@n@i}% count (endnote [internote])
|
||
|
\edef\s@Y{\csname s@Y\roman@n@i}% dimen (voffset)
|
||
|
\edef\s@d{\csname s@d\roman@n@i}% token (dotted) +ickd
|
||
|
\edef\s@s{\csname s@s\roman@n@i}}% token (sense)
|
||
|
|
||
|
% get current position (returns the dimen in \y@v)
|
||
|
% (\lin@pos starts behind signatures!)
|
||
|
|
||
|
\newdimen\lin@pos
|
||
|
\def\getcurpos{\y@v\lin@pos \advance\y@v\locx@skip}
|
||
|
|
||
|
% \n@i vertical offset of first note (number); temporary
|
||
|
% \n@ii vertical offset of second note (number); temporary
|
||
|
% \n@iii meet note
|
||
|
% \n@iv first note
|
||
|
% \n@v temp. character
|
||
|
% \n@vi last note
|
||
|
% \n@vii right halfslur length
|
||
|
% \n@viii don't touch
|
||
|
% \y@ complete length of slur - allowed overlap (4pt), temp. length
|
||
|
% \y@i abs. height of slur
|
||
|
% \y@ii complete length of slur
|
||
|
% \y@iii old maxslurwidth
|
||
|
% \y@iv don't touch
|
||
|
% \y@v don't touch
|
||
|
|
||
|
% \@sense{u,d}
|
||
|
%
|
||
|
% if \curve (\midslur) is used
|
||
|
% \@meet{}
|
||
|
% \l@length{}
|
||
|
% \r@length{}
|
||
|
|
||
|
% #1 start pitch #2 end pitch #3 length #4 right hoffset
|
||
|
|
||
|
\newcount \meet@minus@n@iv
|
||
|
\def\writ@slur#1#2#3#4{\check@staff % modified: sld... into slurd... 12.04.95 ick
|
||
|
\let\slz\slurz% inserted
|
||
|
\let\slzd\slurzd% inserted for dotted slurs +ickd
|
||
|
\ifx\s@N\undefined \relax % \let\internote\Internote
|
||
|
\else
|
||
|
\edef\internote{\csname i@n\romannumeral\s@N\endcsname}%
|
||
|
\fi
|
||
|
% \immediate\write16{\noexpand\writ@slur internote:\the\internote}%
|
||
|
\n@iv#1%
|
||
|
\n@vi#2%
|
||
|
%%
|
||
|
% Get note vertical offsets
|
||
|
% \n@iv= vertical offset of first note(n@i temp);
|
||
|
% \n@vi= vertical offset of second note(n@ii temp);
|
||
|
% \y@i = reference height of first note (pt);
|
||
|
%
|
||
|
% Define adequate fonts for this slur, according to the value of \internote
|
||
|
%
|
||
|
\ifdim\internote>3.5pt
|
||
|
\let\sld\slurdtwentynine \let\slu\slurutwentynine
|
||
|
\let\hslurd\hslurdtwentynine \let\hsluru\hslurutwentynine
|
||
|
\let\sldd\slurdtwentynined \let\slud\slurutwentynined % +ickd
|
||
|
\let\hslurdd\hslurdtwentynined \let\hslurud\hslurutwentynined %+ickd
|
||
|
\def\@stepwidth{3.6pt}%
|
||
|
\else \ifdim\internote>2.9pt
|
||
|
\let\sld\slurdtwentyfour \let\slu\slurutwentyfour
|
||
|
\let\hslurd\hslurdtwentyfour \let\hsluru\hslurutwentyfour
|
||
|
\let\sldd\slurdtwentyfourd \let\slud\slurutwentyfourd % +ickd
|
||
|
\let\hslurdd\hslurdtwentyfourd \let\hslurud\hslurutwentyfourd %+ickd
|
||
|
\def\@stepwidth{3.0pt}%
|
||
|
\else \ifdim\internote>2.3pt
|
||
|
\let\sld\slurdtwenty \let\slu\slurutwenty
|
||
|
\let\hslurd\hslurdtwenty \let\hsluru\hslurutwenty
|
||
|
\let\sldd\slurdtwentyd \let\slud\slurutwentyd % +ickd
|
||
|
\let\hslurdd\hslurdtwentyd \let\hslurud\hslurutwentyd %+ickd
|
||
|
\def\@stepwidth{2.5pt}%
|
||
|
\else \ifdim\internote>1.8pt
|
||
|
\let\sld\slurdsixteen \let\slu\slurusixteen
|
||
|
\let\hslurd\hslurdsixteen \let\hsluru\hslurusixteen
|
||
|
\let\sldd\slurdsixteend \let\slud\slurusixteend % +ickd
|
||
|
\let\hslurdd\hslurdsixteend \let\hslurud\hslurusixteend %+ickd
|
||
|
\def\@stepwidth{2pt}%
|
||
|
\else \ifdim\internote>1.4pt
|
||
|
\let\sld\slurdthirteen \let\slu\sluruthirteen
|
||
|
\let\hslurd\hslurdthirteen \let\hsluru\hsluruthirteen
|
||
|
\let\sldd\slurdthirteend \let\slud\sluruthirteend % +ickd
|
||
|
\let\hslurdd\hslurdthirteend \let\hslurud\hsluruthirteend %+ickd
|
||
|
\def\@stepwidth{1.6pt}%
|
||
|
\else
|
||
|
\let\sld\slurdeleven \let\slu\slurueleven
|
||
|
\let\hslurd\hslurdeleven \let\hsluru\hslurueleven
|
||
|
\let\sldd\slurdelevend \let\slud\sluruelevend % +ickd
|
||
|
\let\hslurdd\hslurdelevend \let\hslurud\hsluruelevend %+ickd
|
||
|
\def\@stepwidth{1.28pt}%
|
||
|
\fi\fi\fi\fi\fi
|
||
|
%
|
||
|
% End choice of font
|
||
|
%
|
||
|
\n@i\n@iv \pl@base % \y@i = initial height
|
||
|
\n@ii\n@vi
|
||
|
%
|
||
|
% Select appropriate font
|
||
|
% Set \n@i to the vertical difference index
|
||
|
% setup \n@iii(meetnote)
|
||
|
%
|
||
|
\ifnum\n@ii=\n@i % Slope is zero
|
||
|
\n@iii\n@i
|
||
|
\if u\@sense \advance\n@iii\thr@@ \else \advance\n@iii-\thr@@ \fi
|
||
|
\def\@slope{z}\n@i\z@
|
||
|
\else
|
||
|
\ifnum\n@ii<\n@i % Slope is negative
|
||
|
\C@csl\n@i\n@ii\def\@slope{d}% % compute @meet height for slurs
|
||
|
\else % Slope is positive
|
||
|
\C@csl\n@ii\n@i\def\@slope{u}\n@i\n@ii % compute @meet height for slurs
|
||
|
\fi
|
||
|
\fi
|
||
|
%%
|
||
|
% Select the required font and load the width parameters
|
||
|
%
|
||
|
% Font specific parameters
|
||
|
% \y@iii is the horizontal width of the longest slur in the fonts
|
||
|
% This parameter is loaded from the tfm \fontdimen parameter 5
|
||
|
% respectively
|
||
|
%%
|
||
|
\y@iii\fontdimen\fiv@\csname sl\@slope\endcsname
|
||
|
\y@ii#3%
|
||
|
%
|
||
|
% \n@i contains slope (difference between start and end note)
|
||
|
%
|
||
|
% force longslurs if (!!! no check, be careful !!!)
|
||
|
% long slurs are at least 20[16] pt long) !!! Perhaps will change again !!!
|
||
|
% - difference between first note and last note > 8
|
||
|
% - if \curve or \midslur is def'd
|
||
|
% - if \invertslur is used
|
||
|
%
|
||
|
\ifnum\n@i>\@ight \y@iii\z@ \fi % RMslurs limit 8 steps
|
||
|
\ifx\@meet\empty \else\y@iii\z@ \fi
|
||
|
\ifx\@invert\@ne \y@iii\z@ \fi
|
||
|
\ifdim\y@ii>\y@iii % start of longslurs
|
||
|
%
|
||
|
% setup meet height of slur
|
||
|
%
|
||
|
\ifx\empty\@meet
|
||
|
% \immediate\write16{\noexpand\@meet was empty.}%
|
||
|
\else
|
||
|
\n@iii\n@iv
|
||
|
\advance\n@iii\@meet
|
||
|
\fi
|
||
|
\edef\@meet{\the\n@iii}%
|
||
|
% \immediate\write16{\noexpand\@meet = \@meet.}%
|
||
|
%
|
||
|
% allow a little bit overlap (2*2pt) for nicer outlook (as longer as nicer)
|
||
|
% clip to extremities
|
||
|
% compute the max length in fontunits (\count@)
|
||
|
%
|
||
|
\y@\y@ii \advance\y@\f@ur\p@ \n@v\y@
|
||
|
\sp@pt\t@n % 10pt steps
|
||
|
\advance\n@v-\f@ur % first brace is 20pt wide (perhaps 10pt is better ??)
|
||
|
\min@n@v\z@
|
||
|
\max@n@v\fourt@@n % largest braces are 2*((90pt-20pt)/10pt)
|
||
|
\count@\n@v % max length
|
||
|
%
|
||
|
% compute the length of the starting and ending halfslurs
|
||
|
% in case, that curve is not def'd
|
||
|
%
|
||
|
\ifx\empty\l@length
|
||
|
\divide\n@v\tw@ % 2 halfslurs
|
||
|
\n@vii\n@v
|
||
|
\n@ii\n@v
|
||
|
\def@lr
|
||
|
%
|
||
|
% first try to reach nicer long slurs without using \curve
|
||
|
%
|
||
|
\if z\@slope % leave ties untouched
|
||
|
\else
|
||
|
\ifnum\count@>\z@ % only for long slurs
|
||
|
\multiply\n@v\tw@
|
||
|
\if\@slope\@sense % uu,dd advance l@length ud,du advance r@length
|
||
|
\s@adjust\n@vii\n@ii
|
||
|
\else
|
||
|
\s@adjust\n@ii\n@vii
|
||
|
\fi
|
||
|
\def@lr
|
||
|
\fi
|
||
|
\fi
|
||
|
%
|
||
|
% adjust \curve parameters, if neccesary
|
||
|
%
|
||
|
\else
|
||
|
\n@vii\l@length
|
||
|
\n@ii\r@length
|
||
|
\loop
|
||
|
\count@\n@vii
|
||
|
\advance\count@\n@ii
|
||
|
\ifnum\count@>\n@v
|
||
|
\advance\n@vii\m@ne \ifnum\n@vii<\z@ \n@vii\z@ \fi
|
||
|
\advance\n@ii\m@ne \ifnum\n@ii<\z@ \n@ii\z@ \fi
|
||
|
\repeat
|
||
|
\def@lr
|
||
|
\fi
|
||
|
%
|
||
|
% clip to extremity heights (max slur height= 16\internote)
|
||
|
%
|
||
|
\C@csm\n@iv
|
||
|
\C@csm\n@vi
|
||
|
%
|
||
|
% change sense and offset behind linebreak and reset flag
|
||
|
%
|
||
|
\ifx\@invert\@ne \ifdim\s@x=\z@
|
||
|
\@invsl \let\@invert\empty \s@Y-\s@Y
|
||
|
\fi \fi
|
||
|
%
|
||
|
% compute final height and put the box
|
||
|
%
|
||
|
% \immediate\write16{ before @meet:\noexpand\y@i=\the\y@i}%
|
||
|
% \message{ was \noexpand\n@iv\the\n@iv}%
|
||
|
% \message{ was \noexpand\n@vi\the\n@vi}%
|
||
|
%
|
||
|
\meet@minus@n@iv=\@meet
|
||
|
\advance\meet@minus@n@iv-\n@iv
|
||
|
% \immediate\write16{\noexpand\meet@minus@n@iv=\the\meet@minus@n@iv}%
|
||
|
% \y@i\@meet\internote % \y@i final height
|
||
|
% change from DT for staffspacing not standard
|
||
|
\y@i \@stepwidth % part proportional to slur font size
|
||
|
\multiply \y@i \meet@minus@n@iv
|
||
|
\advance\y@i \n@iv\internote % was done by \pl@base...
|
||
|
%
|
||
|
\C@sof % add the voffsets
|
||
|
\llap{\raise\y@i\hbox\@to\y@ii{%
|
||
|
%
|
||
|
% compute the beginning and ending halfslur chars
|
||
|
% n@i firstslur
|
||
|
% n@ii lastslur
|
||
|
% n@v character
|
||
|
%
|
||
|
\C@cc\n@iv\n@i\n@ii
|
||
|
\C@cc\n@vi
|
||
|
%
|
||
|
\n@v\l@length
|
||
|
\multiply\n@v\sixt@@n % 16 different heigths
|
||
|
\advance\n@v\n@i % offset to length
|
||
|
\advance\n@v\@cxxviii % offset to starthalfslur
|
||
|
\@boX \box\ch@box\hss% put starthalfslur
|
||
|
\n@v\r@length
|
||
|
\multiply\n@v\sixt@@n
|
||
|
\advance\n@v\n@ii
|
||
|
%
|
||
|
% put ending halfslur in box
|
||
|
%
|
||
|
\ifx\@invert\@ne \@invsl \fi
|
||
|
\@boX
|
||
|
%
|
||
|
% put the middle extension (could be replaced by []rule)
|
||
|
%
|
||
|
\ifdim\y@ii>\p@ne\p@
|
||
|
\n@v\y@ii
|
||
|
\sp@pt\f@ur % 4pt steps
|
||
|
\ifx\@invert\@ne
|
||
|
\divide\n@v\tw@
|
||
|
\if u\@sense \advance\n@v\@cxxviii \fi
|
||
|
\mid@box\hss\hss% don't ask me why
|
||
|
\if u\@sense \advance\n@v-\@cxxviii \else \advance\n@v\@cxxviii \fi
|
||
|
\mid@box%
|
||
|
\else
|
||
|
\if d\@sense \advance\n@v\@cxxviii \fi
|
||
|
\mid@box \fi \fi
|
||
|
%
|
||
|
% place the end of slur and kern right horizontal offset
|
||
|
%
|
||
|
\hss\box\ch@box}\kern#4}%
|
||
|
%
|
||
|
% reset slurcurve
|
||
|
%
|
||
|
\global\let\@meet\empty
|
||
|
\let\l@length\empty
|
||
|
\let\@invert\empty
|
||
|
%
|
||
|
%>>>>>> start of RM slurs
|
||
|
% Set \n@v to the width index in the slur font table
|
||
|
%
|
||
|
\else
|
||
|
\ifdim\y@ii<\@ight\p@ \y@ii\@ight\p@ \fi % Clip to extremities
|
||
|
\y@\y@ii
|
||
|
\advance\y@-\si@\p@
|
||
|
\n@v\y@
|
||
|
\sp@pt\f@ur
|
||
|
%
|
||
|
% Find decimal character count into font table
|
||
|
% (a) Zero height slurs: charnum= width index
|
||
|
% (b) Others: charnum= 16*(height index - 1) + width index
|
||
|
% Place the character count in \n@v
|
||
|
%
|
||
|
\if z\@slope
|
||
|
\if d\@sense \advance\n@v\@liv \fi % \@liv(=54) offset to slurchars
|
||
|
\else
|
||
|
\advance\n@i\m@ne % height index - 1
|
||
|
\multiply\n@i\sixt@@n % 16*(height index - 1)
|
||
|
\advance\n@v\n@i % 16*(height index - 1) + width index
|
||
|
\if d\@sense \advance\n@v\@cxxviii \fi
|
||
|
\fi
|
||
|
%
|
||
|
% Place the slur character
|
||
|
%
|
||
|
\C@sof
|
||
|
\ifnum\n@v>255 % to avoid diags in case of...
|
||
|
\n@v=255\relax
|
||
|
\fi
|
||
|
\ifnum\n@v<0 % to avoid diags in case of...
|
||
|
\n@v=0\relax
|
||
|
\fi
|
||
|
%
|
||
|
\llap{\raise\y@i\hbox\@to\y@ii{%
|
||
|
%-ickd \hss\csname sl\@slope\endcsname\char\n@v\hss}\kern#4}%
|
||
|
\hss\csname sl\@slope\@dotted\endcsname\char\n@v\hss}\kern#4}%
|
||
|
\fi
|
||
|
\fi} % end writ@slur
|
||
|
|
||
|
|
||
|
\def\sp@pt#1{\divide\n@v65536\divide\n@v#1}
|
||
|
\def\max@n@v#1{\ifnum\n@v>#1\n@v#1\fi}
|
||
|
\def\min@n@v#1{\ifnum\n@v<#1\n@v#1\fi}
|
||
|
|
||
|
%-ickd \def\mid@box{\hbox{\xtie\char\n@v}}
|
||
|
\def\mid@box{%
|
||
|
\ifnum\n@v>255 % to avoid diags in case of...
|
||
|
\n@v=255\relax
|
||
|
\fi
|
||
|
\ifnum\n@v<0 % to avoid diags in case of...
|
||
|
\n@v=0\relax
|
||
|
\fi
|
||
|
%
|
||
|
\hbox{\csname xtie\@dotted\endcsname\char\n@v}}
|
||
|
%-ickd \def\@boX{\setbox\ch@box\hbox{\csname hslur\@sense\endcsname\char\n@v}%
|
||
|
\def\@boX{%
|
||
|
\ifnum\n@v>255 % to avoid diags in case of...
|
||
|
\n@v=255\relax
|
||
|
\fi
|
||
|
\ifnum\n@v<0 % to avoid diags in case of...
|
||
|
\n@v=0\relax
|
||
|
\fi
|
||
|
%
|
||
|
\setbox\ch@box\hbox{\csname hslur\@sense\@dotted\endcsname\char\n@v}%
|
||
|
\advance\y@ii-\wd\ch@box}
|
||
|
|
||
|
\def\def@lr{\edef\l@length{\the\n@vii}\edef\r@length{\the\n@ii}}
|
||
|
|
||
|
\def\s@adjust#1#2{%
|
||
|
\ifnum\n@v<\count@ \advance#1\@ne \fi
|
||
|
\ifnum\n@v>\z@ \advance#1\@ne \advance#2\m@ne
|
||
|
\ifnum#1>\s@v@n #1\s@v@n \fi \fi}
|
||
|
|
||
|
\def\C@csl#1#2{% compute meet height for slurs
|
||
|
\if u\@sense \n@iii#1\advance\n@iii\tw@
|
||
|
\else \n@iii#2\advance\n@iii-\tw@ \fi
|
||
|
\ifx\@invert\@ne
|
||
|
\n@iii#1\advance\n@iii-#2\divide\n@iii\tw@ \advance\n@iii#2\fi
|
||
|
\advance#1-#2}
|
||
|
|
||
|
\def\C@cc#1{% slur = abs(meet-note) - 1
|
||
|
\n@ii\@meet
|
||
|
\advance\n@ii-#1%
|
||
|
\ifnum\n@ii<\z@ \n@ii-\n@ii \fi
|
||
|
\advance\n@ii\m@ne
|
||
|
}
|
||
|
% \ifnum\n@ii<\z@\immediate\write16{Warning: \noexpand\C@cc->\noexpand\n@ii=\the\n@ii}\fi
|
||
|
% \n@ii\z@} % modeif DT 20-12-97
|
||
|
|
||
|
\def\C@csm#1{% clip to extremity heights (max slur height= 16\internote)
|
||
|
\n@i\n@iii
|
||
|
\advance\n@i-#1%
|
||
|
\ifnum\n@i>\sixt@@n
|
||
|
\ifnum\n@iii>#1%
|
||
|
#1\n@iii \advance#1-\sixt@@n
|
||
|
\else
|
||
|
#1\n@iii \advance#1\sixt@@n
|
||
|
\fi
|
||
|
\fi}
|
||
|
|
||
|
\def\C@sof{\advance\y@i\s@Y % abs. voffset
|
||
|
\ifx\@Ti\@ne \advance\y@i\s@a \let\@Ti\empty \fi}% call from cutslur
|
||
|
|
||
|
% manual influation on the curve for long slurs
|
||
|
% must be coded in front of \tslur
|
||
|
% #1 final height [number, steps of internote, relativ to beginning! note]
|
||
|
% #2 (length)slope left #3 (length)slope right
|
||
|
|
||
|
\def\curve#1#2#3{\getcurpos % ignore \curve behind a linebreak
|
||
|
\ifdim\y@v>\@xxxii\p@ \xdef\@meet{#1}\edef\l@length{#2}\edef\r@length{#3}\relax
|
||
|
\else
|
||
|
% \message{\noexpand\curve #1#2#3 not expanded}%
|
||
|
\fi}
|
||
|
|
||
|
% raise (or lower) only the mid of slur
|
||
|
% #1 final height [number, steps of internote, relativ to beginning! note]
|
||
|
%! #1 can still be changed to work relativ from default height ???
|
||
|
|
||
|
\def\midslur#1{\getcurpos
|
||
|
\ifdim\y@v>\@xxxii\p@ \xdef\@meet{#1}\relax
|
||
|
\else
|
||
|
% \message{\noexpand\midslur #1 not expanded}%
|
||
|
\fi}
|
||
|
|
||
|
\let\@meet\empty
|
||
|
\let\l@length\empty
|
||
|
\let\r@length\empty
|
||
|
|
||
|
% Liftslur #1 refnumber #2 lift[steps of internote]
|
||
|
|
||
|
\def\Liftslur#1#2{\n@i#1\advance\n@i\@ne \advance\csname s@y\roman@n@i#2}
|
||
|
|
||
|
% breakslur #1 refnumber #2 endheight during linebreak[steps of internote]
|
||
|
|
||
|
\def\breakslur#1#2{\inhgetn@i#2\relax\n@ii\n@i
|
||
|
\n@i#1\advance\n@i\@ne \global\csname s@z\roman@n@i\n@ii}
|
||
|
|
||
|
% invertslur #1 refnumber
|
||
|
|
||
|
\def\@invsl{\if u\the\s@s \s@s{d}\else \s@s{u}\fi}
|
||
|
|
||
|
\def\invertslur#1{\s@l@ctslur#1\relax
|
||
|
\if u\the\s@s \global\s@s{D}% change sense and set flag for invertslur
|
||
|
\else \global\s@s{U}\fi}
|
||
|
|
||
|
% initiate slur #1 reference number #2 start note
|
||
|
|
||
|
\def\isluru{\i@slur\h@lf{1\p@seven\internote}u}% 'normal'
|
||
|
\def\issluru{\i@slur{1\p@ne}{\p@seven\internote}u}% shorter for accords
|
||
|
% for beam(ib[l]u) or stem, doesn't work with \stemcut (yet?)
|
||
|
\def\ibsluru{\y@i\stemfactor\interbeam
|
||
|
\advance\y@i\h@lf\internote \i@slur1\y@i u}
|
||
|
\def\islurd{\i@slur\h@lf{-1\p@seven\internote}d}
|
||
|
\def\isslurd{\i@slur{1\p@ne}{-\p@seven\internote}d}
|
||
|
\def\ibslurd{\y@i\stemfactor\interbeam
|
||
|
\advance\y@i\h@lf\internote \y@i-\y@i \i@slur0\y@i d}
|
||
|
|
||
|
% initiate slur at half note width but NO vertical offset (for linkings)
|
||
|
|
||
|
\def\ihsluru{\i@slur\h@lf\z@ u}%
|
||
|
\def\ihslurd{\i@slur\h@lf\z@ d}%
|
||
|
|
||
|
\let\itieu\issluru
|
||
|
\let\itied\isslurd
|
||
|
\def\istieu{\i@slur{1\p@ne}{\qu@rt\internote}u}% shorter for accords
|
||
|
\def\istied{\i@slur{1\p@ne}{-\qu@rt\internote}d}%
|
||
|
\let\itenu\istieu
|
||
|
\let\itenl\istied
|
||
|
\let\Itenu\istieu
|
||
|
\let\Itenl\istied
|
||
|
|
||
|
\def\dotted{\let\dott@d\@ne}\let\dott@d\empty %+ickd
|
||
|
|
||
|
\def\@mis{missing }
|
||
|
|
||
|
% #1 hoffset #2 voffset #3 sense (u,d) #4 reference number #5 start note
|
||
|
|
||
|
\def\i@slur#1#2#3#4#5{%
|
||
|
\check@staff
|
||
|
\global\advance\N@s\@ne % update slurcounter
|
||
|
\s@l@ctslur#4\relax
|
||
|
% test for already invoked \islur
|
||
|
\if x\the\s@s \else\errmessage{\@mis\noexpand\tslur#4}\fi
|
||
|
\global\s@Y#2% store voffset (abs. dim. to rel. height)
|
||
|
\global\s@s{#3}% store sense (u,d)
|
||
|
\ifx\dott@d\empty \global\s@d{}\else\global\s@d{d}\fi %+ickd
|
||
|
\let\dott@d\empty % set dotted indicator +ickd
|
||
|
\global\s@N\noinstrum@nt % store instrument number
|
||
|
\inhgetn@i#5\relax
|
||
|
\global\s@y\n@i % start vpos (steps of internote)
|
||
|
\global\s@a\altportee % store altportee of current slur
|
||
|
\getcurpos
|
||
|
\advance\y@v#1\qn@width
|
||
|
\global\s@x\y@v
|
||
|
\fi}% start hpos (current pos including hoffset)
|
||
|
|
||
|
% terminate slur #1 reference number #2 end note
|
||
|
% the various types only influence the horizontal offset, if you want to
|
||
|
% terminate a \ibslur with a \tslur it becomes a little bit tricky
|
||
|
%%
|
||
|
%% RDT: the "trick", whatever it is, doesn't seem to be working !!!!!
|
||
|
%% e.g. \Notes\ibsluru1g\qa g\ha l\sk\zq g\zq i\tslur1k\qu k\en
|
||
|
|
||
|
\def\tslur{\t@slur\h@lf}
|
||
|
\def\tsslur{\t@slur{-\p@ne}}
|
||
|
\def\tubslur{\t@slur1}
|
||
|
\def\tdbslur{\t@slur0}
|
||
|
\def\tbsluru{\t@slur1}
|
||
|
\def\tbslurd{\t@slur0}
|
||
|
|
||
|
% \def\ttie#1{\let\T@i\@c \t@slur{-\p@ne}#1\@ne}
|
||
|
% \def\tleg#1{\let\T@i\@c \tslur #1\@ne}
|
||
|
% #1 should be braced... by David Alsop on January 11, 2009
|
||
|
\def\ttie#1{\let\T@i\@c \t@slur{-\p@ne}{#1}\@ne}
|
||
|
\def\tleg#1{\let\T@i\@c \tslur{#1}\@ne}
|
||
|
\let\tten\ttie
|
||
|
\let\Tten\ttie
|
||
|
\let\Tleg\tleg
|
||
|
|
||
|
% y@i linewidth
|
||
|
% y@iv right hoffset
|
||
|
% y@v endpos, complete length
|
||
|
|
||
|
% #1 hoffset #2 reference number #3 end note
|
||
|
|
||
|
\def\t@slur#1#2#3{%
|
||
|
\check@staff
|
||
|
\s@l@ctslur#2\relax
|
||
|
\y@iv#1\qn@width
|
||
|
\def\@sense{\the\s@s}%
|
||
|
\edef\@dotted{\the\s@d}%+ickd
|
||
|
% test for missing \islur
|
||
|
\if x\@sense \errmessage{\@mis\noexpand\islur#2}\fi
|
||
|
% test for \invertslur
|
||
|
\if D\@sense \s@s{u}%
|
||
|
\let\@invert\@ne
|
||
|
\fi
|
||
|
\if U\@sense \s@s{d}%
|
||
|
\let\@invert\@ne
|
||
|
\fi
|
||
|
% compute length
|
||
|
\getcurpos
|
||
|
\advance\y@v\y@iv
|
||
|
% eoline
|
||
|
\y@eol\advance\y@-\beforeruleskip
|
||
|
% clip slur at eoline
|
||
|
\ifdim\y@v>\y@ \y@v\y@ \advance\y@v\beforeruleskip \y@iv\beforeruleskip \fi
|
||
|
\advance\y@v-\s@x
|
||
|
\ifx\T@i\@c \n@i\s@y \else \inhgetn@i#3\relax \fi
|
||
|
\writ@slur\s@y\n@i\y@v{-\y@iv}%
|
||
|
% reset sense of slur
|
||
|
\global\s@s{x}\let\T@i\empty
|
||
|
\global\advance\N@s\m@ne
|
||
|
\fi}% update slur counter
|
||
|
|
||
|
% this command is made to terminate the slur #1 exactly on the note pitch #2
|
||
|
\def\Tslurbreak#1#2{\s@l@ctslur#1\relax
|
||
|
\def\@sense{\the\s@s}%
|
||
|
{\if d\@sense \advance\transpose 2\raise0.2\Interligne\hbox{\tslur{#1}{#2}}\relax
|
||
|
\else \advance\transpose -2\raise-0.2\Interligne\hbox{\tslur{#1}{#2}}\relax
|
||
|
\fi
|
||
|
}%
|
||
|
\global\let\@meet\empty
|
||
|
\let\l@length\empty
|
||
|
\let\r@length\empty
|
||
|
\let\@invert\empty
|
||
|
}
|
||
|
|
||
|
\def\Islurubreak#1#2{{\advance\transpose -1\isluru{#1}{#2}}}
|
||
|
\def\Islurdbreak#1#2{{\advance\transpose 1\islurd{#1}{#2}}}
|
||
|
|
||
|
\def\TslurbreakNextBar#1#2{\off{\beforeruleskip}\hloff{\Tslurbreak{#1}{#2}}\off{-\beforeruleskip}}
|
||
|
\def\IslurubreakPrevBar#1#2{\off{-\afterruleskip}\hloff{\Islurubreak{#1}{#2}}\off{\afterruleskip}}
|
||
|
\def\IslurdbreakPrevBar#1#2{\off{-\afterruleskip}\hloff{\Islurdbreak{#1}{#2}}\off{\afterruleskip}}
|
||
|
|
||
|
\def\y@eol{\y@\line@width \advance\y@-\sign@skip
|
||
|
\advance\y@-\clef@skip \advance\y@-\s@indent}
|
||
|
|
||
|
% hold up the RM-slur calling, because faster coding,
|
||
|
% if the slurs are inside a bar (and you use one kind of \notes)
|
||
|
% and ... there is no limitation in the number of slurs
|
||
|
% if you want to call a short slur, extending to the left use \slur[][][]0
|
||
|
|
||
|
% #1 start pitch #2 final pitch #3 sense(u,d) #4 length[noteskip]
|
||
|
|
||
|
\def\C@slur#1#2#3#4{\check@staff
|
||
|
\inhgetn@i#1\relax \n@ii\n@i
|
||
|
\inhgetn@i#2\relax \relax
|
||
|
\ifx\dott@d\empty \gdef\@dotted{}\else\gdef\@dotted{d}\fi %+ickd
|
||
|
\let\dott@d\empty % set dotted indicator +ickd
|
||
|
\def\@sense{#3}%
|
||
|
\if d\@sense \s@Y-\s@Y \fi
|
||
|
\y@v#4\noteskip
|
||
|
\y@iv\y@v
|
||
|
\advance\y@iv\y@ii
|
||
|
\advance\y@v\y@iii
|
||
|
\kern\y@iv
|
||
|
\writ@slur\n@ii\n@i\y@v\z@
|
||
|
\kernm\y@iv
|
||
|
\fi}
|
||
|
|
||
|
\def\sslur{%
|
||
|
\let\s@N\undefined % do not store instrument number
|
||
|
\s@Y\p@seven\internote
|
||
|
\y@iii-1.2\qn@width % offset to length 1.1behind+.1before
|
||
|
\y@ii-\p@ne\qn@width
|
||
|
\C@slur}
|
||
|
\def\slur{%
|
||
|
\let\s@N\undefined % do not store instrument number
|
||
|
\s@Y1\p@seven\internote
|
||
|
\y@iii\z@
|
||
|
\y@ii\h@lf\qn@width
|
||
|
\C@slur}
|
||
|
\def\stie#1{\sslur{#1}{#1}}
|
||
|
\def\tie#1{\slur{#1}{#1}}
|
||
|
|
||
|
%%% setup fontsizes
|
||
|
|
||
|
\newdimen\interbeam % distance entre poutres
|
||
|
\newdimen\b@amthick % half beamthickness
|
||
|
\newdimen\Interligne% de la base d'une ligne a l'autre
|
||
|
\newdimen\Internote % la moitie de \Interligne
|
||
|
\let\internote\Internote
|
||
|
\def\musixchar{\musixfont\char}
|
||
|
\def\keychar{\musickeyfont\char}
|
||
|
|
||
|
\let\musicnorfont\musictwenty
|
||
|
|
||
|
\def\set@Largenotesize{\let\musixfont\musicLargefont
|
||
|
\let\xgregfont\xgregLargefont
|
||
|
\b@amthick.3456\Interligne \interbeam1.08\Interligne }
|
||
|
|
||
|
\def\set@largenotesize{\let\musixfont\musiclargefont
|
||
|
\let\xgregfont\xgreglargefont
|
||
|
\b@amthick.288\Interligne \interbeam.9\Interligne }
|
||
|
|
||
|
\def\set@normalnotesize{\let\musixfont\musicnorfont
|
||
|
\let\xgregfont\xgregnorfont
|
||
|
\b@amthick.24\Interligne \interbeam\p@seven5\Interligne }
|
||
|
|
||
|
\def\set@smallnotesize{\let\musixfont\musicsmallfont
|
||
|
\let\xgregfont\xgregsmallfont
|
||
|
\b@amthick\p@ne92\Interligne \interbeam.6\Interligne }
|
||
|
|
||
|
\def\set@tinynotesize{\let\musixfont\musictinyfont
|
||
|
\let\xgregfont\xgregtinyfont
|
||
|
\b@amthick\p@ne536\Interligne \interbeam.48\Interligne }
|
||
|
|
||
|
\def\normalnotesize{\set@normalnotesize\comput@specifics
|
||
|
\let\curr@ntsiz@\normalnotesize}
|
||
|
\def\smallnotesize{\set@smallnotesize\comput@specifics
|
||
|
\let\curr@ntsiz@\smallnotesize}
|
||
|
\def\tinynotesize{\set@tinynotesize\comput@specifics
|
||
|
\let\curr@ntsiz@\tinynotesize}
|
||
|
\def\largenotesize{\set@largenotesize\comput@specifics % v.124 RDT
|
||
|
\let\curr@ntsiz@\largenotesize}
|
||
|
\def\Largenotesize{\set@Largenotesize\comput@specifics % v.124 RDT
|
||
|
\let\curr@ntsiz@\Largenotesize}
|
||
|
|
||
|
\def\musickeyfont{%
|
||
|
\ifdim\internote<\p@seven6\Internote \musictinyfont
|
||
|
\else
|
||
|
\ifdim\internote<.95\Internote \musicsmallfont
|
||
|
\else
|
||
|
\ifdim\internote<1.19\Internote \musicnorfont
|
||
|
\else
|
||
|
\ifdim\internote<1.43\Internote \musiclargefont
|
||
|
\else
|
||
|
\musicLargefont
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi}
|
||
|
|
||
|
\def\meterfont{%
|
||
|
\ifdim\internote<\p@seven6\Internote \metersmallfont
|
||
|
\else
|
||
|
\ifdim\internote<.95\Internote \meternorfont
|
||
|
\else
|
||
|
\ifdim\internote<1.19\Internote \meterbigfont
|
||
|
\else
|
||
|
\ifdim\internote<1.43\Internote \meterlargefont
|
||
|
\else \meterLargefont
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi}
|
||
|
|
||
|
\def\tabcleffnt{% 1.29 RDT
|
||
|
\ifdim\internote<.95\Internote \tabsmallcleffnt
|
||
|
\else
|
||
|
\ifdim\internote<1.19\Internote \tabnorcleffnt
|
||
|
\else
|
||
|
\ifdim\internote<1.43\Internote \tablargecleffnt
|
||
|
\else \tabLargecleffnt
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi}
|
||
|
|
||
|
\def\tabfnt{% 1.29 RDT
|
||
|
\ifdim\internote<.95\Internote \tabsmallfnt
|
||
|
\else
|
||
|
\ifdim\internote<1.19\Internote \tabnorfnt
|
||
|
\else
|
||
|
\ifdim\internote<1.43\Internote \tablargefnt
|
||
|
\else \tabLargefnt
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi}
|
||
|
|
||
|
\newbox\ch@box
|
||
|
\newcount\musicsize
|
||
|
\newdimen\qd@skip
|
||
|
\newdimen\qn@width
|
||
|
\newdimen\wn@width
|
||
|
|
||
|
\newskip\txt@ff
|
||
|
\newskip\s@indent % store parindent
|
||
|
\newskip\big@spc
|
||
|
|
||
|
\newdimen\lthick \lthick=.4pt
|
||
|
\def\hlthick{\h@lf\lthick}
|
||
|
|
||
|
%%%
|
||
|
|
||
|
\def\normalmusicsize{\musicsize\tw@nty \comput@specifics
|
||
|
\afterruleskip\@ight\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@}
|
||
|
\def\smallmusicsize{\musicsize\sixt@@n \comput@specifics
|
||
|
\afterruleskip\si@\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@}
|
||
|
\def\largemusicsize{\musicsize\@xxiv \comput@specifics
|
||
|
\afterruleskip\t@n\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@}
|
||
|
\def\Largemusicsize{\musicsize\@xxix \comput@specifics
|
||
|
\afterruleskip\t@n\p@ \elemskip\fontdimen\si@\musicnorfont \clef@skip\z@}
|
||
|
|
||
|
\def\comput@fonts{%
|
||
|
\ifnum\musicsize=\sixt@@n
|
||
|
\let\musicLargefont\musictwentyfour
|
||
|
\let\musiclargefont\musictwenty
|
||
|
\let\musicnorfont\musicsixteen
|
||
|
\let\musicsmallfont\musicthirteen
|
||
|
\let\musictinyfont\musiceleven
|
||
|
\let\xgregLargefont\xgregtwentyfour
|
||
|
\let\xgreglargefont\xgregtwenty
|
||
|
\let\xgregnorfont\xgregsixteen
|
||
|
\let\xgregsmallfont\xgregthirteen
|
||
|
\let\xgregtinyfont\xgregeleven
|
||
|
\let\slurd\slurdsixteen \let\sluru\slurusixteen
|
||
|
\let\hslurd\hslurdsixteen \let\hsluru\hslurusixteen
|
||
|
\let\meternorfont\tenbf \let\metersmallfont\eightbf % version 1.16 RDT
|
||
|
\let\meterbigfont\twelvebf \let\meterlargefont\frtbf
|
||
|
\let\meterLargefont\svtbf
|
||
|
\let\tinyppff\ppfftwelve % version 1.17 RDT
|
||
|
\let\smallppff\ppfftwelve
|
||
|
\let\normppff\ppffsixteen
|
||
|
\let\medppff\ppfftwenty
|
||
|
\def\txtfont{\ifdim\internote<.95\Internote \tinytype\it % version 1.22 RDT
|
||
|
\else\ifdim\internote<1.19\Internote \smalltype\it
|
||
|
\else\ifdim\internote<1.43\Internote \Smalltype\it
|
||
|
\else\normtype\it\fi\fi\fi}%
|
||
|
\let\tabnorfnt\tabfntsixteen \let\tablargefnt\tabfnttwenty % 1.34 RDT
|
||
|
\let\tabLargefnt\tabfnttwentyfour \let\tabsmallfnt\tabfntthirteen
|
||
|
\let\tabnorcleffnt\eightdc \let\tablargecleffnt\tendc
|
||
|
\let\tabLargecleffnt\twelvedc \let\tabsmallcleffnt\sixdc
|
||
|
\def\tabstringfnt{\ifdim\internote<.95\Internote \fourss % 1.29 RDT
|
||
|
\else\ifdim\internote<1.19\Internote \fivess
|
||
|
\else\ifdim\internote<1.43\Internote \sevenss
|
||
|
\else\eightss\fi\fi\fi}%
|
||
|
\else\ifnum\musicsize=\@xxiv
|
||
|
\let\musicLargefont\musictwentynine
|
||
|
\let\musiclargefont\musictwentynine
|
||
|
\let\musicnorfont\musictwentyfour
|
||
|
\let\musicsmallfont\musictwenty
|
||
|
\let\musictinyfont\musicsixteen
|
||
|
\let\xgregLargefont\xgregtwentynine
|
||
|
\let\xgreglargefont\xgregtwentynine
|
||
|
\let\xgregnorfont\xgregtwentyfour
|
||
|
\let\xgregsmallfont\xgregtwenty
|
||
|
\let\xgregtinyfont\xgregsixteen
|
||
|
\let\sluru\slurutwenty \let\slurd\slurdtwenty
|
||
|
\let\hsluru\hslurutwenty \let\hslurd\hslurdtwenty
|
||
|
\let\meternorfont\frtbf \let\metersmallfont\twelvebf % version 1.18 RDT
|
||
|
\let\meterbigfont\svtbf \let\meterlargefont\twtybf
|
||
|
\let\meterlargefont\twfvbf
|
||
|
\let\tinyppff\ppffsixteen
|
||
|
\let\smallppff\ppfftwenty
|
||
|
\let\normppff\ppfftwentyfour
|
||
|
\let\medppff\ppfftwentynine
|
||
|
\def\txtfont{\ifdim\internote<.95\Internote \smalltype\it % version 1.22 RDT
|
||
|
\else\ifdim\internote<1.19\Internote \Smalltype\it
|
||
|
\else\ifdim\internote<1.43\Internote \normtype\it
|
||
|
\else\medtype\it\fi\fi\fi}%
|
||
|
\let\tabnorfnt\tabfnttwentyfour \let\tablargefnt\tabfnttwentynine % 1.34 RDT
|
||
|
\let\tabLargefnt\tabfnttwentynine \let\tabsmallfnt\tabfnttwenty
|
||
|
\let\tabnorcleffnt\twelvedc \let\tablargecleffnt\frtdc
|
||
|
\let\tabLargecleffnt\svtdc \let\tabsmallcleffnt\tendc
|
||
|
\def\tabstringfnt{\ifdim\internote<.95\Internote \sixss % 1.29 RDT
|
||
|
\else\ifdim\internote<1.19\Internote \eightss
|
||
|
\else\ifdim\internote<1.43\Internote \niness
|
||
|
\else\twelvess\fi\fi\fi}%
|
||
|
\else\ifnum\musicsize=\@xxix
|
||
|
\let\musicLargefont\musictwentynine
|
||
|
\let\musiclargefont\musictwentynine
|
||
|
\let\musicnorfont\musictwentynine
|
||
|
\let\musicsmallfont\musictwentyfour
|
||
|
\let\musictinyfont\musictwenty
|
||
|
\let\xgregLargefont\xgregtwentynine
|
||
|
\let\xgreglargefont\xgregtwentynine
|
||
|
\let\xgregnorfont\xgregtwentynine
|
||
|
\let\xgregsmallfont\xgregtwentyfour
|
||
|
\let\xgregtinyfont\xgregtwenty
|
||
|
\let\sluru\slurutwenty \let\slurd\slurdtwenty
|
||
|
\let\hsluru\hslurutwenty \let\hslurd\hslurdtwenty
|
||
|
\let\slurud\slurutwentyd \let\slurdd\slurdtwentyd % +ickd
|
||
|
\let\hslurud\hslurutwentyd \let\hslurdd\hslurdtwentyd %+ickd
|
||
|
\let\meternorfont\svtbf \let\metersmallfont\frtbf % version 1.18 RDT
|
||
|
\let\meterbigfont\twtybf \let\meterlargefont\twfvbf % version 1.24 typos corrected
|
||
|
\let\meterLargefont\twfvbf
|
||
|
\let\tinyppff\ppfftwenty
|
||
|
\let\smallppff\ppfftwentyfour
|
||
|
\let\normppff\ppfftwentynine
|
||
|
\let\medppff\ppfftwentynine
|
||
|
\def\txtfont{\ifdim\internote<.95\Internote \normtype\it % version 1.22 RDT
|
||
|
\else\ifdim\internote<1.19\Internote \medtype\it
|
||
|
\else\ifdim\internote<1.43\Internote \bigfont\it
|
||
|
\else\Bigfont\it\fi\fi\fi}%
|
||
|
\let\tabnorfnt\tabfnttwentynine \let\tablargefnt\tabfnttwentynine % 1.34 RDT
|
||
|
\let\tabLargefnt\tabfnttwentynine \let\tabsmallfnt\tabfnttwentyfour
|
||
|
\let\tabnorcleffnt\frtdc \let\tablargecleffnt\svtdc
|
||
|
\let\tabLargecleffnt\twtydc \let\tabsmallcleffnt\twelvedc
|
||
|
\def\tabstringfnt{\ifdim\internote<.95\Internote \eightss % 1.29 RDT
|
||
|
\else\ifdim\internote<1.19\Internote \niness
|
||
|
\else\ifdim\internote<1.43\Internote \twelvess
|
||
|
\else\frtss\fi\fi\fi}%
|
||
|
\else
|
||
|
\ifnum\musicsize=\tw@nty
|
||
|
\else\ifnum\musicsize=\z@
|
||
|
\else\errmessage{\noexpand\musicsize=\the\musicsize\space not supported,
|
||
|
set to default of 20}%
|
||
|
\fi
|
||
|
\fi\musicsize\tw@nty
|
||
|
\let\musicLargefont\musictwentynine
|
||
|
\let\musiclargefont\musictwentyfour
|
||
|
\let\musicnorfont\musictwenty
|
||
|
\let\musicsmallfont\musicsixteen
|
||
|
\let\musictinyfont\musicthirteen
|
||
|
\let\xgreglargefont\xgregtwentyfour
|
||
|
\let\xgregLargefont\xgregtwentynine
|
||
|
\let\xgregnorfont\xgregtwenty
|
||
|
\let\xgregsmallfont\xgregsixteen
|
||
|
\let\xgregtinyfont\xgregthirteen
|
||
|
\let\sluru\slurutwenty \let\slurd\slurdtwenty
|
||
|
\let\hsluru\hslurutwenty \let\hslurd\hslurdtwenty
|
||
|
\let\meternorfont\twelvebf \let\metersmallfont\tenbf % version 1.18 RDT
|
||
|
\let\meterbigfont\frtbf \let\meterlargefont\svtbf
|
||
|
\let\meterLargefont\twtybf
|
||
|
\let\tinyppff\ppfftwelve
|
||
|
\let\smallppff\ppffsixteen
|
||
|
\let\normppff\ppfftwenty
|
||
|
\let\medppff\ppfftwentyfour
|
||
|
\def\txtfont{\ifdim\internote<.95\Internote \smalltype\it
|
||
|
\else\ifdim\internote<1.19\Internote \Smalltype\it
|
||
|
\else\ifdim\internote<1.43\Internote \normtype\it
|
||
|
\else\medtype\it\fi\fi\fi}%
|
||
|
\let\tabnorfnt\tabfnttwenty \let\tablargefnt\tabfnttwentyfour % 1.34 RDT
|
||
|
\let\tabLargefnt\tabfntwentynine \let\tabsmallfnt\tabfntsixteen
|
||
|
\let\tabnorcleffnt\tendc \let\tablargecleffnt\twelvedc
|
||
|
\let\tabLargecleffnt\frtdc \let\tabsmallcleffnt\eightdc
|
||
|
\def\tabstringfnt{\ifdim\internote<.95\Internote \fivess % 1.29 RDT
|
||
|
\else\ifdim\internote<1.19\Internote \sixss
|
||
|
\else\ifdim\internote<1.43\Internote \eightss
|
||
|
\else\niness\fi\fi\fi}%
|
||
|
\fi\fi\fi}%
|
||
|
|
||
|
\def\comput@specifics{\comput@fonts\comput@sizes}
|
||
|
|
||
|
\def\comput@sizes{%
|
||
|
\Interligne\fontdimen\fiv@\musicnorfont
|
||
|
\Internote\h@lf\Interligne \big@spc.6\Interligne
|
||
|
\qn@width\fontdimen\si@\musixfont
|
||
|
\wn@width1\qu@rt\qn@width
|
||
|
\txt@ff\h@lf\qn@width
|
||
|
\qd@skip\qn@width\advance\qd@skip-\hlthick}
|
||
|
|
||
|
%\newdimen\afterruleskip
|
||
|
\newskip\afterruleskip
|
||
|
\newdimen\staffbotmarg % marge au-dessous des portees
|
||
|
\newdimen\stafftopmarg % au-dessus des portees
|
||
|
\newdimen\line@width
|
||
|
|
||
|
\def\normalvalue{1}
|
||
|
\def\largevalue{1.2}
|
||
|
\def\Largevalue{1.44}
|
||
|
\def\smallvalue{.8}
|
||
|
\def\tinyvalue{.64}
|
||
|
|
||
|
\def\instrumentnumber#1{\n@v#1\relax
|
||
|
\min@n@v\@ne
|
||
|
\max@n@v\maxinstruments
|
||
|
\edef\nbinstruments{\the\n@v}}
|
||
|
|
||
|
% staffsize
|
||
|
|
||
|
\def\setsize#1#2{\n@v#1\relax % select instrument
|
||
|
\expandafter\edef\csname staffspacing\romannumeral\n@v\endcsname{#2}}
|
||
|
|
||
|
% [version 1.15] moved out to the new register allocation code
|
||
|
% \let\staffspacingi\@ne
|
||
|
|
||
|
% number of staffs
|
||
|
|
||
|
\def\setstaffs#1#2{\n@v#1\relax \csname n@p\romannumeral\n@v\endcsname#2}
|
||
|
|
||
|
% staff lines
|
||
|
|
||
|
\def\setlines#1#2{\n@v#1\relax % select instrument
|
||
|
\expandafter\def\csname n@l\romannumeral\n@v\endcsname{#2}}
|
||
|
|
||
|
\newdimen\interportee % distance between staffs of the same instrument (incl)
|
||
|
\newcount\noport@@
|
||
|
\newcount\noinstrum@nt
|
||
|
\newdimen\altportee
|
||
|
|
||
|
\def\interstaff#1{\def\interfacteur{#1}}
|
||
|
|
||
|
\def\s@l@ctinstr{%
|
||
|
\ifnum\noinstrum@nt>\maxinstruments % [version 1.15] -- from here --
|
||
|
\errmessage{Wrong instrument reference number \the\noinstrum@nt, maxinstruments=\the\maxinstruments}
|
||
|
\fi % [version 1.15] -- until here --
|
||
|
\edef\altitude{\csname k@i\romannumeral\noinstrum@nt\endcsname}%
|
||
|
\edef\st@ffs{\csname n@p\romannumeral\noinstrum@nt\endcsname}%
|
||
|
\edef\nblines{\csname n@l\romannumeral\noinstrum@nt\endcsname}%
|
||
|
\edef\internote{\csname i@n\romannumeral\noinstrum@nt\endcsname}%
|
||
|
\edef\int@rf{\csname interfacteur\romannumeral\noinstrum@nt\endcsname}% RDT 1.24
|
||
|
\interportee\int@rf\internote \interportee\tw@\interportee}% RDT 1.26
|
||
|
|
||
|
\def\C@Inter{% RDT: corrected to work if \nblines > 6 (version 1.23)
|
||
|
% RDT: corrected for \nblines < 4 (version 1.28)
|
||
|
\stem@skip\interportee
|
||
|
\ifnum\nblines<\f@ur
|
||
|
\advance\stem@skip-\@ight\internote
|
||
|
\else
|
||
|
\advance\stem@skip-\nblines\internote
|
||
|
\advance\stem@skip-\nblines\internote
|
||
|
\advance\stem@skip\tw@\internote
|
||
|
\fi}
|
||
|
|
||
|
%%% loop over instruments and staffs
|
||
|
|
||
|
\def\count@portee{\advance\noport@@\@ne}
|
||
|
|
||
|
\def\n@loop{\noinstrum@nt\z@ \loop\ifnum\noinstrum@nt<\nbinstruments
|
||
|
\advance\noinstrum@nt\@ne \s@l@ctinstr}
|
||
|
|
||
|
\def\m@loop{\noinstrum@nt\z@ \loop\ifnum\noinstrum@nt<\maxinstruments
|
||
|
\advance\noinstrum@nt\@ne}
|
||
|
|
||
|
\def\p@loop{\noport@@\z@ \loop\ifnum\noport@@<\st@ffs
|
||
|
\altportee\altitude \advance\altportee\noport@@\interportee}
|
||
|
|
||
|
\def\Comp@High{\y@v\st@ffs\interportee \C@Inter\advance\y@v-\stem@skip}
|
||
|
|
||
|
% to be used to make heavy bars at staff left
|
||
|
% modified according to Werner Icking
|
||
|
|
||
|
|
||
|
\def\groupbottom#1#2{\group@no#1\relax
|
||
|
\advance\group@no\m@ne\test@grnum % testgr@num advances group@no by 1...
|
||
|
\expandafter\def\csname lowersonginstrum\romannumeral\group@no\endcsname{#2}}
|
||
|
|
||
|
\def\grouptop#1#2{\group@no#1\relax
|
||
|
\advance\group@no\m@ne\test@grnum % testgr@num advances group@no by 1...
|
||
|
\expandafter\def\csname uppersonginstrum\romannumeral\group@no\endcsname{#2}}
|
||
|
|
||
|
\def\songbottom{\groupbottom1}
|
||
|
\def\songtop{\grouptop1}
|
||
|
|
||
|
% [version 1.15] moved out to the new register allocation code
|
||
|
% \let\lowersonginstrumi\maxdimen
|
||
|
% \let\uppersonginstrumi\z@
|
||
|
|
||
|
\def\g@loop{\group@no\z@ \loop\ifnum\group@no<\maxgroups
|
||
|
\s@l@ctgroup}
|
||
|
\def\s@l@ctgroup{%
|
||
|
\relax\test@grnum
|
||
|
\edef\g@b{\csname g@b\romannumeral\group@no\endcsname}% dimen (group bottom)
|
||
|
\edef\g@h{\csname g@h\romannumeral\group@no\endcsname}% dimen (group top)
|
||
|
\edef\lowersonginstrum{\csname lowersonginstrum\romannumeral\group@no\endcsname}% dimen (group top)
|
||
|
\edef\uppersonginstrum{\csname uppersonginstrum\romannumeral\group@no\endcsname}% dimen (group top)
|
||
|
}%
|
||
|
\def\test@grnum{%
|
||
|
\ifnum\group@no<\z@ \group@no\@c \fi
|
||
|
\ifnum\group@no<\maxgroups \else
|
||
|
\count@\maxgroups \advance\count@\m@ne
|
||
|
\errmessage{Wrong group reference number \the\group@no! (valid: 0 to \the\count@)}% [version 1.15]
|
||
|
\group@no\z@% [version 1.15]
|
||
|
\fi
|
||
|
\advance\group@no\@ne}
|
||
|
|
||
|
% \nobarmessages prevents bar messages
|
||
|
|
||
|
\def\nobarmessages{\let\no@b\@ne}
|
||
|
\let\no@b\empty
|
||
|
|
||
|
% \nolinemessages prevents line messages in phase three
|
||
|
\def\nolinemessages{\let\no@l\@ne}
|
||
|
\let\no@l\empty
|
||
|
|
||
|
% \nobarnumbers prevents bar numbering (Ian Collier)
|
||
|
% \barnumbers restores bar numbering
|
||
|
|
||
|
\def\nobarnumbers{\let\lin@bar\empty \let\freqbarno\maxdimen}
|
||
|
\def\barnumbers{\let\freqbarno\normalvalue}
|
||
|
\barnumbers
|
||
|
|
||
|
% show barnumbers only at the beginning system
|
||
|
|
||
|
\def\raisebarno{\f@ur\internote}
|
||
|
\let\shiftbarno\z@
|
||
|
|
||
|
\def\writebarno{\boxit{\eightbf\the\barno\barnoadd}}
|
||
|
\def\systemnumbers{\nobarnumbers\let\lin@bar\@ne}
|
||
|
|
||
|
% add 'a' behind the systembarnumber, if the previous line ended without
|
||
|
% a bar rule
|
||
|
|
||
|
\let\z@sw\empty
|
||
|
\def\writezbarno{a}
|
||
|
\def\barnoadd{\ifx\z@sw\@ne \writezbarno \fi}
|
||
|
|
||
|
% suppress the beginning vertical rule for single-staff scores
|
||
|
|
||
|
\def\startrule{\let\b@rule\empty}
|
||
|
\def\nostartrule{\let\b@rule\z@}
|
||
|
\startrule
|
||
|
|
||
|
%%% distance between instruments (added to \interportee)
|
||
|
|
||
|
% [version 1.15] moved out to the above of the new register allocation code
|
||
|
% \newdimen\interinstrument
|
||
|
% [version 1.15] moved out to the new register allocation code
|
||
|
% \let\interinstrumenti\interinstrument
|
||
|
|
||
|
\def\setinterinstrument#1#2{\n@v#1\relax % select instrument
|
||
|
\expandafter\def\csname interinstrument\romannumeral\n@v\endcsname{#2}}%
|
||
|
|
||
|
\def\setinterstaff#1#2{\n@v#1\relax % select instrument RDT 1.24
|
||
|
\expandafter\def\csname interfacteur\romannumeral\n@v\endcsname{#2}}%
|
||
|
|
||
|
%%% portees
|
||
|
|
||
|
\newdimen\systemheight
|
||
|
\newdimen\altplancher
|
||
|
|
||
|
% New version by Werner Icking
|
||
|
|
||
|
\def\writ@staffs{%
|
||
|
\y@\staffbotmarg \global\altplancher\staffbotmarg
|
||
|
\rlap{\n@loop\w@st\repeat
|
||
|
% beginning vertical rule
|
||
|
\systemheight\y@
|
||
|
\advance\systemheight-\altplancher
|
||
|
\C@Inter \global\advance\systemheight-\stem@skip
|
||
|
\ifx\empty\b@rule \raise\altplancher\rlap{%
|
||
|
\vrule\@depth\hlthick\@height\systemheight\@width\lthick}\fi
|
||
|
% 'Akkoladenklammer' don't know the english word
|
||
|
\g@loop
|
||
|
\ifnum\uppersonginstrum<\lowersonginstrum
|
||
|
\else
|
||
|
\noinstrum@nt\uppersonginstrum\s@l@ctinstr\C@Inter
|
||
|
\global\advance\g@h-\stem@skip \global\advance\g@h-\g@b
|
||
|
\global\advance\g@h\Interligne \global\advance\g@b-\Internote
|
||
|
\raise\g@b\llap{\uplap{\offinterlineskip
|
||
|
\set@normalnotesize\hbox{\musixfont\fourt@@n}\hbox{\vrule\@height\g@h
|
||
|
\@width\internote}\hbox{\musixfont\fiv@t@@n}}\kern\internote}%
|
||
|
\fi
|
||
|
\repeat
|
||
|
% systembarnumbers
|
||
|
\ifx\lin@bar\@ne \y@\altplancher \advance\y@\systemheight
|
||
|
\advance\y@\raisebarno \raise\y@\rlap{\kern\shiftbarno\writebarno}\fi
|
||
|
% strut
|
||
|
\advance\stafftopmarg\staffbotmarg
|
||
|
\raise\stafftopmarg\hbox{\vrule\@height\systemheight\@width\z@}}}
|
||
|
|
||
|
\def\uplap#1{\vbox\@to\z@{\vss#1}}
|
||
|
|
||
|
% new version of \w@st by Werner Icking
|
||
|
|
||
|
\newskip\instrum@in@group
|
||
|
\def\w@st{%
|
||
|
\global\noport@@\z@ \global\altitude\y@
|
||
|
\global\instrum@in@group=\z@
|
||
|
{\g@loop
|
||
|
\ifnum\noinstrum@nt=\lowersonginstrum
|
||
|
\global\g@b\altitude
|
||
|
\fi
|
||
|
\ifnum\uppersonginstrum>\lowersonginstrum\relax
|
||
|
\ifnum\noinstrum@nt<\lowersonginstrum\relax
|
||
|
\else
|
||
|
\ifnum\noinstrum@nt>\uppersonginstrum\relax
|
||
|
\else
|
||
|
% \message{\the\noinstrum@nt\space in-group!}%
|
||
|
\global\instrum@in@group=2\internote
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi
|
||
|
\repeat}%
|
||
|
% nullportee
|
||
|
\ifnum\st@ffs=\z@
|
||
|
\advance\y@\f@ur\Interligne
|
||
|
\else
|
||
|
% multportee
|
||
|
\ifnum\st@ffs>\@ne \Comp@High\n@v\y@v \sp@pt\tw@
|
||
|
\advance\n@v\@cxxviii \divide\y@v\tw@
|
||
|
%==== the parenthesis should be shifted to the left if within
|
||
|
%==== songbottom -- songtop
|
||
|
\advance\y@v\y@
|
||
|
\raise\y@v\hbox{\kern -\instrum@in@group\mxsps\char\n@v\kern\instrum@in@group}%
|
||
|
\fi
|
||
|
% normal staff
|
||
|
{\loop \staff@lines\ifnum\noport@@<\st@ffs \repeat}%
|
||
|
\fi % fin du \else pour 0 portees=chant
|
||
|
{\g@loop
|
||
|
\ifnum\noinstrum@nt=\uppersonginstrum \global\g@h\y@ \fi
|
||
|
\repeat}%
|
||
|
\ifnum\noinstrum@nt<\nbinstruments
|
||
|
\advance\y@\csname interinstrument\romannumeral\noinstrum@nt\endcsname \fi}
|
||
|
|
||
|
\def\staff@lines{\raise\y@\rlap{\uplap{%
|
||
|
\ifcase\nblines
|
||
|
\or \Lin@\zLin@\zLin@
|
||
|
\or \Lin@\zLin@\Lin@\zLin@
|
||
|
\or \Lin@\zLin@\Lin@\zLin@\Lin@
|
||
|
\or \Lin@\Lin@\Lin@\Lin@
|
||
|
\or \Lin@\Lin@\Lin@\Lin@\Lin@
|
||
|
\or \Lin@\Lin@\Lin@\Lin@\Lin@\Lin@
|
||
|
\or \Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@
|
||
|
\or \Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@
|
||
|
\or \Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@\Lin@
|
||
|
\fi\kernm\hlthick}}%
|
||
|
\global\advance\y@\interportee \count@portee}
|
||
|
|
||
|
\def\zLin@{\kern\tw@\internote}
|
||
|
\def\Lin@{\zLin@\kernm\lthick\hrule\@width\line@width}
|
||
|
|
||
|
\newskip\boxitsep \boxitsep\thr@@\p@\relax
|
||
|
|
||
|
\def\boxit#1{\vbox{\hrule\hbox{\vrule\kern\boxitsep\vbox{%
|
||
|
\kern\boxitsep\hbox{#1}\kern\boxitsep}\kern\boxitsep\vrule}\hrule}}
|
||
|
\def\circleit#1{\setbox\ch@box\hbox{#1}\y@v\ht\ch@box
|
||
|
\y@v1.41\ht\ch@box % => sqrt(2)
|
||
|
\n@v\y@v \sp@pt\tw@ \advance\n@v69\rlap{#1}%
|
||
|
\raise\h@lf\ht\ch@box\rlap{\kern\h@lf\wd\ch@box\mxsps\char\n@v}}
|
||
|
|
||
|
\def\thinrul@{\writ@rule\lthick}
|
||
|
\def\thickrul@{\writ@rule\big@spc}
|
||
|
|
||
|
%%% start normal score
|
||
|
|
||
|
%%
|
||
|
% Define a counter to keep track of total number of bars in piece
|
||
|
% which are terminated by a barline. This is not necessarily
|
||
|
% the same as \barno, in view of (eg) a bar containing
|
||
|
% multiple bars rest.
|
||
|
%%
|
||
|
% !!! \barsinpi@c@ now used for \zbar and \xbar too, if you use them
|
||
|
% the value of \barsinpi@c@ says nothing !!!
|
||
|
%
|
||
|
|
||
|
\newcount\barsinpi@c@
|
||
|
\newcount\barno
|
||
|
\newcount\startbarno \startbarno\@ne
|
||
|
\newdimen\sign@skip
|
||
|
\newdimen\maxsign@skip
|
||
|
|
||
|
|
||
|
\def\piece@begina{\catcodesmusic \barno\startbarno \@l@mskip\elemskip
|
||
|
\barsinlin@\z@ \let\z@sw\empty \frenchspacing
|
||
|
% \let\barrul@\thinrul@ \comp@internote} %-simick
|
||
|
\b@rrul@\comp@internote} %+simick
|
||
|
|
||
|
\def\comp@internote{\comput@specifics
|
||
|
\n@loop
|
||
|
\internote\csname staffspacing\romannumeral\noinstrum@nt\endcsname\Internote
|
||
|
\repeat
|
||
|
\line@width\hsize}
|
||
|
|
||
|
\def\piece@beginb{\advance\line@width-\parindent \s@indent\parindent
|
||
|
\writ@staffs \writ@names \advance\line@width\parindent}
|
||
|
|
||
|
\def\piece@beginc{%
|
||
|
% write clefs
|
||
|
\n@loop{\writ@clefi}\repeat \kern\clef@skip
|
||
|
% everystaff stuff
|
||
|
\everyst@ff
|
||
|
% write signatures
|
||
|
\sign@skip\z@ \n@loop{\s@l@ctsigns \let\@Ti\writ@sign \C@wsi}\repeat
|
||
|
\kern\sign@skip \m@loop \s@l@ctsigns \o@s\a@s \s@l@ctclefs \o@c\a@c \repeat
|
||
|
\let\Writ@newsigns\empty \hskip\z@ plus\p@ minus\p@ \lastbarpos\z@}
|
||
|
|
||
|
\let\fil@begin\empty
|
||
|
\let\Writ@meters\empty
|
||
|
|
||
|
\def\startpiece{\ifstartmuflex@done\relax
|
||
|
\else\startmuflex
|
||
|
\immediate\write16{\noexpand\startmuflex launched by
|
||
|
\noexpand\startpiece }%
|
||
|
\fi
|
||
|
\barsinpi@c@\z@ \piece@begina \leavevmode \piece@beginb
|
||
|
\piece@beginc \fil@begin \Writ@meters\lastbarpos\lin@pos %%% 1.21: added \lastbarpos setting
|
||
|
\let\volta@set\empty % tells the kind of volta setting at next bar
|
||
|
\let\volta@cut\empty % flag to tell that a volta has been cut at line end
|
||
|
\let\volta@type\empty % the current volta setting (same defs as \volta@set)
|
||
|
\let\endvolta@set\empty % tells the kind of volta closing at next bar
|
||
|
\let\pdl@cut\empty % flag to signal a pedal rule has been cut at the end of a line % 1.21 RDT
|
||
|
}
|
||
|
|
||
|
\let\everystaff\empty
|
||
|
\def\everyst@ff{\everystaff}% --> MuFlex Pass II
|
||
|
|
||
|
%%% continue score
|
||
|
|
||
|
\let\atnextline\empty
|
||
|
|
||
|
\def\piece@conta{\catcodesmusic \atnextline \let\atnextline\empty
|
||
|
\comp@internote \leavevmode \barsinlin@\z@ }
|
||
|
|
||
|
\def\contpiece{\noindent \piece@conta \writ@staffs \piece@beginc
|
||
|
\Writ@meters\wbarno@x\lastbarpos\lin@pos\addspace\afterruleskip %%% 1.21: added \lastbarpos setting
|
||
|
}
|
||
|
|
||
|
% like contpiece but with indentation (parindent) and instrument names
|
||
|
% it's for changing the number of instrument in one piece
|
||
|
|
||
|
\let\fil@indent\empty
|
||
|
\def\Contpiece{\piece@conta \piece@beginb \fil@indent \piece@beginc
|
||
|
\Writ@meters\lastbarpos\lin@pos} %%% 1.21: added \lastbarpos setting
|
||
|
|
||
|
|
||
|
%%% end score
|
||
|
|
||
|
\let\ragg@d\empty
|
||
|
\let\z@suspend@autoflag\empty % used in musixcpt only
|
||
|
|
||
|
\def\z@suspend{%
|
||
|
\z@suspend@autoflag % used in musixcpt only
|
||
|
% cut pedal rule 1.21 RDT
|
||
|
\ifdim\pdl@pos=\z@\else%
|
||
|
\noport@@\z@
|
||
|
\znotes\selectinstrument{\pdl@instr}\selectstaff{\pdl@staff}\pdlc@\en%
|
||
|
\global\def\pdl@cut{\@one}%
|
||
|
\fi
|
||
|
% cutvolta
|
||
|
\write@volta@hrule
|
||
|
\ifx\volta@type\tw@\let\volta@set\tw@ \let\volta@type\empty
|
||
|
\let\volta@cut\tw@\fi % restart volta at next line if continuous
|
||
|
\ifx\volta@type\thr@@\let\volta@set\thr@@ \let\volta@type\empty
|
||
|
\let\volta@cut\thr@@ \fi % restart volta at next line if continuous
|
||
|
% cutoctline
|
||
|
\o@loop
|
||
|
\ifdim\o@x<\maxdimen \let\T@ii\n@ii \C@TO \o@x\z@ \fi
|
||
|
\repeat
|
||
|
% cut trill
|
||
|
\tr@loop
|
||
|
\ifdim\tr@x<\maxdimen \let\T@ii\n@ii \C@TR \tr@x\z@ \fi
|
||
|
\repeat
|
||
|
% cutslur
|
||
|
\ifnum\N@s>\z@% % any pending slurs ?
|
||
|
\n@viii\maxslurs % test all possible slur numbers [version 1.15] (Hiroaki)
|
||
|
\advance\n@viii\m@ne
|
||
|
\loop\ifnum\n@viii>\m@ne
|
||
|
\s@l@ctslur\n@viii\relax
|
||
|
\edef\@sense{\the\s@s}%
|
||
|
\if x\@sense% % sense flag
|
||
|
\else% % found slur
|
||
|
\edef\@dotted{\the\s@d}% +ickd
|
||
|
\y@v\lin@pos % get current position
|
||
|
\advance\y@v-\s@x % slurlength = currentpos - startpos
|
||
|
\let\@Ti\@ne % set flag for \writ@slur (\staffbotmarg)
|
||
|
\ifnum\s@z=\maxdimen \s@z\s@y \fi % flag (\breakslur not used -> tie)
|
||
|
\writ@slur\s@y\s@z\y@v\p@% avoid touching the bar rule
|
||
|
\s@x\z@% reset startpos for next line
|
||
|
\s@z\maxdimen% reset breakslur
|
||
|
\fi
|
||
|
\advance\n@viii\m@ne \repeat
|
||
|
\fi\s@indent\z@
|
||
|
%
|
||
|
\ragg@d\par\lin@pos\z@ \endcatcodesmusic}
|
||
|
|
||
|
\def\stoppiec@{\check@nopen\n@wbar\z@suspend}
|
||
|
%\def\stoppiece{\stoppiec@\@nds@ction} %-simick
|
||
|
\def\stoppiece{\T@bil\fi\stoppiec@\@nds@ction} %+simick
|
||
|
\let\endpiece\stoppiece
|
||
|
|
||
|
\def\zstoppiec@{\check@nopen\zn@wbar\z@suspend}
|
||
|
%\def\zstoppiece{\zstoppiec@\@nds@ction} %-simick
|
||
|
\def\zstoppiece{\T@bil\fi\zstoppiec@\@nds@ction}%+simick
|
||
|
% if you need a line which appears ragged
|
||
|
\def\raggedstoppiece{\ifx\ragg@d\empty \fil@{r}\fi % version 1.18 RDT (from musixext)
|
||
|
\check@nopen\n@wbar\hfill\z@suspend\@nds@ction}
|
||
|
\def\zendpiece{\setemptybar\raggedstoppiece} % RDT version 1.31
|
||
|
|
||
|
\def\Stoppiece{\setdoubleBAR\stoppiece}
|
||
|
\let\Endpiece\Stoppiece
|
||
|
|
||
|
%%% short excerpts
|
||
|
|
||
|
\def\startextract{\lastbarno\z@ \barno\startbarno
|
||
|
\piece@begina\setbox\w@rkbox\hbox{\writ@staffs}% to compute heights
|
||
|
\setbox\w@rkbox\hbox\bgroup% !! all changes are local !!
|
||
|
\line@width\maxdimen
|
||
|
\maxbarsinlin@\maxdimen %+simick
|
||
|
\let\T@bil\iftrue \let\everyst@ff\everystaff \let\fil@spc\empty
|
||
|
\let\fil@termskip\empty \let\fil@signs\empty \let\fil@barno\empty
|
||
|
\let\leftrepeat\leftrepeat@II \let\leftrightrepeat\leftrightrepeat@II
|
||
|
% \let\doublebar\doublebar@II % commented out by RDT version 1.32
|
||
|
\piece@beginc\Writ@meters\lastbarpos\lin@pos\let\pdl@cut\empty\addspace\afterruleskip}
|
||
|
%%% 1.21: added \lastbarpos and \pdl@cut settings
|
||
|
|
||
|
% enable left and right extracts (e.g. for footnotes)
|
||
|
|
||
|
\let\extractline\centerline
|
||
|
|
||
|
\def\endextract{\let\z@suspend\write@volta@hrule
|
||
|
\stoppiec@\egroup\line@width\wd\w@rkbox
|
||
|
\extractline{\writ@names\writ@staffs\unhbox\w@rkbox}%
|
||
|
\endcatcodesmusic}
|
||
|
\def\zendextract{\let\stoppiec@\zstoppiec@ \endextract}
|
||
|
|
||
|
%%
|
||
|
% Redefine \t@rmskip to include a macro for writing a record to a file,
|
||
|
% and define the macro
|
||
|
%%
|
||
|
|
||
|
\newdimen\x@skip
|
||
|
\newdimen\n@skip
|
||
|
|
||
|
\let\fil@termskip\empty
|
||
|
\def\t@rmskip{\kern\n@skip\advance\x@skip\n@skip
|
||
|
\advance\lin@pos\x@skip
|
||
|
% case of \hardnotes
|
||
|
\ifnum\V@sw>0\relax
|
||
|
\y@v\n@skip \fil@spc
|
||
|
\fi
|
||
|
% end case \hardnotes
|
||
|
\fil@termskip\global\n@skip\z@ \global\x@skip\z@ \let\V@sw\z@}
|
||
|
|
||
|
%%
|
||
|
% Define the amount of space before each barline,
|
||
|
%%
|
||
|
|
||
|
%\newdimen\beforeruleskip
|
||
|
\newskip\beforeruleskip
|
||
|
|
||
|
%%
|
||
|
% We must distinguish between scalable ('soft'=1) material in the bar
|
||
|
% (eg noteboxes) and absolute ('hard'=0) widths such as those from
|
||
|
% barlines and clef symbols
|
||
|
% Hence introduce a switch defining this attribute
|
||
|
%%
|
||
|
|
||
|
\newcount\widthtyp@ \widthtyp@\@ne
|
||
|
|
||
|
%%% bar numbers
|
||
|
|
||
|
\newcount\lastbarno
|
||
|
|
||
|
\def\writethebarno{\fontbarno\the\barno\kernm\qn@width}
|
||
|
\def\fontbarno{\it}
|
||
|
|
||
|
\def\wbarno@x{%%%% version 1.21: RDT moved \lastbarpos\lin@pos after calls to \Writ@meters
|
||
|
\ifx\volta@set\empty
|
||
|
\n@iii\barno \divide\n@iii\freqbarno\relax
|
||
|
\ifnum\n@iii=\lastbarno
|
||
|
\else \y@\altplancher \advance\y@\systemheight \advance\y@\tw@\internote
|
||
|
\raise\y@\llap{\writethebarno}\fi
|
||
|
\else
|
||
|
\ifx\volta@cut\empty
|
||
|
\else % volta was cut, there is nothing colliding with bar number.
|
||
|
\n@iii\barno \divide\n@iii\freqbarno\relax
|
||
|
\ifnum\n@iii=\lastbarno
|
||
|
\else \y@\altplancher \advance\y@\systemheight \advance\y@\tw@\internote
|
||
|
\raise\y@\llap{\writethebarno}\fi
|
||
|
\fi
|
||
|
\write@volta
|
||
|
\fi
|
||
|
\ifx\pdl@cut\empty % 1.21 RDT
|
||
|
\else% pedal rule was cut at the end of the previous line
|
||
|
\global\pdl@pos\lin@pos\let\pdl@cut\empty % reset \ped@pos
|
||
|
\fi
|
||
|
\b@rrul@ %+simick
|
||
|
\n@iii\barno \divide\n@iii\freqbarno\relax \lastbarno\n@iii }
|
||
|
|
||
|
%%% pass selective scoring
|
||
|
|
||
|
\newskip\cut@v % contains width of bar rule
|
||
|
\newskip\init@volta@pos % start position of volta
|
||
|
\newskip\volta@startcor %+simick volta start correction in case of leftrepeats
|
||
|
\newskip\volta@endcor %+simick volta end correction in case of rightrepeats
|
||
|
|
||
|
\def\raisevolta{\f@ur\internote}
|
||
|
|
||
|
\newbox\writ@volta@box
|
||
|
|
||
|
\def\voltadot{.}%
|
||
|
\def\write@volta{% writes the requested |n. and moves the things for further use
|
||
|
\ifx\volta@type\empty\else\errmessage{/setvolta collision!}\fi
|
||
|
\y@\altplancher \advance\y@\systemheight
|
||
|
\advance\y@\raisevolta
|
||
|
% \setbox\writ@volta@box\rlap{\vrule % \musixfont\sixt@@n %-simick
|
||
|
% \rm\ \vphantom{\^{\volta@text}\strut gq}\volta@text\voltadot}% %-simick
|
||
|
\setbox\writ@volta@box\rlap{\vrule\rm\strut\ \volta@text\voltadot}% %+simick
|
||
|
\xdef\thevolta@boxheight{\the\ht\writ@volta@box}%
|
||
|
\xdef\thevolta@boxdepth{\the\dp\writ@volta@box}%
|
||
|
\ifx\volta@cut\empty \else\setbox\writ@volta@box\null
|
||
|
\fi % if continuation, make writ@volta@box null
|
||
|
% \raise\y@\llap{\box\writ@volta@box}% %-simick
|
||
|
\kernm\volta@startcor\raise\y@\llap{\box\writ@volta@box}\kern\volta@startcor %+simick
|
||
|
\let\volta@type\volta@set
|
||
|
\let\volta@set\empty
|
||
|
\let\volta@cut\empty
|
||
|
% \init@volta@pos\lin@pos\relax %-simick
|
||
|
\init@volta@pos\lin@pos \advance\init@volta@pos-\volta@startcor %+simick
|
||
|
}%
|
||
|
|
||
|
\def\write@volta@hrule{% write the hrule of volta bar at its end
|
||
|
\ifx\volta@type\empty
|
||
|
\else
|
||
|
\y@v\lin@pos \advance\y@v-\init@volta@pos
|
||
|
% \global\advance\cut@v\lthick \advance\y@v-\cut@v %-simick
|
||
|
% \global\advance\cut@v\lthick %-simick
|
||
|
\ifnum\barsinlin@=\maxbarsinlin@ %+simick
|
||
|
\y@i\z@ %+simick
|
||
|
\else %+simick
|
||
|
\y@i\cut@v \advance\y@i-\volta@endcor %+simick
|
||
|
\fi %+simick
|
||
|
\advance\y@v-\y@i %+simick
|
||
|
\y@\altplancher \advance\y@\systemheight
|
||
|
\advance\y@\raisevolta
|
||
|
\raise\y@\llap{%
|
||
|
\raise\thevolta@boxheight
|
||
|
% \hbox{\vrule\@height\z@\@depth\lthick\@width\y@v}}% %-simick
|
||
|
\hbox{\vrule\@height\z@\@depth\lthick\@width\y@v}\kern\y@i}% %+simick
|
||
|
% check whether termination has been required
|
||
|
\ifx\endvolta@set\thr@@ \let\volta@type\thr@@\fi % \endvoltabox forces type \thr@@
|
||
|
\ifx\endvolta@set\empty \else \write@volta@endbox\fi
|
||
|
% now set volta@type \@ne to \empty
|
||
|
\ifx\volta@type\@ne \let\volta@type\empty\fi
|
||
|
\fi
|
||
|
}%
|
||
|
|
||
|
\def\write@volta@endbox{% write the hrule of volta bar at its end
|
||
|
\ifx\volta@type\empty
|
||
|
\else
|
||
|
% \y@v\lin@pos \advance\y@v-\init@volta@pos %-simick
|
||
|
% \global\advance\cut@v\lthick \advance\y@v-\cut@v %-simick
|
||
|
% \global\advance\cut@v\lthick %-simick
|
||
|
\y@\altplancher \advance\y@\systemheight
|
||
|
\advance\y@\raisevolta
|
||
|
\ifx\volta@type\thr@@
|
||
|
% \raise\y@\llap{\raise\thevolta@boxheight\hbox{\true@endvoltabox}}% %-simick
|
||
|
\raise\y@\llap{\raise\thevolta@boxheight\hbox{\true@endvoltabox}\kern\y@i}%+simick
|
||
|
\fi
|
||
|
% now force volta@type to \empty
|
||
|
\let\volta@type\empty
|
||
|
\let\endvolta@set\empty
|
||
|
\let\volta@cut\empty
|
||
|
\fi
|
||
|
}%
|
||
|
|
||
|
%\check
|
||
|
|
||
|
\let\writ@volta\empty % provisional for testing %
|
||
|
|
||
|
\let\volta@set\empty % tells the kind of volta setting at next bar
|
||
|
% \@ne = single \setvolta, \tw@ = \Setvolta
|
||
|
% \thr@@ = setvoltabox
|
||
|
|
||
|
\let\volta@type\empty % the current volta setting (same defs as \volta@set)
|
||
|
\let\volta@cut\empty
|
||
|
|
||
|
\let\endvolta@set\empty % tells the kind of volta closingg at next bar
|
||
|
% \@ne = not used, \tw@ = terminate \Setvolta[box]
|
||
|
% \thr@@ = terminate \Setvolta[box] with an ending hook
|
||
|
|
||
|
\def\setvolta{\let\volta@set\@ne \gen@setvolta}
|
||
|
\def\Setvolta{\let\volta@set\tw@ \gen@setvolta}
|
||
|
\def\setvoltabox{\let\volta@set\thr@@ \gen@setvolta}
|
||
|
|
||
|
\def\gen@setvolta#1{\def\volta@text{#1}}
|
||
|
|
||
|
\def\setendvolta{%
|
||
|
\ifx\volta@type\empty\volta@err
|
||
|
\else\let\endvolta@set\tw@
|
||
|
\fi}
|
||
|
|
||
|
\def\setendvoltabox{%
|
||
|
\ifx\volta@type\empty\volta@err
|
||
|
\else\let\endvolta@set\thr@@
|
||
|
\fi}
|
||
|
|
||
|
\let\endvolta\setendvolta
|
||
|
\let\endvoltabox\setendvoltabox
|
||
|
|
||
|
\def\true@endvoltabox{\raise-\thevolta@boxheight
|
||
|
\llap{\vrule\@height\thevolta@boxheight \@depth\thevolta@boxdepth}}
|
||
|
|
||
|
\def\volta@err{\immediate\write16{%
|
||
|
type=\ifx\volta@type\empty 0\else \number\volta@type\fi,
|
||
|
set=\ifx\volta@set\empty 0\else \number\volta@set\fi}%
|
||
|
\errmessage{\noexpand\endvolta, %\noexpand\contvolta,
|
||
|
\noexpand\endvoltabox\space does not match opening \noexpand\S[s]volta...}}
|
||
|
|
||
|
|
||
|
%%% line breaking stuff
|
||
|
|
||
|
\let\@nds@ction\empty
|
||
|
|
||
|
\newcount\barsinlin@
|
||
|
\newcount\maxbarsinlin@
|
||
|
|
||
|
%\def\@LeftRp{\stoppiec@\contpiece\addspace{\h@lf\afterruleskip}% %-simick
|
||
|
% \kernm\afterruleskip\l@eftrepeat\kern\afterruleskip} %-simick
|
||
|
\def\@LeftRp{\stoppiec@\l@@ftrepeat\advance\volta@startcor-\afterruleskip %+simick
|
||
|
\contpiece\addspace{\h@lf\afterruleskip}% %+simick
|
||
|
\kernm\afterruleskip\l@eftrepeat\kern\afterruleskip %+simick
|
||
|
\advance\lastbarpos\afterruleskip \b@rrul@} %+simick
|
||
|
|
||
|
\def\@LeftRpCont{\stoppiec@\l@@ftrepeat\advance\volta@startcor-\afterruleskip % RDT 1.28
|
||
|
\let\z@sw\@ne % turn on continuation bar number
|
||
|
\contpiece\addspace{\h@lf\afterruleskip}%
|
||
|
\kernm\afterruleskip\l@eftrepeat\kern\afterruleskip%
|
||
|
\advance\lastbarpos\afterruleskip \b@rrul@}
|
||
|
|
||
|
\def\T@bil{\advance\barsinlin@\@ne \ifnum\barsinlin@<\maxbarsinlin@}
|
||
|
|
||
|
\def\barre{\T@bil \@bar\else\stoppiec@\contpiece \fi}
|
||
|
\def\xbar{\@bar\advance\barsinpi@c@\m@ne}
|
||
|
\def\zbar{\T@bil \zn@wbar\else\zstoppiec@\contpiece \fi}
|
||
|
\def\alaligne{\stoppiece\contpiece}
|
||
|
\def\zalaligne{\zstoppiece\contpiece}
|
||
|
|
||
|
% ...@II means used in the *second* tex pass
|
||
|
|
||
|
\def\leftrepeat@II{%
|
||
|
\T@bil
|
||
|
\setleftrepeat\@bar
|
||
|
\else
|
||
|
\@LeftRp %
|
||
|
\fi}
|
||
|
|
||
|
\def\zleftrepeat@II{% % RDT 1.28
|
||
|
\advance\barno\m@ne%
|
||
|
\T@bil
|
||
|
\setleftrepeat\@bar%
|
||
|
\else
|
||
|
\@LeftRpCont% % RDT 1.28
|
||
|
\fi}
|
||
|
|
||
|
|
||
|
\let\leftrepeat\leftrepeat@II
|
||
|
\let\zleftrepeat\zleftrepeat@II % RDT 1.28
|
||
|
|
||
|
\def\zzleftrepeat{% % RDT 1.28
|
||
|
\advance\barno\m@ne%
|
||
|
\stoppiece%
|
||
|
\let\z@sw\@ne%
|
||
|
\contpiece%
|
||
|
\advance\barno\m@ne%
|
||
|
\leftrepeat%
|
||
|
}
|
||
|
|
||
|
\def\leftrightrepeat@II{%
|
||
|
\T@bil
|
||
|
\setleftrightrepeat\@bar
|
||
|
\else
|
||
|
\setrightrepeat\@LeftRp
|
||
|
\fi}
|
||
|
|
||
|
\def\zzrightrepeat{% % RDT 1.28
|
||
|
\advance\barno\m@ne%
|
||
|
\setrightrepeat\stoppiece
|
||
|
\let\z@sw\@ne
|
||
|
\contpiece
|
||
|
}
|
||
|
|
||
|
\def\zrightrepeat{% % RDT 1.28
|
||
|
\advance\barno\m@ne
|
||
|
\setrightrepeat
|
||
|
\T@bil
|
||
|
\@bar
|
||
|
\else
|
||
|
\stoppiec@
|
||
|
\let\z@sw\@ne
|
||
|
\contpiece
|
||
|
\fi}
|
||
|
|
||
|
\def\zzleftrightrepeat{% % RDT 1.28
|
||
|
\advance\barno\m@ne%
|
||
|
\setrightrepeat%
|
||
|
\stoppiece%
|
||
|
\let\z@sw\@ne%
|
||
|
\contpiece%
|
||
|
\advance\barno\m@ne%
|
||
|
\leftrepeat% % RDT revised 1.30
|
||
|
}
|
||
|
|
||
|
\def\zleftrightrepeat@II{% % RDT 1.28
|
||
|
\advance\barno\m@ne
|
||
|
\T@bil
|
||
|
\setleftrightrepeat\@bar
|
||
|
\else
|
||
|
\stoppiec@
|
||
|
\let\z@sw\@ne
|
||
|
\contpiece
|
||
|
\fi}
|
||
|
|
||
|
\let\leftrightrepeat\leftrightrepeat@II
|
||
|
\let\zleftrightrepeat\zleftrightrepeat@II % RDT 1.28
|
||
|
|
||
|
|
||
|
\def\zdoublebar{\advance\barno\m@ne\setdoublebar\xbar} % RDT revised 1.32
|
||
|
|
||
|
\def\zzdoublebar{% % RDT 1.31
|
||
|
\advance\barno\m@ne%
|
||
|
\setdoublebar%
|
||
|
\stoppiece%
|
||
|
\let\z@sw\@ne%
|
||
|
\contpiece%
|
||
|
}
|
||
|
|
||
|
\def\zzbar{% % RDT 1.31
|
||
|
\advance\barno\m@ne%
|
||
|
\stoppiece%
|
||
|
\let\z@sw\@ne%
|
||
|
\contpiece%
|
||
|
}
|
||
|
|
||
|
\def\alapage{\stoppiece\eject\contpiece}
|
||
|
\def\zalapage{\zstoppiece\eject\contpiece}
|
||
|
|
||
|
% minuscule: une seule barre
|
||
|
% majuscule: double barre
|
||
|
|
||
|
\let\Writ@newsigns\empty
|
||
|
|
||
|
\def\updat@context{\writ@newclefs
|
||
|
\T@bil \wbarno@x\Writ@newsigns\Writ@meters\lastbarpos\lin@pos\addspace\afterruleskip
|
||
|
%%% 1.21: added \lastbarno setting
|
||
|
\else\Writ@newsigns\z@suspend\contpiece \fi}
|
||
|
|
||
|
\def\changecontext{\showallbarrules\n@wbar\updat@context}
|
||
|
\def\Changecontext{\showallbarrules\setdoublebar\changecontext}
|
||
|
\def\zchangecontext{\advance\n@skip\beforeruleskip \widthtyp@\@ne \t@rmskip
|
||
|
\zn@wbar\updat@context}
|
||
|
|
||
|
\def\pchangecontext{\showallbarrules\n@wbar
|
||
|
\writ@newclefs\Writ@newsigns\z@suspend\eject\contpiece}
|
||
|
\def\pChangecontext{\setdoublebar\pchangecontext}
|
||
|
|
||
|
%%% bars, repeatbars, ...
|
||
|
|
||
|
%%
|
||
|
% Change ... to add skip \beforeruleskip to the preceeding notebox,
|
||
|
% and to set the 'soft' switch for the output record
|
||
|
%%
|
||
|
%%
|
||
|
% Redefine \n@wbar to write the bar line thickness to file,
|
||
|
% then reset \n@skip and \x@skip
|
||
|
%%
|
||
|
|
||
|
\newskip\lastbarpos
|
||
|
\let\fil@barno\empty
|
||
|
\let\atnextbar\empty
|
||
|
|
||
|
\def\n@wbar{%
|
||
|
\t@rmskip % essai DT
|
||
|
\advance\n@skip\beforeruleskip \widthtyp@\@ne \t@rmskip
|
||
|
% \ifdim\cut@v>\z@ \else\ifx\barrul@\thinrul@ \else\global\cut@v.9\Interligne \fi\fi %-simick
|
||
|
% \barrul@\widthtyp@\z@ \fil@termskip\let\barrul@\thinrul@ %-simick
|
||
|
\barrul@\widthtyp@\z@ \fil@termskip %+simick
|
||
|
\advance\barsinpi@c@\@ne \fil@barno
|
||
|
\ifx\no@b\empty \message{bar \the\barno}\fi
|
||
|
\advance\barno\@ne \advance\lin@pos\x@skip \atnextbar \let\atnextbar\empty
|
||
|
\write@volta@hrule %+simick
|
||
|
% \global\cut@v\z@ % <===================================== inserted %-simick
|
||
|
\global\n@skip\z@ \global\x@skip\z@ \let\z@sw\empty
|
||
|
% \write@volta@hrule %-simick
|
||
|
}%
|
||
|
|
||
|
\def\@bar{\n@wbar\wbarno@x\lastbarpos\lin@pos\addspace\afterruleskip}
|
||
|
|
||
|
\def\zn@wbar{\t@rmskip\advance\barsinpi@c@\@ne \let\z@sw\@ne}
|
||
|
|
||
|
\def\small@spc{\addspace{\h@lf\big@spc}}
|
||
|
|
||
|
\def\b@rrul@{\let\barrul@\thinrul@ %+simick
|
||
|
\global\cut@v\lthick \global\volta@endcor-\thr@@\lthick \global\volta@startcor\z@} %+simick
|
||
|
\def\r@ightrepeat{%
|
||
|
\hbox{\writ@colons\addspace\big@spc\thinrul@\small@spc\thickrul@}}
|
||
|
\def\r@@ghtrepeat{% %+simick
|
||
|
\global\cut@v\big@spc \global\advance\cut@v\lthick \global\advance\cut@v\h@lf\big@spc %+simick
|
||
|
\global\volta@endcor\cut@v \global\advance\cut@v\big@spc \global\volta@startcor\z@} %+simick
|
||
|
\def\l@eftrepeat{%
|
||
|
\hbox{\thickrul@\small@spc\thinrul@\addspace\big@spc\writ@colons}}
|
||
|
\def\l@@ftrepeat{% %+simick
|
||
|
\global\cut@v\big@spc \global\advance\cut@v\h@lf\big@spc \global\advance\cut@v\lthick %+simick
|
||
|
\global\advance\cut@v\big@spc \global\volta@endcor\z@ \global\volta@startcor\big@spc %+simick
|
||
|
\global\advance\volta@startcor\lthick \global\advance\volta@startcor\h@lf\big@spc} %+simick
|
||
|
\def\l@eftrightrepeat{\hbox{\writ@colons\addspace\big@spc\thickrul@
|
||
|
\small@spc\thickrul@\addspace\big@spc\writ@colons}}
|
||
|
\def\l@@ftrightrepeat{% %+simick
|
||
|
\global\cut@v\big@spc \global\advance\cut@v\big@spc \global\volta@endcor\cut@v %+simick
|
||
|
\global\advance\cut@v\h@lf\big@spc %+simick
|
||
|
\global\volta@startcor\big@spc \global\advance\volta@startcor\big@spc %+simick
|
||
|
\global\advance\cut@v\volta@endcor \global\advance\volta@startcor-\lthick} %+simick
|
||
|
|
||
|
\def\doublebar{\showallbarrules\setdoublebar\barre}% double barre de mesure
|
||
|
%\def\setdoubleBAR{\showallbarrules\def\barrul@{\thinrul@\small@spc\thickrul@}} %-simick
|
||
|
\def\setdoubleBAR{\showallbarrules\def\barrul@{\thinrul@\small@spc\thickrul@}% %+simick
|
||
|
\global\cut@v\lthick \global\advance\cut@v\h@lf\big@spc \global\volta@endcor\cut@v %+simick
|
||
|
\global\advance\cut@v\big@spc \global\volta@startcor\z@} %+simick
|
||
|
%\def\setemptybar{\def\barrul@{\relax}} %-simick
|
||
|
\def\setemptybar{\def\barrul@{\relax}% %+simick
|
||
|
\global\cut@v\z@ \global\volta@endcor-\f@ur\lthick \global\volta@startcor\z@} %+simick
|
||
|
\def\setdoublebar{\showallbarrules\global\cut@v.4\Interligne
|
||
|
\global\advance\cut@v\tw@\lthick \global\volta@endcor\z@ \global\volta@startcor\z@ %+simick
|
||
|
\def\barrul@{\thinrul@\addspace{.4\Interligne}\thinrul@}}
|
||
|
|
||
|
\def\rightrepeat{\setrightrepeat\barre}
|
||
|
|
||
|
%\def\setrightrepeat{\showallbarrules\let\barrul@\r@ightrepeat} %-simick
|
||
|
\def\setrightrepeat{\showallbarrules\let\barrul@\r@ightrepeat \r@@ghtrepeat} %+simick
|
||
|
%\def\setleftrepeat{\showallbarrules\let\barrul@\l@eftrepeat} %-simick
|
||
|
\def\setleftrepeat{\showallbarrules\let\barrul@\l@eftrepeat \l@@ftrepeat} %+simick
|
||
|
%\def\setleftrightrepeat{\showallbarrules\let\barrul@\l@eftrightrepeat} %-simick
|
||
|
\def\setleftrightrepeat{\showallbarrules\let\barrul@\l@eftrightrepeat \l@@ftrightrepeat}%+simick
|
||
|
|
||
|
% write colons on all staffs (a part of [left][right]repeat symbols
|
||
|
|
||
|
%\def\writ@colons{\n@loop{\w@coli}\repeat}
|
||
|
|
||
|
|
||
|
|
||
|
\def\writ@colons{\n@loop{\w@coli}\repeat}
|
||
|
\def\w@coli{\p@loop
|
||
|
{\ifnum\nblines=6\tabc@lsix%
|
||
|
\else\ifnum\nblines=4\tabc@lfour%
|
||
|
\else\raise\altportee\hbox{\raise4\internote\hbox{\keychar55}}\fi\fi}\count@portee\repeat}
|
||
|
|
||
|
%%%% 1.29 RDT
|
||
|
\def\tabc@lsix{\raise\altportee\hbox{%
|
||
|
%\raise7\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}% uncomment if wanted
|
||
|
\raise5\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}%
|
||
|
\raise3\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}% comment out if unwanted
|
||
|
\raise1\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}%
|
||
|
%\raise-1\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}% uncomment if wanted
|
||
|
}}
|
||
|
|
||
|
%%%% 1.29 RDT
|
||
|
\def\tabc@lfour{\raise\altportee\hbox{%
|
||
|
\raise3\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}%
|
||
|
\raise1\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}% comment out if unwanted
|
||
|
\raise-1\internote\rlap{\kernm1.2\internote\hbox{\keychar24}}%
|
||
|
}}
|
||
|
%%% seperated and full barlines
|
||
|
|
||
|
%\def\rul@full#1{\raise\altplancher\rlap{\vrule\@depth\hlthick
|
||
|
% \@height\systemheight\@width#1}\addspace#1}
|
||
|
|
||
|
\def\rul@full#1{\hbox{\raise\altplancher\rlap{\vrule\@depth\hlthick
|
||
|
\@height\systemheight\@width#1}}\addspace#1}
|
||
|
|
||
|
\def\rul@sep#1{\noport@@\z@\n@loop
|
||
|
\edef\rul@hidden{\csname h@bl\romannumeral\noinstrum@nt\endcsname}%
|
||
|
\Comp@High\hbox{\raise\altitude\rlap{%
|
||
|
% \message{(tw@=\meaning\tw@\space thr@@=\meaning\thr@@\space \number\noinstrum@nt->}\expandafter\show\rul@hidden
|
||
|
\expandafter
|
||
|
\ifx\rul@hidden\relax % if \relax = never hidden
|
||
|
\vrule\@depth\hlthick\@width#1\@height\y@v
|
||
|
\else
|
||
|
\expandafter
|
||
|
\ifx\rul@hidden\thr@@ % if \thr@@ = not hidden one time,
|
||
|
\vrule\@depth\hlthick\@width#1\@height\y@v
|
||
|
\global\expandafter\let\rul@hidden\tw@ % reset to perm. hidden
|
||
|
\else
|
||
|
\expandafter
|
||
|
\ifx\rul@hidden\tw@ % if \tw@ = always hidden
|
||
|
\relax
|
||
|
\else
|
||
|
\expandafter
|
||
|
\ifx\rul@hidden\@ne % if \@ne = hidden only one time
|
||
|
\global\expandafter\let\rul@hidden\relax
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi}}\repeat\addspace#1}
|
||
|
|
||
|
%== hides (only) next bar line for specified instrument
|
||
|
\def\Hidebarrule#1{\global\expandafter\let\csname h@bl\romannumeral#1\endcsname\@ne}
|
||
|
|
||
|
%== hides all next bar lines for specified instrument
|
||
|
\def\hidebarrule#1{\global\expandafter\let\csname h@bl\romannumeral#1\endcsname\tw@}
|
||
|
|
||
|
%== force showing all bar lines for specified instrument
|
||
|
\def\showbarrule#1{\global\expandafter\let\csname h@bl\romannumeral#1\endcsname\relax}
|
||
|
|
||
|
%== force showing all bar lines for all instruments
|
||
|
\def\showallbarrules{%
|
||
|
%\ifx\writ@rule\rul@sep\relax
|
||
|
\n@loop
|
||
|
\global\expandafter\let\csname h@bl\romannumeral\noinstrum@nt\endcsname\relax
|
||
|
\repeat
|
||
|
%\fi
|
||
|
}
|
||
|
|
||
|
%== force showing (only) next bar line for specified instrument
|
||
|
\def\Showbarrule#1{\global\expandafter\let\csname h@bl\romannumeral#1\endcsname\thr@@}
|
||
|
|
||
|
% standard vrules over all instruments
|
||
|
\def\stdbarrules{\let\writ@rule\rul@full }
|
||
|
|
||
|
% separated vrules par instrum
|
||
|
\def\sepbarrules{\let\writ@rule\rul@sep }
|
||
|
\stdbarrules
|
||
|
|
||
|
%%% signs
|
||
|
|
||
|
\def\s@l@ctsigns{\edef\a@s{\csname a@s\romannumeral\noinstrum@nt\endcsname}%
|
||
|
\edef\o@s{\csname o@s\romannumeral\noinstrum@nt\endcsname}}%
|
||
|
|
||
|
\def\setsign#1#2{\noinstrum@nt#1\relax
|
||
|
\let\Writ@newsigns\writ@newsigns % only write them, when they are touched
|
||
|
\s@l@ctsigns % select instrument
|
||
|
\a@s#2\relax %
|
||
|
}
|
||
|
|
||
|
\def\generalsignature#1{\let\Writ@newsigns\writ@newsigns
|
||
|
\m@loop \s@l@ctsigns \a@s#1\repeat}
|
||
|
|
||
|
% Inhibits writing erasing naturals at next change of context
|
||
|
\def\ignorenats{\m@loop \s@l@ctsigns \o@s\z@ \repeat}
|
||
|
|
||
|
\def\changesignature{\t@rmskip\Writ@newsigns}
|
||
|
|
||
|
\def\writ@sign{\ifnum\a@s=\z@ \else
|
||
|
\n@v\@lii
|
||
|
\ifnum\a@s>\z@ \C@sig\t@n
|
||
|
\C@sh\@ne\s@v@n
|
||
|
\C@sh\tw@\@l@v@n
|
||
|
\C@sh\thr@@\@ight
|
||
|
\C@sh\f@ur\fiv@
|
||
|
\C@sh\fiv@\nin@
|
||
|
\C@sh\si@\si@\fi
|
||
|
\n@v\@l
|
||
|
\ifnum\a@s<\z@ \C@sig\si@
|
||
|
\C@fl\@ne\nin@
|
||
|
\C@fl\tw@\fiv@
|
||
|
\C@fl\thr@@\@ight
|
||
|
\C@fl\f@ur\f@ur
|
||
|
\C@fl\fiv@\s@v@n
|
||
|
\C@fl\si@\thr@@\fi
|
||
|
\fi}
|
||
|
|
||
|
\def\C@sh#1#2{\ifnum\a@s>#1\C@sig#2\fi}
|
||
|
\def\C@fl#1#2{\ifnum\a@s<-#1\C@sig#2\fi}
|
||
|
|
||
|
%%
|
||
|
% Augment \writ@newsigns so that
|
||
|
% (1) the space taken by the mid-line sign change is written to the file;
|
||
|
% (2) the new value of \sign@skip is written to the file
|
||
|
% Note that this is not necessarily the same value
|
||
|
% as the mid-line value, which includes cancellation naturals when
|
||
|
% the key signature changes from N flats to M sharps (or vice-versa)
|
||
|
%%
|
||
|
|
||
|
\let\fil@signs\empty
|
||
|
|
||
|
\def\writ@newsigns{\sign@skip\z@
|
||
|
\n@loop{\s@l@ctsigns \let\@Ti\writ@newsign \C@wsi}\repeat
|
||
|
\n@skip\sign@skip \widthtyp@\z@ \t@rmskip
|
||
|
\m@loop \s@l@ctsigns \o@s\a@s \repeat
|
||
|
\let\Writ@newsigns\empty \fil@signs }
|
||
|
|
||
|
\def\upd@width#1{\ifdim#1<\wd\toks@box \global#1\wd\toks@box \fi}
|
||
|
\def\writ@box{\leavevmode\raise\altportee\rlap{\box\toks@box}}
|
||
|
|
||
|
\newcount\ut@ref
|
||
|
|
||
|
\def\get@refs#1#2#3#4{% #1-#4: cle correspondante 0=sol, 5-6=fa, 1-4=ut
|
||
|
\ifcase\noport@@ \ut@ref\z@ \or \ut@ref#1\or \ut@ref#2\or
|
||
|
\ut@ref#3\or \ut@ref#4\fi
|
||
|
\relax \ifnum \ut@ref=9\relax \ut@ref-1\relax\fi
|
||
|
\global\ut@ref\ut@ref }
|
||
|
|
||
|
%\def\writ@newsign{\ifnum\a@s=\z@ \else\kern.4\Internote \fi
|
||
|
% \ifnum\o@s<\z@ \w@flats\w@sharps\else\w@sharps\w@flats \fi}
|
||
|
|
||
|
\def\writ@newsign{\ifnum\a@s=\z@ \else\kern.4\Internote \fi
|
||
|
\ifnum\o@s<\z@ \w@cancelflats\w@flats\w@sharps
|
||
|
\else\w@cancelsharps\w@sharps\w@flats \fi}
|
||
|
|
||
|
\def\w@flats{\W@Fl\z@\si@ \W@Fl\@ne\nin@ \W@Fl\tw@\fiv@ \W@Fl\thr@@\@ight
|
||
|
\W@Fl\f@ur\f@ur \W@Fl\fiv@\s@v@n \W@Fl\si@\thr@@}
|
||
|
|
||
|
\def\w@cancelflats{\W@canFl\z@\si@ \W@canFl\@ne\nin@ \W@canFl\tw@\fiv@
|
||
|
\W@canFl\thr@@\@ight \W@canFl\f@ur\f@ur \W@canFl\fiv@\s@v@n \W@canFl\si@\thr@@}
|
||
|
|
||
|
%\def\W@Fl#1#2{%
|
||
|
% \ifnum\a@s<-#1\n@v\@l \C@sig#2\else \ifnum\o@s<-#1\n@v\@liv \C@sig#2\fi \fi}
|
||
|
|
||
|
\def\W@Fl#1#2{%
|
||
|
\ifnum\a@s<-#1\n@v\@l \C@sig#2\else \ifnum\o@s<-#1\relax\fi \fi}
|
||
|
|
||
|
\def\W@canFl#1#2{%
|
||
|
\ifnum\a@s<-#1\relax\else \ifnum\o@s<-#1\n@v\@liv \C@sig#2\fi \fi}
|
||
|
|
||
|
\def\w@sharps{\W@Sh\z@\t@n \W@Sh\@ne\s@v@n \W@Sh\tw@\@l@v@n
|
||
|
\W@Sh\thr@@\@ight \W@Sh\f@ur\fiv@ \W@Sh\fiv@\nin@ \W@Sh\si@\si@}
|
||
|
|
||
|
\def\w@cancelsharps{\W@canSh\z@\t@n \W@canSh\@ne\s@v@n \W@canSh\tw@\@l@v@n
|
||
|
\W@canSh\thr@@\@ight \W@canSh\f@ur\fiv@ \W@canSh\fiv@\nin@ \W@canSh\si@\si@}
|
||
|
|
||
|
%\def\W@Sh#1#2{%
|
||
|
% \ifnum\a@s>#1\n@v\@lii \C@sig#2\else\ifnum\o@s>#1\n@v\@liv \C@sig#2\fi \fi}
|
||
|
|
||
|
\def\W@Sh#1#2{%
|
||
|
\ifnum\a@s>#1\n@v\@lii \C@sig#2\else\ifnum\o@s>#1\relax\fi \fi}
|
||
|
|
||
|
\def\W@canSh#1#2{%
|
||
|
\ifnum\a@s>#1\relax\else\ifnum\o@s>#1\n@v\@liv \C@sig#2\fi \fi}
|
||
|
|
||
|
\def\C@wsi{\s@l@ctclefs \p@loop \count@portee \expandafter\get@refs\the\a@c
|
||
|
\setbox\toks@box\hbox{\kern.4\Internote \@Ti \kern.4\Internote}%
|
||
|
\upd@width\sign@skip \writ@box \repeat}
|
||
|
|
||
|
%\def\C@sig#1{\n@iii#1%
|
||
|
% \ifnum\ut@ref>\z@
|
||
|
% \advance\n@iii\ut@ref \advance\n@iii\ut@ref
|
||
|
% \ifnum\ut@ref=\si@ \advance\n@iii-\s@v@n \fi
|
||
|
% \ifnum\ut@ref>\thr@@ \advance\n@iii-\s@v@n \fi
|
||
|
% \ifnum\n@iii>\@l@v@n \advance\n@iii-\s@v@n \fi
|
||
|
%\fi
|
||
|
%\advance\n@iii-\tw@ \raise\n@iii\internote
|
||
|
%\hbox\@to\tw@\internote{\hss\keychar\n@v\hss}}
|
||
|
|
||
|
\def\C@sig#1{\n@iii#1% Correction by W. Icking
|
||
|
\advance\n@iii\ut@ref \advance\n@iii\ut@ref
|
||
|
\ifnum\ut@ref=\si@ \advance\n@iii-\fourt@@n%
|
||
|
\else \ifnum\ut@ref>\z@ \advance\n@iii-\s@v@n \fi\fi
|
||
|
\ifnum\n@iii<\@ne \global\advance\n@iii\s@v@n \fi
|
||
|
\ifnum\n@iii<\@ne \global\advance\n@iii\s@v@n \fi
|
||
|
\ifnum\n@iii>\@l@v@n \advance\n@iii-\s@v@n \fi
|
||
|
\ifnum\n@iii>\@l@v@n \advance\n@iii-\s@v@n \fi
|
||
|
\advance\n@iii-\tw@ \raise\n@iii\internote
|
||
|
\hbox\@to\tw@\internote{\hss\keychar\n@v\hss}}
|
||
|
|
||
|
%%% meterindicators
|
||
|
|
||
|
\def\s@l@ctm@t{\edef\m@t{\csname m@t\romannumeral\noinstrum@nt\endcsname}}
|
||
|
|
||
|
\def\setmeter#1#2{\noinstrum@nt#1\relax % select instrument
|
||
|
\let\Writ@meters\writ@meters % only write them, when they are touched
|
||
|
\s@l@ctm@t \m@t{#2\empty\empty\empty}}
|
||
|
|
||
|
\def\generalmeter#1{\let\Writ@meters\writ@meters
|
||
|
\m@loop \s@l@ctm@t \m@t{{#1}{#1}{#1}{#1}}\repeat}
|
||
|
|
||
|
%%
|
||
|
% Redefine \writ@meters to set the 'hard' switch for
|
||
|
% \t@rmskip, indicating that this length is unscaleable
|
||
|
%%
|
||
|
|
||
|
% \meterskip influence the space before !first! writemeters
|
||
|
\newskip\meterskip
|
||
|
|
||
|
\def\writ@meters{\addspace\meterskip \meterskip\z@ \global\n@skip\z@
|
||
|
\n@loop{\writ@meteri}\repeat
|
||
|
\ifdim\n@skip>\z@ \advance\n@skip\big@spc
|
||
|
\widthtyp@\z@ \t@rmskip \fi \let\Writ@meters\empty}
|
||
|
|
||
|
\def\writ@meteri{\s@l@ctm@t \p@loop \setbox\toks@box
|
||
|
\hbox{\expandafter\writ@meterp\the\m@t{}{}{}{}}\upd@width\n@skip
|
||
|
\writ@box \count@portee\repeat}
|
||
|
|
||
|
\def\writ@meterp#1#2#3#4{%
|
||
|
\ifcase\noport@@\hbox{#1}\or \hbox{#2}\or \hbox{#3}\or \hbox{#4}\fi}
|
||
|
|
||
|
\def\meterfrac#1#2{%
|
||
|
\ifnum\nblines=6%
|
||
|
\setbox\toks@box\vbox{\hbox{~\meterfont#1}%
|
||
|
\hbox{~\meterfont #2}}\raise\internote%
|
||
|
\vbox\@to\@ight\internote{\offinterlineskip%
|
||
|
\vss\hbox\@to\wd\toks@box{\hss\meterfont#1\hss}\vskip1.5\internote%
|
||
|
\vss\hbox\@to\wd\toks@box{\hss\meterfont#2\hss}\vss}%
|
||
|
\else\ifnum\nblines=4%
|
||
|
\setbox\toks@box\vbox{\hbox{\ \meterfont#1}%
|
||
|
\hbox{\ \meterfont #2}}\raise-1\internote\vbox\@to\@ight\internote{\offinterlineskip
|
||
|
\vss\hbox\@to\wd\toks@box{\hss\meterfont#1\hss}\vss
|
||
|
\vss\hbox\@to\wd\toks@box{\hss\meterfont#2\hss}\vss}
|
||
|
\else
|
||
|
\setbox\toks@box\vbox{\hbox{\ \meterfont#1}%
|
||
|
\hbox{\ \meterfont #2}}\vbox\@to\@ight\internote{\offinterlineskip
|
||
|
\vss\hbox\@to\wd\toks@box{\hss\meterfont#1\hss}\vss
|
||
|
\vss\hbox\@to\wd\toks@box{\hss\meterfont#2\hss}\vss}
|
||
|
\fi\fi
|
||
|
}
|
||
|
\def\allabreve{% -> 2/2
|
||
|
\ifnum\nblines=6\raise5\internote\hbox{\keychar82}%
|
||
|
\else\ifnum\nblines=4\raise3\internote\hbox{\keychar82}%
|
||
|
\else\raise4\internote\hbox{\keychar82}\fi\fi}
|
||
|
\def\reverseallabreve{%
|
||
|
\ifnum\nblines=6\raise5\internote\hbox{\keychar123}%
|
||
|
\else\ifnum\nblines=4\raise3\internote\hbox{\keychar123}
|
||
|
\else\raise4\internote\hbox{\keychar123}\fi\fi}
|
||
|
\def\meterC{% -> 4/4
|
||
|
\ifnum\nblines=6\raise5\internote\hbox{\musickeyfont\@lxxxiii}%
|
||
|
\else\ifnum\nblines=4\raise3\internote\hbox{\musickeyfont\@lxxxiii}%
|
||
|
\else\raise4\internote\hbox{\musickeyfont\@lxxxiii}\fi\fi}
|
||
|
\def\reverseC{% -> 4/2
|
||
|
\ifnum\nblines=6\raise5\internote\hbox{\keychar84}%
|
||
|
\else\ifnum\nblines=4\raise3\internote\hbox{\keychar84}%
|
||
|
\else\raise4\internote\hbox{\keychar84}\fi\fi}
|
||
|
\def\meterN#1{%
|
||
|
\ifnum\nblines=6\raise3\internote\hbox{\meterfont#1}%
|
||
|
\else\ifnum\nblines=4\raise1\internote\hbox{\meterfont#1}%
|
||
|
\else\raise2\internote\hbox{\meterfont#1}\fi\fi}
|
||
|
\def\meterplus{{\keychar57}}
|
||
|
|
||
|
%%% clefs
|
||
|
|
||
|
\def\s@l@ctclefs{\edef\a@c{\csname a@c\romannumeral\noinstrum@nt\endcsname}%
|
||
|
\edef\o@c{\csname o@c\romannumeral\noinstrum@nt\endcsname}}
|
||
|
|
||
|
% why simple, when it can be done complicated ?
|
||
|
|
||
|
\newtoks\t@c
|
||
|
\def\@fourtoks#1#2#3#4#5+{#1#2#3#4}
|
||
|
|
||
|
\def\setclef#1#2{\noinstrum@nt#1\relax
|
||
|
\ifnum#1<1\errmessage{Instrument number not positive}\fi
|
||
|
\s@l@ctclefs \t@c{#2000}%
|
||
|
\a@c\expandafter\expandafter\expandafter{\expandafter\@fourtoks\the\t@c+}}
|
||
|
\let\setclefs\setclef
|
||
|
|
||
|
\let\bass\si@
|
||
|
\let\alto\thr@@
|
||
|
\let\treble\z@
|
||
|
|
||
|
\def\setclefsymbol#1#2{\n@v#1\relax % select instrument
|
||
|
\expandafter\def\csname bassc@s\romannumeral\n@v\endcsname{#2}%
|
||
|
\expandafter\def\csname altoc@s\romannumeral\n@v\endcsname{#2}%
|
||
|
\expandafter\def\csname treblec@s\romannumeral\n@v\endcsname{#2}%
|
||
|
}%
|
||
|
|
||
|
\def\setbassclefsymbol#1#2{\n@v#1\relax % select instrument
|
||
|
\expandafter\def\csname bassc@s\romannumeral\n@v\endcsname{#2}%
|
||
|
}%
|
||
|
|
||
|
\def\setaltoclefsymbol#1#2{\n@v#1\relax % select instrument
|
||
|
\expandafter\def\csname altoc@s\romannumeral\n@v\endcsname{#2}%
|
||
|
}%
|
||
|
|
||
|
\def\settrebleclefsymbol#1#2{\n@v#1\relax % select instrument
|
||
|
\expandafter\def\csname treblec@s\romannumeral\n@v\endcsname{#2}%
|
||
|
}%
|
||
|
|
||
|
\def\trebleclef{\keychar71}
|
||
|
\def\bassclef{\keychar73}
|
||
|
\def\altoclef{\keychar75}
|
||
|
|
||
|
\def\smalltrebleclef{\keychar72}
|
||
|
\def\smallbassclef{\keychar74}
|
||
|
\def\smallaltoclef{\keychar76}
|
||
|
|
||
|
%% version 1.21: replaced \smalltype\it by \txtfont (size-dependent)
|
||
|
%% and adjusted the kerns RDT
|
||
|
%%
|
||
|
|
||
|
\def\trebleoct{\trebleclef\raise 9\internote\hbox\@to\z@{\txtfont{\kern -3.6\internote 8}\hss}}
|
||
|
\def\bassoct{\bassclef\raise 2\internote\hbox\@to\z@{\txtfont{\kern -4.6\internote 8}\hss}}
|
||
|
\def\treblelowoct{\trebleclef\raise -7.5\internote\hbox\@to\z@{\txtfont{\kern -4.6\internote 8}\hss}}
|
||
|
\def\basslowoct{\bassclef\raise -6\internote\hbox\@to\z@{\txtfont{\kern -5.0\internote 8}\hss}}
|
||
|
|
||
|
% [version 1.15] reqest from Hermann Hinsch
|
||
|
\def\smalltrebleoct{\smalltrebleclef\raise 7.2\internote\hbox\@to\z@{\txtfont{\kern -3.6\internote 8}\hss}}
|
||
|
\def\smalltreblelowoct{\smalltrebleclef\raise-6.8\internote\hbox\@to\z@{\txtfont{\kern -4.2\internote 8}\hss}}
|
||
|
\def\smallbassoct{\smallbassclef\raise 2\internote\hbox\@to\z@{\txtfont{\kern -4.0\internote 8}\hss}}
|
||
|
\def\smallbasslowoct{\smallbassclef\raise-6.5\internote\hbox\@to\z@{\txtfont{\kern -4.4\internote 8}\hss}}
|
||
|
% [version 1.15] reqest from Hermann Hinsch: end
|
||
|
|
||
|
|
||
|
\newskip\clef@skip
|
||
|
|
||
|
\def\changeclefs{\t@rmskip\writ@newclefs}
|
||
|
\def\zchangeclefs{\t@rmskip\zwrit@newclefs}
|
||
|
|
||
|
%%% version 1.21: new command to call and reset \atnextbar before outputting new clefs RDT
|
||
|
\def\Changeclefs{\t@rmskip\atnextbar\let\atnextbar\empty\writ@newclefs}
|
||
|
|
||
|
% since the characters are shifted by default(Metafont) they looked
|
||
|
% a little bit strange when you mix several staffstaffsizes (flushleft)
|
||
|
% I've introduced a hack(kern kernm), that they are (nearly) centered
|
||
|
% (aehmm, really not the best way, because now they look strange
|
||
|
% if you use music footnotes)
|
||
|
|
||
|
\def\writ@clefi{\s@l@ctclefs
|
||
|
\p@loop
|
||
|
\setbox\toks@box\hbox{\expandafter\writ@clefp\the\a@c}%
|
||
|
\upd@width\clef@skip\raise\altportee\rlap{%
|
||
|
\ifdim\internote<\Internote \kern\thr@@\Internote\kernm\thr@@\internote \fi
|
||
|
\box\toks@box}\count@portee\repeat}
|
||
|
|
||
|
\def\writ@clefp#1#2#3#4{%
|
||
|
\ifcase\noport@@\singl@clef#1%
|
||
|
\or \singl@clef#2\or \singl@clef#3\or \singl@clef#4\fi}
|
||
|
|
||
|
\def\singl@clef#1{\n@iii#1\relax
|
||
|
\ifcase\n@iii
|
||
|
\C@Clef\@ne\trebleclef@var\or
|
||
|
\C@Clef\z@\altoclef@var\or
|
||
|
\C@Clef\@ne\altoclef@var\or
|
||
|
\C@Clef\tw@\altoclef@var\or
|
||
|
\C@Clef\thr@@\altoclef@var\or
|
||
|
\C@Clef\tw@\bassclef@var\or
|
||
|
\C@Clef\thr@@\bassclef@var\or
|
||
|
\C@Clef\f@ur\bassclef@var\or % 7 = subbass
|
||
|
\or
|
||
|
\C@Clef\z@\trebleclef@var % 9 = french violin-clef
|
||
|
\fi
|
||
|
}
|
||
|
|
||
|
\def\C@Clef#1#2{\n@iii#1\relax\multiply\n@iii\tw@
|
||
|
\raise\n@iii\internote\hbox{#2}}
|
||
|
|
||
|
\def\bassclef@var{\expandafter
|
||
|
\ifx\csname bassc@s\romannumeral\noinstrum@nt\endcsname\z@
|
||
|
\bassclef\else \csname bassc@s\romannumeral\noinstrum@nt\endcsname \fi}
|
||
|
\def\trebleclef@var{\expandafter
|
||
|
\ifx\csname treblec@s\romannumeral\noinstrum@nt\endcsname\z@
|
||
|
\trebleclef\else \csname treblec@s\romannumeral\noinstrum@nt\endcsname \fi}
|
||
|
\def\altoclef@var{\expandafter
|
||
|
\ifx\csname altoc@s\romannumeral\noinstrum@nt\endcsname\z@
|
||
|
\altoclef\else \csname altoc@s\romannumeral\noinstrum@nt\endcsname \fi}
|
||
|
|
||
|
\def\smallbassclef@var{\expandafter
|
||
|
\ifx\csname bassc@s\romannumeral\noinstrum@nt\endcsname\z@
|
||
|
\smallbassclef\else \csname bassc@s\romannumeral\noinstrum@nt\endcsname \fi}
|
||
|
\def\smalltrebleclef@var{\expandafter
|
||
|
\ifx\csname treblec@s\romannumeral\noinstrum@nt\endcsname\z@
|
||
|
\smalltrebleclef\else \csname treblec@s\romannumeral\noinstrum@nt\endcsname \fi}
|
||
|
\def\smallaltoclef@var{\expandafter
|
||
|
\ifx\csname altoc@s\romannumeral\noinstrum@nt\endcsname\z@
|
||
|
\smallaltoclef\else \csname altoc@s\romannumeral\noinstrum@nt\endcsname \fi}
|
||
|
|
||
|
|
||
|
%%
|
||
|
% Redefine \writ@newclefs similarly
|
||
|
%
|
||
|
% Note that \clef@skip does not change for the different clef
|
||
|
% symbols (always 3.2\Interligne for normal sized clefs)
|
||
|
% Hence there is no need to communicate clef changes to the
|
||
|
% formatting program
|
||
|
%%
|
||
|
|
||
|
\def\writ@newclefs{\clef@skip\z@ \n@loop{\writ@newclefi}\repeat
|
||
|
\n@skip\clef@skip \widthtyp@\z@ \t@rmskip
|
||
|
\m@loop \s@l@ctclefs \o@c\a@c \repeat}
|
||
|
|
||
|
% the same as \writ@newclefs, but no spacing
|
||
|
|
||
|
\def\zwrit@newclefs{\clef@skip\z@
|
||
|
\setbox\writ@volta@box \hbox{\n@loop{\writ@newclefi}\repeat}%
|
||
|
\kern -\clef@skip \box\writ@volta@box
|
||
|
\kern \clef@skip
|
||
|
\clef@skip\z@ % test
|
||
|
\n@skip\clef@skip
|
||
|
\widthtyp@\z@
|
||
|
\t@rmskip
|
||
|
\m@loop \s@l@ctclefs \o@c\a@c \repeat}
|
||
|
|
||
|
% Thanks to Helmut Kopka for helping me out
|
||
|
\def\writ@newclefi{\s@l@ctclefs\p@loop
|
||
|
\setbox\toks@box\hbox{\expandafter\expandafter\expandafter\writ@newclefp
|
||
|
\the\expandafter\a@c\the\o@c}%
|
||
|
\upd@width\clef@skip \writ@box \count@portee\repeat}
|
||
|
|
||
|
\def\writ@newclefp#1#2#3#4#5#6#7#8{%
|
||
|
\ifcase\noport@@\newsingl@clef#1#5\or \newsingl@clef#2#6\or
|
||
|
\newsingl@clef#3#7\or \newsingl@clef#4#8\fi}
|
||
|
|
||
|
\def\newsingl@clef#1#2{\n@iii#1\relax \n@ii#2\relax
|
||
|
\ifnum\n@ii=\n@iii
|
||
|
\else
|
||
|
\ifcase\n@iii
|
||
|
\C@Clef\@ne\smalltrebleclef@var\or
|
||
|
\C@Clef\z@\smallaltoclef@var\or
|
||
|
\C@Clef\@ne\smallaltoclef@var\or
|
||
|
\C@Clef\tw@\smallaltoclef@var\or
|
||
|
\C@Clef\thr@@\smallaltoclef@var\or
|
||
|
\C@Clef\tw@\smallbassclef@var \or
|
||
|
\C@Clef\thr@@\smallbassclef@var\or
|
||
|
\C@Clef\f@ur\smallbassclef@var\or % 7 = subbass
|
||
|
\or
|
||
|
\C@Clef\z@\smalltrebleclef@var % 9 = french violin-clef
|
||
|
\fi
|
||
|
\fi}
|
||
|
|
||
|
%%% instrumentnames
|
||
|
|
||
|
%\let\Writ@names\empty
|
||
|
|
||
|
\def\setname#1#2{\n@v#1\relax % select instrument
|
||
|
% \let\Writ@names\writ@names
|
||
|
\expandafter\def\csname instrument\romannumeral\n@v\endcsname{#2}}% [version 1.15] changed from \edef to \def (Hiroaki)
|
||
|
|
||
|
\def\writ@names{\n@loop
|
||
|
\setbox\toks@box\null\relax
|
||
|
\ifnum\st@ffs>0\relax
|
||
|
\setbox\toks@box\llap{\vbox{\hbox\@to\parindent{%
|
||
|
\hss\csname instrument\romannumeral\noinstrum@nt\endcsname\hss}}\ \ }%
|
||
|
\fi
|
||
|
\altportee\altitude \Comp@High \advance\y@v-\ht\toks@box
|
||
|
\advance\altportee\h@lf\y@v
|
||
|
\writ@box
|
||
|
\repeat}
|
||
|
|
||
|
%%%
|
||
|
|
||
|
% les notes proprement dites
|
||
|
|
||
|
\newdimen\noteskip
|
||
|
\newcount\transpose
|
||
|
\newcount\normaltranspose
|
||
|
\newdimen\locx@skip
|
||
|
\newdimen\elemskip
|
||
|
\newdimen\@l@mskip
|
||
|
|
||
|
\def\check@staff{%
|
||
|
\ifnum\noport@@>\st@ffs\relax
|
||
|
\ifx\Post@Elims\undefined\else
|
||
|
\immediate\write16{check@staff\space inst=\the\noinstrum@nt\space
|
||
|
staff=\the\noport@@\space st@ffs=\the\st@ffs\space Elim.}\relax
|
||
|
\fi
|
||
|
\ifnum\st@ffs>0\relax
|
||
|
\errmessage{Staff number (\the\noport@@) out of specified range (\the\st@ffs)!}\fi
|
||
|
\else\relax}
|
||
|
%\def\check@staff{\iftrue\relax}
|
||
|
|
||
|
\let\ifactiveinstrument\check@staff
|
||
|
|
||
|
\def\nextstaff{\@ndstaff\beginstaff}
|
||
|
\def\nextinstrument{\@ndstaff\begininstrument}
|
||
|
\def\prevstaff{\@ndstaff\advance\noport@@-2\relax\beginstaff}
|
||
|
\def\selectstaff#1{\@ndstaff\noport@@#1\relax
|
||
|
\advance\noport@@ -1\relax\beginstaff}
|
||
|
\def\selectinstrument#1{\@ndstaff\noinstrum@nt#1\relax
|
||
|
\advance\noinstrum@nt -1\relax\begininstrument}
|
||
|
|
||
|
\def\begininstrument{\advance\noinstrum@nt\@ne \s@l@ctinstr
|
||
|
\ifdim\internote<\p@seven6\Internote \set@tinynotesize \comput@sizes
|
||
|
\else
|
||
|
\ifdim\internote<.95\Internote \set@smallnotesize \comput@sizes
|
||
|
\else
|
||
|
\ifdim\internote<1.19\Internote \set@normalnotesize \comput@sizes
|
||
|
\else
|
||
|
\ifdim\internote<1.43\Internote \set@largenotesize \comput@sizes
|
||
|
\else
|
||
|
\set@Largenotesize \comput@sizes
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi
|
||
|
\noport@@\z@ \beginstaff}
|
||
|
|
||
|
\def\beginstaff{\leavevmode
|
||
|
\altportee\altitude \advance\altportee\noport@@\interportee
|
||
|
\count@portee \s@l@ctclefs \expandafter\get@refs\the\a@c
|
||
|
\setbox\n@otebox\hbox\bgroup
|
||
|
\let\rq\rq@ \let\lq\lq@ \let\mp\mp@ % \let\ds\ds@oup RDT 1.27
|
||
|
\locx@skip\x@skip}
|
||
|
|
||
|
\def\@ndstaff{\egroup % this where \transpose gets reset
|
||
|
\ifdim\n@skip<\wd\n@otebox \n@skip\wd\n@otebox \fi
|
||
|
\raise\altportee\rlap{\unhbox\n@otebox}}
|
||
|
|
||
|
%%% shifting
|
||
|
|
||
|
\def\offs@t#1{\off{-\s@o@}#1\off\s@o@}
|
||
|
\def\loffset#1{\edef\s@o@{#1\qn@width}\offs@t}
|
||
|
\def\roffset#1{\edef\s@o@{-#1\qn@width}\offs@t}
|
||
|
\def\roff{\roffset\@ne}
|
||
|
\def\loff{\loffset\@ne}
|
||
|
\def\hroff{\roffset\h@lf}
|
||
|
\def\hloff{\loffset\h@lf}
|
||
|
|
||
|
%%% decode collective coding
|
||
|
|
||
|
% les symboles de notes ou assimiles
|
||
|
|
||
|
\newcount\inh@alt
|
||
|
\def\getn@i{\inh@alt\z@ \xgetn@i}
|
||
|
\def\inhgetn@i{\inh@alt\@ne \xgetn@i}
|
||
|
|
||
|
\def\f@tok#1#2\af@tok{#1}
|
||
|
\def\s@tok#1#2\af@tok{#2}
|
||
|
|
||
|
% \n@viii used as flag: \n@viii=\maxdimen -> argument is no number
|
||
|
|
||
|
\def\C@Get{\n@viii\maxdimen \edef\alt@suite{\noexpand\getn@i\s@uite\relax}}
|
||
|
\def\C@GET{\n@viii\maxdimen \edef\alt@suite{%
|
||
|
\ifnum\inh@alt=\z@ \noexpand\@TI{\s@uite}\fi \noexpand\getn@i\s@uite\relax}}
|
||
|
|
||
|
\def\xgetn@i#1\relax{\n@viii\z@ \n@i\maxdimen % par defaut
|
||
|
%% \edef\t@ruc{\f@tok #1\relax\af@tok}%
|
||
|
\edef\t@ruc{\expandafter\f@tok #1\relax\af@tok}%
|
||
|
\edef\s@uite{\s@tok #1\empty\af@tok}%
|
||
|
%% pas lettre
|
||
|
\ifcat a\t@ruc \n@i\expandafter`\t@ruc\relax
|
||
|
%% ramener au E (position zero en clef de sol, ut@ref=0)
|
||
|
\ifnum\n@i>96\advance\n@i-101%
|
||
|
\else\advance\n@i-\@lxxxiii % ramener au S= E + 14
|
||
|
\fi
|
||
|
\advance\n@i\ut@ref \advance\n@i\ut@ref \advance\n@i\transpose
|
||
|
\edef\ss@uite{\noexpand\n@fon{\s@uite}}%
|
||
|
%% cas active character dont chiffre
|
||
|
\else
|
||
|
\let\ss@uite\empty
|
||
|
\let\alt@suite\empty
|
||
|
\ifcat 1\t@ruc
|
||
|
\if =\t@ruc \let\@TI\na \C@GET \fi
|
||
|
\if *\t@ruc \sk \C@Get \fi
|
||
|
\if .\t@ruc \let\@TI\pt \C@GET \fi
|
||
|
\if >\t@ruc \let\@TI\dsh \C@GET \fi
|
||
|
\if <\t@ruc \let\@TI\dfl \C@GET \fi
|
||
|
\if !\t@ruc \transpose\normaltranspose \C@Get \fi
|
||
|
\if '\t@ruc \advance\transpose\s@v@n \C@Get \fi
|
||
|
\if `\t@ruc \advance\transpose-\s@v@n \C@Get \fi
|
||
|
\ifnum\n@viii<\maxdimen \n@i#1\fi
|
||
|
\else
|
||
|
\if ^\t@ruc \let\@TI\sh \C@GET \fi
|
||
|
\if _\t@ruc \let\@TI\fl \C@GET \fi
|
||
|
\fi\alt@suite
|
||
|
\fi}
|
||
|
|
||
|
%%% setting stems and flags
|
||
|
|
||
|
\newdimen\st@bot % note stem bottom
|
||
|
\newdimen\st@top % note stem top
|
||
|
\newdimen\stem@skip
|
||
|
|
||
|
\def\stdstemfalse{\let\stdst@m\@ne}
|
||
|
|
||
|
\def\setst@m{%
|
||
|
\advance\y@i\altportee
|
||
|
\ifdim\st@bot>\y@i \global\st@bot\y@i \fi
|
||
|
\ifdim\st@top<\y@i \global\st@top\y@i \fi
|
||
|
\advance\y@i-\altportee}
|
||
|
|
||
|
\def\resetst@m{%
|
||
|
\global\st@bot\maxdimen \global\st@top-\maxdimen \let\stdst@m\empty}
|
||
|
\resetst@m
|
||
|
|
||
|
\def\minst@bot{\ifdim\st@bot>\f@ur\internote
|
||
|
\ifx\stdst@m\empty \st@bot\f@ur\internote \fi \fi}
|
||
|
|
||
|
\def\maxst@top{\ifdim\st@top<\f@ur\internote
|
||
|
\ifx\stdst@m\empty \st@top\f@ur\internote \fi \fi}
|
||
|
|
||
|
\def\stem@rule{%
|
||
|
\vrule\@height\st@top\@depth-\st@bot\@width\lthick\kernm\lthick}
|
||
|
|
||
|
\def\comp@stem{\advance\st@bot-\altportee \advance\st@top-\altportee}
|
||
|
|
||
|
\def\C@stem{\ifdim\st@top>\st@bot
|
||
|
\comp@stem\kern\stem@skip\stem@rule
|
||
|
\kernm\stem@skip
|
||
|
\fi\resetst@m}
|
||
|
|
||
|
\def\stemlength#1{\def\stemfactor{#1}}
|
||
|
\def\DefaultStemlength{4.66}
|
||
|
\stemlength{\DefaultStemlength}
|
||
|
|
||
|
% cut stems in extrem positions for multiple voices in one staff
|
||
|
|
||
|
\def\stemcut{\let\st@mcut\empty}
|
||
|
\def\nostemcut{\let\st@mcut\@ne}
|
||
|
\stemcut
|
||
|
|
||
|
\def\Box@Flag{\setbox\ch@box\hbox{\musixfont\char\n@vii}\y@v\ht\ch@box }
|
||
|
|
||
|
\def\down@flag{\Box@Flag\advance\st@bot-\y@v
|
||
|
\advance\st@bot-\stemfactor\interbeam
|
||
|
\advance\st@bot\DefaultStemlength\interbeam
|
||
|
\ifdim\st@top>\st@bot \comp@stem\minst@bot
|
||
|
\stem@rule\raise\st@bot\box\ch@box \fi\resetst@m}
|
||
|
|
||
|
\def\up@flag{\Box@Flag\advance\st@top\y@v
|
||
|
\advance\st@top\stemfactor\interbeam
|
||
|
\advance\st@top-\DefaultStemlength\interbeam
|
||
|
\ifdim\st@top>\st@bot \comp@stem\maxst@top
|
||
|
\kern\qd@skip\stem@rule\advance\st@top-\y@v \raise\st@top\box\ch@box%
|
||
|
\kernm\qd@skip \fi\resetst@m}
|
||
|
|
||
|
\def\cutst@l#1{%
|
||
|
\ifdim\st@bot<-#1\internote \advance\st@bot\qu@rt\interbeam \fi}
|
||
|
|
||
|
\def\downst@m{\stem@skip\z@
|
||
|
\advance\st@bot-\stemfactor\interbeam
|
||
|
\advance\st@bot-\altportee
|
||
|
\ifx\st@mcut\empty
|
||
|
\ifdim\st@bot<-\thr@@\internote
|
||
|
\cutst@l\thr@@\cutst@l\f@ur\cutst@l\fiv@
|
||
|
\cutst@l\si@\cutst@l\s@v@n\cutst@l\@ight \fi \fi
|
||
|
\minst@bot\advance\st@bot\altportee
|
||
|
\C@stem}
|
||
|
|
||
|
\def\cutst@u#1{%
|
||
|
\ifdim\st@top>#1\internote \advance\st@top-\qu@rt\interbeam \fi}
|
||
|
|
||
|
\def\upst@m{\stem@skip\qd@skip
|
||
|
\advance\st@top\stemfactor\interbeam
|
||
|
\advance\st@top-\altportee
|
||
|
\ifx\st@mcut\empty
|
||
|
\ifdim\st@top>\@l@v@n\internote
|
||
|
\cutst@u\@l@v@n\cutst@u\tw@lv@\cutst@u\active
|
||
|
\cutst@u\fourt@@n\cutst@u\fiv@t@@n\cutst@u\sixt@@n \fi \fi
|
||
|
\maxst@top\advance\st@top\altportee
|
||
|
\C@stem}
|
||
|
|
||
|
\newdimen\s@lope
|
||
|
|
||
|
\def\comp@slope#1{\s@lope\b@p#1\divide\s@lope\tw@nty}
|
||
|
|
||
|
\def\beamst@m{% queue de note vers une poutre
|
||
|
\getcurpos \advance\y@v-\b@x
|
||
|
\y@ii\b@p\y@v \divide\y@ii\tw@nty \advance\y@ii\b@z
|
||
|
\ifdim\y@ii>\st@top % la poutre est au-dessus
|
||
|
\stem@skip\qd@skip \comp@slope\stem@skip \advance\y@ii\s@lope
|
||
|
\advance\y@ii .285\interbeam% version 1.18 RDT
|
||
|
\ifnum\b@n>\z@ \advance\y@ii\b@n\interbeam \advance\y@ii-\interbeam \fi
|
||
|
\st@top\y@ii % a mettre a jour avec la pente ulterieurement
|
||
|
\else
|
||
|
\advance\y@ii-.285\interbeam% version 1.18 RDT
|
||
|
\stem@skip\z@
|
||
|
\ifdim\y@ii<\st@bot
|
||
|
\ifnum\b@n<\z@ \advance\y@ii\b@n\interbeam \advance\y@ii\interbeam \fi
|
||
|
\st@bot\y@ii \fi \fi
|
||
|
\C@stem}
|
||
|
|
||
|
%%% writing notes inclusive lines (subsidiary lines ?) (german: Hilfslinien)
|
||
|
|
||
|
\newif\ifadvance\advancetrue
|
||
|
|
||
|
% Modification by Werner Icking
|
||
|
% ledger lines exceed the note by: y@vi := 0.35 (noteskip - notewidth)
|
||
|
% and: 0.5 qn@width > y@vi > 0.2 qn@width
|
||
|
\newdimen\y@vi
|
||
|
\def\h@linei{%
|
||
|
\y@ii\n@v\internote
|
||
|
\y@iii\y@ii
|
||
|
\advance\y@ii\hlthick
|
||
|
\advance\y@iii-\hlthick
|
||
|
\y@vi\noteskip % noteskip
|
||
|
%-\ifnum\y@vi=\z@ \y@vi\maxdimen\fi % (or maxdimen if noteskip = 0)
|
||
|
\advance\y@vi-\y@v % - notewidth
|
||
|
\y@vi0.7\y@vi % this may be eaten =: additional length
|
||
|
\y@iv\h@lf\qn@width\ifnum\y@vi>\y@iv \y@vi\y@iv\fi % not more than 0.5 qn@width
|
||
|
\y@iv0.2\qn@width \ifnum\y@vi<\y@iv \y@vi\y@iv\fi % not less than 0.2 qn@width
|
||
|
\y@iv\y@v % notewidth
|
||
|
\advance\y@iv\y@vi % + additional length =: total length
|
||
|
\kernm\h@lf\y@vi % center the ledger line
|
||
|
%-\message{noteskip = \the\noteskip, length = \the\y@iv, notewidth = \the\y@v}%
|
||
|
\vrule\@height\y@ii\@depth-\y@iii\@width\y@iv
|
||
|
\kernm\y@iv\kern\h@lf\y@vi}
|
||
|
|
||
|
% end Werner Icking's modification of ledger lines.
|
||
|
% old behaviour can be restored with musixfll.tex (or musixfll.sty)
|
||
|
|
||
|
\def\writ@note{%
|
||
|
\ifnum\n@i<\@c
|
||
|
% help lines \n@i (position)
|
||
|
\ifnum\nblines>\thr@@ % no help lines for percussion instruments
|
||
|
\n@v\z@
|
||
|
\ifnum\n@i<\m@ne % waste memory, but saves time
|
||
|
\loop \advance\n@v\m@ne \ifnum\n@i<\n@v
|
||
|
\advance\n@v\m@ne \h@linei
|
||
|
\repeat
|
||
|
\else
|
||
|
\n@v\nblines \advance\n@v\m@ne \multiply\n@v\tw@
|
||
|
\ifnum\n@i>\n@v
|
||
|
\loop \advance\n@v\@ne \ifnum\n@i>\n@v
|
||
|
\advance\n@v\@ne \h@linei
|
||
|
\repeat
|
||
|
\fi
|
||
|
\fi
|
||
|
\fi
|
||
|
%
|
||
|
\pl@base\setst@m\st@m
|
||
|
\ifadvance \raise\y@i\adv@box\n@sym \else \raise\y@i\hbox{\n@sym}\fi
|
||
|
\ss@uite \advancetrue
|
||
|
\fi}
|
||
|
|
||
|
\def\adv@box#1{\hbox\@to\noteskip{#1\hss}\advance\locx@skip\noteskip}
|
||
|
|
||
|
%%% breve, longa, maxima, arbitrary notes, non spacing
|
||
|
|
||
|
\def\zmaxima{\def\w@h{\musixchar36}\y@v\tw@\wn@width \advancefalse \g@w}
|
||
|
\def\zlonga{\def\w@h{\musixchar39}\y@v\wn@width \advancefalse \g@w}
|
||
|
\def\zbreve{\def\w@h{\musixfont\@xxxii}\y@v\wn@width \advancefalse \g@w}
|
||
|
\def\zwq{\def\w@h{\musixchar56}\y@v\wn@width \advancefalse \g@w}
|
||
|
\def\zwqq{\def\w@h{\musixchar127}\y@v\wn@width \advancefalse \g@w}
|
||
|
|
||
|
\def\g@w#1{\let\st@m\resetst@m
|
||
|
\check@staff
|
||
|
\getn@i#1\relax\let\n@fon\g@w \let\n@sym\w@h \writ@note
|
||
|
\fi}
|
||
|
|
||
|
\def\maxima{\def\w@h{\musixchar36}\y@v\tw@\wn@width \g@w}
|
||
|
\def\longa{\def\w@h{\musixchar39}\y@v\wn@width \g@w}
|
||
|
\def\breve{\def\w@h{\musixfont\@xxxii}\y@v\wn@width \g@w}
|
||
|
\def\wq{\def\w@h{\musixchar56}\y@v\wn@width \g@w}
|
||
|
\def\wqq{\def\w@h{\musixchar127}\y@v\wn@width \g@w}
|
||
|
|
||
|
%%% alternate longa (with up stem) by Ingo Struck
|
||
|
%%% struck@student.uni-siegen.de
|
||
|
|
||
|
\def\lngdnst@m{\stem@skip1.25\qd@skip
|
||
|
\advance\st@bot-\stemfactor\interbeam
|
||
|
\advance\st@bot-\altportee
|
||
|
\ifx\st@mcut\empty
|
||
|
\ifdim\st@bot<-\thr@@\internote
|
||
|
\cutst@l\thr@@\cutst@l\f@ur\cutst@l\fiv@
|
||
|
\cutst@l\si@\cutst@l\s@v@n\cutst@l\@ight \fi \fi
|
||
|
\minst@bot\advance\st@bot\altportee
|
||
|
\C@stem}
|
||
|
|
||
|
\def\lngupst@m{\stem@skip1.25\qd@skip
|
||
|
\advance\st@top\stemfactor\interbeam
|
||
|
\advance\st@top-\altportee
|
||
|
\ifx\st@mcut\empty
|
||
|
\ifdim\st@top>\@l@v@n\internote
|
||
|
\cutst@u\@l@v@n\cutst@u\tw@lv@\cutst@u\active
|
||
|
\cutst@u\fourt@@n\cutst@u\fiv@t@@n\cutst@u\sixt@@n \fi \fi
|
||
|
\maxst@top\advance\st@top\altportee
|
||
|
\C@stem}
|
||
|
|
||
|
\def\@longa#1{\getn@i#1\relax
|
||
|
\ifnum\n@i>\thr@@
|
||
|
\let\st@m\lngdnst@m
|
||
|
\else
|
||
|
\let\st@m\lngupst@m
|
||
|
\fi
|
||
|
\let\n@fon\@longa \let\n@sym\q@u \y@v\qn@width \writ@note}
|
||
|
|
||
|
\def\l@ngasymbol{\def\q@u{\musixfont\@xxxii}}
|
||
|
|
||
|
\def\longaa{\l@ngasymbol\@longa}
|
||
|
|
||
|
%%% whole notes
|
||
|
|
||
|
\def\C@Point#1#2{\ifodd\n@i \else#2\internote \fi\hbox{\musixchar#1}}
|
||
|
|
||
|
\def\wh{\def\w@h{\musixfont\nin@}\y@v\wn@width \g@w}
|
||
|
\def\whp{\def\w@h{\musixfont\nin@\roffset\qu@rt{\C@Point\z@\raise}}%
|
||
|
\y@v\wn@width \g@w}
|
||
|
\def\whpp{\def\w@h{\musixfont\nin@\roffset\qu@rt{\C@Point\@ne\raise}}%
|
||
|
\y@v\wn@width \g@w}
|
||
|
|
||
|
%%% whole noteheads, no advance
|
||
|
|
||
|
\def\zw{\advancefalse\wh}
|
||
|
\def\zwp{\advancefalse\whp}
|
||
|
\def\zwpp{\advancefalse\whpp}
|
||
|
\let\zwh\zw
|
||
|
|
||
|
\def\lw#1{\kernm\wn@width\zw{#1}\kern\wn@width}
|
||
|
\def\rw#1{\kern\wn@width\zw{#1}\kernm\wn@width}
|
||
|
\def\lwp#1{\kernm\wn@width\zwp{#1}\kern\wn@width}
|
||
|
\def\rwp#1{\kern\wn@width\zwp{#1}\kernm\wn@width}
|
||
|
\def\lwpp#1{\kernm\wn@width\zwpp{#1}\kern\wn@width}
|
||
|
\def\rwpp#1{\kern\wn@width\zwpp{#1}\kernm\wn@width}
|
||
|
|
||
|
%%% common routines for noteheads with the same width as a quarter note
|
||
|
|
||
|
\def\@qa#1{\getn@i#1\relax
|
||
|
\ifnum\n@i>\thr@@
|
||
|
\let\st@m\downst@m
|
||
|
\else
|
||
|
\let\st@m\upst@m
|
||
|
\fi
|
||
|
\check@staff % version 1.16
|
||
|
\let\n@fon\@qa \let\n@sym\q@u \y@v\qn@width \writ@note
|
||
|
\fi}
|
||
|
|
||
|
\def\@qu{\let\st@m\upst@m \g@q}
|
||
|
\def\@ql{\let\st@m\downst@m \g@q}
|
||
|
\def\@zq{\let\st@m\setst@m \advancefalse\g@q}
|
||
|
\def\@nq{\let\st@m\resetst@m \g@q}
|
||
|
|
||
|
\def\g@q#1{\check@staff
|
||
|
\getn@i#1\relax\let\n@fon\g@q \let\n@sym\q@u
|
||
|
\y@v\qn@width \writ@note\fi}
|
||
|
|
||
|
\def\@qup{\let\st@m\upst@m \g@qp}
|
||
|
\def\@qlp{\let\st@m\downst@m \g@qp}
|
||
|
\def\@zqp{\let\st@m\setst@m \advancefalse\g@qp}
|
||
|
\def\@nqp{\let\st@m\resetst@m \g@qp}
|
||
|
|
||
|
\def\q@up{\q@u\C@Point\z@\raise}
|
||
|
\def\g@qp#1{\check@staff
|
||
|
\getn@i#1\relax\let\n@fon\g@qp \let\n@sym\q@up
|
||
|
\y@v\qn@width \writ@note\fi}
|
||
|
|
||
|
\def\@qupp{\let\st@m\upst@m \g@qpp}
|
||
|
\def\@qlpp{\let\st@m\downst@m \g@qpp}
|
||
|
\def\@zqpp{\let\st@m\setst@m \advancefalse\g@qpp}
|
||
|
\def\@nqpp{\let\st@m\resetst@m \g@qpp}
|
||
|
|
||
|
\def\q@upp{\q@u\C@Point\@ne\raise}
|
||
|
\def\g@qpp#1{\check@staff
|
||
|
\getn@i#1\relax\let\n@fon\g@qpp \let\n@sym\q@upp
|
||
|
\y@v\qn@width \writ@note\fi}
|
||
|
|
||
|
\def\@lqu#1{\kernm\qn@width\advancefalse\@qu{#1}\kern\qn@width}
|
||
|
\def\@rqu#1{\kern\qn@width\advancefalse\@qu{#1}\kernm\qn@width}
|
||
|
|
||
|
\def\@lql#1{\kernm\qn@width\advancefalse\@ql{#1}\kern\qn@width}
|
||
|
\def\@rql#1{\kern\qn@width\advancefalse\@ql{#1}\kernm\qn@width}
|
||
|
|
||
|
\def\@lq#1{\kernm\qn@width\@zq{#1}\kern\qn@width}
|
||
|
\def\@rq#1{\kern\qn@width\@zq{#1}\kernm\qn@width}
|
||
|
|
||
|
\def\@qb#1{\s@l@ctbeam#1\relax \let\st@m\beamst@m \g@q}
|
||
|
\def\@tqb#1{\s@l@ctbeam#1\relax \C@tb\t@bbl\lthick \let\st@m\beamst@m \g@q}
|
||
|
\def\@tqh#1{\s@l@ctbeam#1\relax \C@tb\t@bbu\qn@width \let\st@m\beamst@m \g@q}
|
||
|
\def\@qbp#1{\s@l@ctbeam#1\relax \let\st@m\beamst@m \g@qp}
|
||
|
\def\@qbpp#1{\s@l@ctbeam#1\relax \let\st@m\beamst@m \g@qpp}
|
||
|
|
||
|
\def\@ca{\n@iv\@xlv \@mca}
|
||
|
\def\@cca{\n@iv46 \@mca}
|
||
|
\def\@ccca{\n@iv47 \@mca}
|
||
|
\def\@cccca{\n@iv48 \@mca}
|
||
|
\def\@ccccca{\n@iv49 \@mca}
|
||
|
|
||
|
\def\@mca#1{\getn@i#1\relax \n@vii\n@iv
|
||
|
\ifnum\n@i>\thr@@
|
||
|
\let\st@m\down@flag
|
||
|
\else
|
||
|
\let\st@m\up@flag \advance\n@vii -\fiv@\relax
|
||
|
\fi
|
||
|
\check@staff % version 1.16
|
||
|
\let\n@fon\@mca \let\n@sym\q@u \y@v\qn@width \writ@note
|
||
|
\fi}
|
||
|
|
||
|
\def\@cu{\n@vii\@xl \let\st@m\up@flag \g@q}
|
||
|
\def\@ccu{\n@vii\@xli \let\st@m\up@flag \g@q}
|
||
|
\def\@cccu{\n@vii42\let\st@m\up@flag \g@q}
|
||
|
\def\@ccccu{\n@vii43\let\st@m\up@flag \g@q}
|
||
|
\def\@cccccu{\n@vii44\let\st@m\up@flag \g@q}
|
||
|
|
||
|
\def\@cl{\n@vii\@xlv \let\st@m\down@flag \g@q}
|
||
|
\def\@ccl{\n@vii46\let\st@m\down@flag \g@q}
|
||
|
\def\@cccl{\n@vii47\let\st@m\down@flag \g@q}
|
||
|
\def\@ccccl{\n@vii48\let\st@m\down@flag \g@q}
|
||
|
\def\@cccccl{\n@vii49\let\st@m\down@flag \g@q}
|
||
|
|
||
|
\def\@cup{\n@vii\@xl \let\st@m\up@flag \g@qp}
|
||
|
\def\@ccup{\n@vii\@xli \let\st@m\up@flag \g@qp}
|
||
|
\def\@clp{\n@vii\@xlv \let\st@m\down@flag \g@qp}
|
||
|
\def\@cclp{\n@vii46\let\st@m\down@flag \g@qp}
|
||
|
|
||
|
|
||
|
\def\@cupp{\n@vii\@xl \let\st@m\up@flag \g@qpp}
|
||
|
\def\@clpp{\n@vii\@xlv \let\st@m\down@flag \g@qpp}
|
||
|
|
||
|
%%% half notes
|
||
|
|
||
|
\def\h@symbol{\def\q@u{\musixfont\@ight}}
|
||
|
|
||
|
\def\ha{\h@symbol\@qa}
|
||
|
\def\hap#1{\pt{#1}\ha{#1}} % 1.27 RDT
|
||
|
\def\happ#1{\ppt{#1}\ha{#1}} % 1.27 RDT
|
||
|
\def\hu{\h@symbol\@qu}
|
||
|
\def\hup{\h@symbol\@qup}
|
||
|
\def\hupp{\h@symbol\@qupp}
|
||
|
|
||
|
\def\hl{\h@symbol\@ql}
|
||
|
\def\hlp{\h@symbol\@qlp}
|
||
|
\def\hlpp{\h@symbol\@qlpp}
|
||
|
|
||
|
\def\hb{\h@symbol\@qb}
|
||
|
\def\hbp{\h@symbol\@qbp}
|
||
|
\def\hbpp{\h@symbol\@qbpp}
|
||
|
|
||
|
\def\zh{\h@symbol\@zq}
|
||
|
\def\zhp{\h@symbol\@zqp}
|
||
|
\def\zhpp{\h@symbol\@zqpp}
|
||
|
|
||
|
\def\lh{\h@symbol\@lq}
|
||
|
\def\rh{\h@symbol\@rq}
|
||
|
|
||
|
\def\zhu{\advancefalse\hu}
|
||
|
\def\zhup{\advancefalse\hup}
|
||
|
\def\zhupp{\advancefalse\hupp}
|
||
|
|
||
|
\def\lhu{\h@symbol\@lqu}
|
||
|
\def\rhu{\h@symbol\@rqu}
|
||
|
|
||
|
\def\zhl{\advancefalse\hl}
|
||
|
\def\zhlp{\advancefalse\hlp}
|
||
|
\def\zhlpp{\advancefalse\hlpp}
|
||
|
|
||
|
\def\lhl{\h@symbol\@lql}
|
||
|
\def\rhl{\h@symbol\@rql}
|
||
|
|
||
|
\def\lhp#1{\loff{\zhp{#1}}}
|
||
|
\def\rhp#1{\roff{\zhp{#1}}}
|
||
|
\def\lhpp#1{\loff{\zhpp{#1}}}
|
||
|
\def\rhpp#1{\roff{\zhpp{#1}}}
|
||
|
|
||
|
%%% quarter notes, stem up
|
||
|
|
||
|
\def\q@symbol{\def\q@u{\musixfont\s@v@n}}
|
||
|
|
||
|
\def\qa{\q@symbol\@qa}
|
||
|
|
||
|
\def\qap#1{\pt{#1}\qa{#1}} % 1.25 RDT
|
||
|
\def\qapp#1{\ppt{#1}\qa{#1}} % 1.25 RDT
|
||
|
|
||
|
\def\qu{\q@symbol\@qu}
|
||
|
\def\qup{\q@symbol\@qup}
|
||
|
\def\qupp{\q@symbol\@qupp}
|
||
|
|
||
|
%%% quarter notes, stem down
|
||
|
|
||
|
\def\ql{\q@symbol\@ql}
|
||
|
\def\qlp{\q@symbol\@qlp}
|
||
|
\def\qlpp{\q@symbol\@qlpp}
|
||
|
|
||
|
%%% quarter notes, stem up, no advance
|
||
|
|
||
|
\def\zqu{\advancefalse\qu}
|
||
|
\def\zqup{\advancefalse\qup}
|
||
|
\def\zqupp{\advancefalse\qupp}
|
||
|
|
||
|
\def\lqu{\q@symbol\@lqu}
|
||
|
\def\rqu{\q@symbol\@rqu}
|
||
|
|
||
|
%%% quarter notes, stem down, no advance
|
||
|
|
||
|
\def\zql{\advancefalse\ql}
|
||
|
\def\zqlp{\advancefalse\qlp}
|
||
|
\def\zqlpp{\advancefalse\qlpp}
|
||
|
|
||
|
\def\lql{\q@symbol\@lql}
|
||
|
\def\rql{\q@symbol\@rql}
|
||
|
|
||
|
%%% quarter noteheads, no advance
|
||
|
|
||
|
\def\zq{\q@symbol\@zq}
|
||
|
\def\zqp{\q@symbol\@zqp}
|
||
|
\def\zqpp{\q@symbol\@zqpp}
|
||
|
|
||
|
\def\lqp#1{\loff{\zqp{#1}}}%
|
||
|
\def\lqpp#1{\loff{\zqpp{#1}}}%
|
||
|
\def\rqp#1{\roff{\zqp{#1}}}%
|
||
|
\def\rqpp#1{\roff{\zqpp{#1}}}%
|
||
|
|
||
|
\def\lq@{\q@symbol\@lq}
|
||
|
\def\rq@{\q@symbol\@rq}
|
||
|
|
||
|
%
|
||
|
% note heads without stems
|
||
|
\def\nh{\h@symbol\@nq}
|
||
|
\def\nq{\q@symbol\@nq}
|
||
|
\def\znh{\advancefalse\nh}
|
||
|
\def\znq{\advancefalse\nq}
|
||
|
|
||
|
%%% 8th, 16th, 32th, 64th, (128th) notes
|
||
|
|
||
|
\def\ca{\q@symbol\@ca}
|
||
|
\def\cca{\q@symbol\@cca}
|
||
|
\def\ccca{\q@symbol\@ccca}
|
||
|
\def\cccca{\q@symbol\@cccca}
|
||
|
\def\ccccca{\q@symbol\@ccccca}
|
||
|
|
||
|
\def\cu{\q@symbol\@cu}
|
||
|
\def\ccu{\q@symbol\@ccu}
|
||
|
\def\cccu{\q@symbol\@cccu}
|
||
|
\def\ccccu{\q@symbol\@ccccu}
|
||
|
\def\cccccu{\q@symbol\@cccccu}
|
||
|
|
||
|
\def\cup{\q@symbol\@cup}
|
||
|
\def\ccup{\q@symbol\@ccup}
|
||
|
\def\cupp{\q@symbol\@cupp}
|
||
|
|
||
|
\def\zcu{\advancefalse\cu}
|
||
|
\def\zccu{\advancefalse\ccu}
|
||
|
\def\zcccu{\advancefalse\cccu}
|
||
|
\def\zccccu{\advancefalse\ccccu}
|
||
|
\def\zcccccu{\advancefalse\cccccu}
|
||
|
|
||
|
\def\lcu#1{\kernm\qn@width\zcu{#1}\kern\qn@width}
|
||
|
\def\rcu#1{\kern\qn@width\zcu{#1}\kernm\qn@width}
|
||
|
|
||
|
\def\zcup{\advancefalse\cup}
|
||
|
\def\zccup{\advancefalse\ccup}
|
||
|
\def\zcupp{\advancefalse\cupp}
|
||
|
|
||
|
\def\cl{\q@symbol\@cl}
|
||
|
\def\ccl{\q@symbol\@ccl}
|
||
|
\def\cccl{\q@symbol\@cccl}
|
||
|
\def\ccccl{\q@symbol\@ccccl}
|
||
|
\def\cccccl{\q@symbol\@cccccl}
|
||
|
|
||
|
\def\clp{\q@symbol\@clp}
|
||
|
\def\cclp{\q@symbol\@cclp}
|
||
|
\def\clpp{\q@symbol\@clpp}
|
||
|
|
||
|
\def\zcl{\advancefalse\cl}
|
||
|
\def\zccl{\advancefalse\ccl}
|
||
|
\def\zcccl{\advancefalse\cccl}
|
||
|
\def\zccccl{\advancefalse\ccccl}
|
||
|
\def\zcccccl{\advancefalse\cccccl}
|
||
|
|
||
|
\def\zclp{\advancefalse\clp}
|
||
|
\def\zcclp{\advancefalse\cclp}
|
||
|
\def\zclpp{\advancefalse\clpp}
|
||
|
|
||
|
\def\lcl#1{\kernm\qn@width\zcl{#1}\kern\qn@width}
|
||
|
\def\rcl#1{\kern\qn@width\zcl{#1}\kernm\qn@width}
|
||
|
|
||
|
%%% beam notes
|
||
|
|
||
|
\def\qb{\q@symbol\@qb}
|
||
|
\def\qbp{\q@symbol\@qbp}
|
||
|
\def\qbpp{\q@symbol\@qbpp}
|
||
|
|
||
|
\def\zqb{\advancefalse\qb}
|
||
|
\def\zqbp{\advancefalse\qbp}
|
||
|
\def\zqbpp{\advancefalse\qbpp}
|
||
|
|
||
|
\def\tqh{\q@symbol\@tqh}
|
||
|
\def\tqu{\q@symbol\@tqh} % version 1.16 RDT
|
||
|
\def\tqb{\q@symbol\@tqb}
|
||
|
\def\tql{\q@symbol\@tqb} % version 1.16 RDT
|
||
|
|
||
|
\def\tqqh#1#2{\tbbu{#1}\tqh{#1}{#2}} % version 1.17 RDT
|
||
|
\def\tqqu{\tqqh} % version 1.17 RDT
|
||
|
\def\tqqb#1#2{\tbbl{#1}\tqb{#1}{#2}} % version 1.17 RDT
|
||
|
\def\tqql{\tqqb} % version 1.17 RDT
|
||
|
\def\tqqqh#1#2{\tbbbu{#1}\tqqh{#1}{#2}} % version 1.17 RDT
|
||
|
\def\tqqqu{\tqqqh} % version 1.17 RDT
|
||
|
\def\tqqqb#1#2{\tbbbl{#1}\tqqb{#1}{#2}} % version 1.17 RDT
|
||
|
\def\tqqql{\tqqqb} % version 1.17 RDT
|
||
|
|
||
|
\def\nqqh#1#2{\tbbu{#1}\qb{#1}{#2}} % version 1.27 RDT
|
||
|
\def\nqqb#1#2{\tbbl{#1}\qb{#1}{#2}} % version 1.27 RDT
|
||
|
\def\nqqqh#1#2{\tbbbu{#1}\qb{#1}{#2}} % version 1.27 RDT
|
||
|
\def\nqqqb#1#2{\tbbbl{#1}\qb{#1}{#2}} % version 1.27 RDT
|
||
|
\def\nqqu{\nqqh} % version 1.27 RDT
|
||
|
\def\nqql{\nqqb} % version 1.27 RDT
|
||
|
\def\nqqqu{\nqqqh} % version 1.27 RDT
|
||
|
\def\nqqql{\nqqqb} % version 1.27 RDT
|
||
|
|
||
|
\def\ztqh{\advancefalse\q@symbol\@tqh}
|
||
|
\def\ztqu{\advancefalse\q@symbol\@tqh} % version 1.16 RDT
|
||
|
\def\ztqb{\advancefalse\q@symbol\@tqb}
|
||
|
\def\ztql{\advancefalse\q@symbol\@tqb} % version 1.16 RDT
|
||
|
|
||
|
%%% grace notes
|
||
|
|
||
|
\def\grcu{\q@symbol\@grcu}
|
||
|
\def\grcl{\q@symbol\@grcl}
|
||
|
|
||
|
\def\@grcu{\n@vii\tw@lv@ \let\st@m\up@flag \g@q}
|
||
|
\def\@grcl{\n@vii\active \let\st@m\down@flag \g@q}
|
||
|
|
||
|
%%% starting beams
|
||
|
|
||
|
% \ibu{0<=numero<10}{altitude~note}{pente de -9 a +9}
|
||
|
% \ibl{0<=numero<10}{altitude~note}{pente de -9 a +9}
|
||
|
|
||
|
% \b@p slope (-9) - (9)
|
||
|
% \b@n number of pending beamlines (-4) - (4)
|
||
|
|
||
|
\def\test@beamnum{% [version 1.15] new macro to make it independent from slur
|
||
|
\ifnum\n@i<\z@ \n@i\@c \fi
|
||
|
\ifnum\n@i<\maxinstruments \else
|
||
|
\count@\maxinstruments \advance\count@\m@ne
|
||
|
\errmessage{Wrong beam reference number \the\n@i! (valid: 0 to \the\count@)}
|
||
|
\n@i\z@
|
||
|
\fi
|
||
|
\advance\n@i\@ne}%
|
||
|
|
||
|
\def\s@l@ctbeam#1\relax{%
|
||
|
\n@i#1\relax\test@beamnum % [version 1.15] make it independent from slur
|
||
|
\edef\b@x{\csname b@x\romannumeral\n@i\endcsname}%
|
||
|
\edef\b@z{\csname b@z\romannumeral\n@i\endcsname}%
|
||
|
\edef\b@n{\csname b@n\romannumeral\n@i\endcsname}%
|
||
|
\edef\b@p{\csname b@p\romannumeral\n@i\endcsname}}
|
||
|
|
||
|
\def\s@l@ctc{\edef\c@x{\csname c@x\romannumeral\n@i\endcsname}%
|
||
|
\edef\c@z{\csname c@z\romannumeral\n@i\endcsname}}
|
||
|
|
||
|
\def\s@l@ctd{\edef\d@x{\csname d@x\romannumeral\n@i\endcsname}%
|
||
|
\edef\d@z{\csname d@z\romannumeral\n@i\endcsname}\s@l@ctc}
|
||
|
|
||
|
\def\s@l@cte{\edef\e@x{\csname e@x\romannumeral\n@i\endcsname}%
|
||
|
\edef\e@z{\csname e@z\romannumeral\n@i\endcsname}\s@l@ctd}
|
||
|
|
||
|
\def\s@l@ctf{\edef\f@x{\csname f@x\romannumeral\n@i\endcsname}%
|
||
|
\edef\f@z{\csname f@z\romannumeral\n@i\endcsname}\s@l@cte}
|
||
|
|
||
|
\def\s@l@ctg{\edef\g@x{\csname g@x\romannumeral\n@i\endcsname}%
|
||
|
\edef\g@z{\csname g@z\romannumeral\n@i\endcsname}\s@l@ctf}
|
||
|
|
||
|
\def\ibu#1{\s@l@ctbeam#1\relax \i@bu}
|
||
|
\def\ibbu#1{\s@l@ctbeam#1\relax \s@l@ctc \i@bbu}
|
||
|
\def\ibbbu#1{\s@l@ctbeam#1\relax \s@l@ctd \i@bbbu}
|
||
|
\def\ibbbbu#1{\s@l@ctbeam#1\relax \s@l@cte \i@bbbbu}
|
||
|
\def\ibbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctf \i@bbbbbu}
|
||
|
|
||
|
\def\ibl#1{\s@l@ctbeam#1\relax \i@bl}
|
||
|
\def\ibbl#1{\s@l@ctbeam#1\relax \s@l@ctc \i@bbl}
|
||
|
\def\ibbbl#1{\s@l@ctbeam#1\relax \s@l@ctd \i@bbbl}
|
||
|
\def\ibbbbl#1{\s@l@ctbeam#1\relax \s@l@cte \i@bbbbl}
|
||
|
\def\ibbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctf \i@bbbbbl}
|
||
|
|
||
|
\def\i@bu#1#2{%\check@staff
|
||
|
\ifnum\b@n=\z@ \else \C@tb\t@bbu\qn@width \fi \global\b@n\m@ne
|
||
|
\inhgetn@i#1\relax \n@v#2 \C@ib+\global\advance\b@x\qd@skip}
|
||
|
|
||
|
\def\i@bl#1#2{%\check@staff
|
||
|
\ifnum\b@n=\z@ \else \C@tb\t@bbl\lthick \fi \global\b@n\@ne
|
||
|
\inhgetn@i#1\relax \n@v#2 \C@ib-}
|
||
|
|
||
|
\def\C@ib#1{\max@n@v\nin@\min@n@v{-\nin@}\global\b@p\n@v % clip slope number
|
||
|
\getcurpos \global\b@x\y@v \b@z#14.333\interbeam \advance\b@z\altportee
|
||
|
\pl@base \global\advance\b@z\y@i}
|
||
|
|
||
|
\def\C@ba#1#2{\global\advance#1#2\interbeam}
|
||
|
|
||
|
\def\i@bbu#1#2{\ifnum\b@n=\z@ \i@bu{#1}{#2}\C@ba\b@z\@ne \fi\n@bbu}
|
||
|
\def\i@bbl#1#2{\ifnum\b@n=\z@ \i@bl{#1}{#2}\C@ba\b@z\m@ne \fi\n@bbl}
|
||
|
|
||
|
\def\i@bbbu#1#2{\ifnum\b@n=\z@
|
||
|
\i@bbu{#1}{#2}\C@ba\b@z\@ne \C@ba\c@z\@ne \fi\n@bbbu}
|
||
|
\def\i@bbbl#1#2{\ifnum\b@n=\z@
|
||
|
\i@bbl{#1}{#2}\C@ba\b@z\m@ne \C@ba\c@z\m@ne \fi\n@bbbl}
|
||
|
|
||
|
\def\i@bbbbu#1#2{\ifnum\b@n=\z@
|
||
|
\i@bbbu{#1}{#2}\C@ba\b@z\@ne \C@ba\c@z\@ne \C@ba\d@z\@ne \fi\n@bbbbu}
|
||
|
\def\i@bbbbl#1#2{\ifnum\b@n=\z@
|
||
|
\i@bbbl{#1}{#2}\C@ba\b@z\m@ne \C@ba\c@z\m@ne \C@ba\d@z\m@ne \fi\n@bbbbl}
|
||
|
|
||
|
\def\i@bbbbbu#1#2{\ifnum\b@n=\z@
|
||
|
\i@bbbbu{#1}{#2}\C@ba\b@z\@ne \C@ba\c@z\@ne \C@ba\d@z\@ne \C@ba\e@z\@ne \fi\n@bbbbbu}
|
||
|
\def\i@bbbbbl#1#2{\ifnum\b@n=\z@
|
||
|
\i@bbbbl{#1}{#2}\C@ba\b@z\m@ne \C@ba\c@z\m@ne \C@ba\d@z\m@ne \C@ba\e@z\m@ne \fi\n@bbbbbl}
|
||
|
|
||
|
%%% changing beams
|
||
|
|
||
|
\def\Dec@b#1#2{\ifnum\b@n=#1#2\fi\ifnum\b@n=-#1#2\fi}
|
||
|
|
||
|
%!\def\nbbu#1{\s@l@ctbeam#1\relax \s@l@ctc \ifnum\b@n>-\tw@ \ifnum\b@n<\tw@ \n@bbu \fi \fi }
|
||
|
%!\def\nbbl#1{\s@l@ctbeam#1\relax \s@l@ctc \ifnum\b@n>-\tw@ \ifnum\b@n<\tw@ \n@bbl \fi \fi }
|
||
|
|
||
|
\def\nbbu#1{\s@l@ctbeam#1\relax \s@l@ctc \n@bbu}
|
||
|
\def\nbbl#1{\s@l@ctbeam#1\relax \s@l@ctc \n@bbl}
|
||
|
|
||
|
\def\nbbbu#1{\s@l@ctbeam#1\relax \s@l@ctd \Dec@b\@ne\n@bbu \Dec@b\tw@\n@bbbu}
|
||
|
\def\nbbbl#1{\s@l@ctbeam#1\relax \s@l@ctd \Dec@b\@ne\n@bbl \Dec@b\tw@\n@bbbl}
|
||
|
|
||
|
\def\nbbbbu#1{\s@l@ctbeam#1\relax \s@l@cte
|
||
|
\Dec@b\@ne\n@bbu \Dec@b\tw@\n@bbbu \Dec@b\thr@@\n@bbbbu}
|
||
|
\def\nbbbbl#1{\s@l@ctbeam#1\relax \s@l@cte
|
||
|
\Dec@b\@ne\n@bbl \Dec@b\tw@\n@bbbl \Dec@b\thr@@\n@bbbbl}
|
||
|
|
||
|
\def\nbbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctf
|
||
|
\Dec@b\@ne\n@bbu \Dec@b\tw@\n@bbbu \Dec@b\thr@@\n@bbbbu \Dec@b\f@ur\n@bbbbbu}
|
||
|
\def\nbbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctf
|
||
|
\Dec@b\@ne\n@bbl \Dec@b\tw@\n@bbbl \Dec@b\thr@@\n@bbbbl \Dec@b\f@ur\n@bbbbbl}
|
||
|
|
||
|
\def\n@bbu{\C@nb\c@z\c@x\@ne\qd@skip}
|
||
|
\def\n@bbl{\C@nb\c@z\c@x\@ne\z@}
|
||
|
\def\n@bbbu{\C@nb\d@z\d@x\tw@\qd@skip}
|
||
|
\def\n@bbbl{\C@nb\d@z\d@x\tw@\z@}
|
||
|
\def\n@bbbbu{\C@nb\e@z\e@x\thr@@\qd@skip}
|
||
|
\def\n@bbbbl{\C@nb\e@z\e@x\thr@@\z@}
|
||
|
\def\n@bbbbbu{\C@nb\f@z\f@x\f@ur\qd@skip}
|
||
|
\def\n@bbbbbl{\C@nb\f@z\f@x\f@ur\z@}
|
||
|
|
||
|
\def\C@nb#1#2#3#4{%
|
||
|
\global#1\b@z
|
||
|
\ifnum\b@n<\z@ \global\advance\b@n\m@ne \global\advance#1-#3\interbeam \fi
|
||
|
\ifnum\b@n>\z@ \global\advance\b@n\@ne \C@ba#1#3\fi
|
||
|
{\advance\locx@skip#4\getcurpos \global#2\y@v
|
||
|
\advance\y@v-\b@x \comp@slope\y@v \global\advance#1\s@lope}}
|
||
|
|
||
|
%%% beam termination
|
||
|
|
||
|
\def\b@adjust{\ifdim\y@ii>\tw@\y@ \advance\y@\y@ \advance\n@vi\@ne \fi}
|
||
|
|
||
|
\def\@beam{% \y@ii : longueur, \b@p : pente, \y@i : altitude
|
||
|
\ifnum\b@p=\z@
|
||
|
% slope zero
|
||
|
\y@iii\y@i\y@iv\y@i
|
||
|
\advance\y@iii-\b@amthick \advance\y@iv\b@amthick
|
||
|
\vrule\@height\y@iv\@depth-\y@iii\@width\y@ii
|
||
|
\else\n@vi\z@
|
||
|
% slope offset
|
||
|
\ifnum\b@p>\z@ \n@vi\b@p \multiply\n@vi\si@ \advance\n@vi-\si@ \fi
|
||
|
\ifnum\b@p<\z@ \n@vi-\b@p \multiply\n@vi\si@ \advance\n@vi58\fi
|
||
|
% find longest possible character to avoid patchwork
|
||
|
\y@\tw@\p@
|
||
|
\b@adjust \b@adjust \b@adjust \b@adjust \b@adjust
|
||
|
\advance\n@vi\@cxxviii
|
||
|
\chardef\b@alk\n@vi\musixfont
|
||
|
%
|
||
|
% \curwidth=0pt \curheight=\y@i \curxpos=\completewidth
|
||
|
% \loop\ifdim\curwidth<\completewidth
|
||
|
% \advance\curxpos by -\beamwidth
|
||
|
% \ifdim\curxpos<0pt
|
||
|
% \comp@slope\curxpos
|
||
|
% \advance\curheight by \s@lope \kern\curxpos \fi
|
||
|
% \raise\curheight\hbox{\b@alk}%
|
||
|
% \advance\curwidth by \beamwidth
|
||
|
% \comp@slope\beamwidth
|
||
|
% \advance\curheight by \s@lope
|
||
|
% \repeat \fi
|
||
|
%
|
||
|
\y@iv\z@ \y@iii\y@i \y@v\y@ii
|
||
|
\loop\ifdim\y@iv<\y@ii
|
||
|
\advance\y@v-\y@
|
||
|
\ifdim\y@v<\z@ \comp@slope\y@v \advance\y@iii\s@lope \kern\y@v \fi
|
||
|
\raise\y@iii\hbox{\b@alk}%
|
||
|
\advance\y@iv\y@ \comp@slope\y@ \advance\y@iii\s@lope
|
||
|
\repeat \fi}
|
||
|
|
||
|
\def\s@l@ctcde{\s@l@ctc \s@l@ctd \s@l@cte \s@l@ctf }
|
||
|
|
||
|
\def\tbu#1{\s@l@ctbeam#1\relax \C@tb\t@bbu\qn@width }
|
||
|
\def\tbbu#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbu}
|
||
|
\def\tbbbu#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbu}
|
||
|
\def\tbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbbu}
|
||
|
\def\tbbbbbu#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbbbu}
|
||
|
|
||
|
\def\tbl#1{\s@l@ctbeam#1\relax \C@tb\t@bbl\lthick }
|
||
|
\def\tbbl#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbl}
|
||
|
\def\tbbbl#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbl}
|
||
|
\def\tbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbbl}
|
||
|
\def\tbbbbbl#1{\s@l@ctbeam#1\relax \s@l@ctcde \t@bbbbbl}
|
||
|
|
||
|
\def\beam@pos#1{\getcurpos\y@ii\y@v\advance\y@ii-#1}
|
||
|
|
||
|
\def\C@tb#1#2{%
|
||
|
\n@ii\b@n \ifnum\n@ii<\z@ \n@ii-\n@ii \fi
|
||
|
\ifcase\n@ii \or \or \s@l@ctc \or \s@l@ctd \or \s@l@cte \or \s@l@ctf \or \s@l@ctg\fi
|
||
|
\ifnum\b@n<\m@ne #1\fi
|
||
|
\ifnum\b@n>\@ne #1\fi
|
||
|
\y@i\b@z \advance\y@i-\altportee \beam@pos\b@x
|
||
|
\advance\y@ii#2\relax
|
||
|
\check@staff
|
||
|
\llap{\@beam\kernm#2}\relax
|
||
|
\fi\global\b@n\z@}
|
||
|
|
||
|
\def\t@bbu{\n@v\tw@ \C@b\t@bbbu\n@bbu\y@i\c@z \beam@pos\c@x \t@xbu}
|
||
|
\def\t@bbl{\n@v\tw@ \C@b\t@bbbl\n@bbl\y@i\c@z \beam@pos\c@x \t@xbl}
|
||
|
|
||
|
\def\t@bbbu{\n@v\thr@@ \C@b\t@bbbbu\n@bbbu\y@i\d@z \beam@pos\d@x \t@xbu}
|
||
|
\def\t@bbbl{\n@v\thr@@ \C@b\t@bbbbl\n@bbbl\y@i\d@z \beam@pos\d@x \t@xbl}
|
||
|
|
||
|
\def\t@bbbbu{\n@v\f@ur \C@b\t@bbbbbu\n@bbbbu\y@i\e@z \beam@pos\e@x \t@xbu}
|
||
|
\def\t@bbbbl{\n@v\f@ur \C@b\t@bbbbbl\n@bbbbl\y@i\e@z \beam@pos\e@x \t@xbl}
|
||
|
|
||
|
\def\t@bbbbbu{\n@v\fiv@ \C@b\empty\n@bbbbbu\y@i\f@z \beam@pos\f@x \t@xbu}
|
||
|
\def\t@bbbbbl{\n@v\fiv@ \C@b\empty\n@bbbbbl\y@i\f@z \beam@pos\f@x \t@xbl}
|
||
|
|
||
|
\def\C@b#1#2{%
|
||
|
\n@ii\b@n \ifnum\n@ii<\z@ \n@ii-\n@ii \fi
|
||
|
\ifnum\n@ii>\n@v #1\fi
|
||
|
\loop
|
||
|
\advance\n@v\m@ne
|
||
|
\ifnum\n@ii=\n@v {\advance\locx@skip-\qn@width#2}\fi
|
||
|
\ifnum\n@v>\@ne \repeat}
|
||
|
|
||
|
\def\t@xbu{\C@txb\qn@width\interbeam\b@amthick\qd@skip>}
|
||
|
\def\t@xbl{\C@txb\lthick\b@amthick\interbeam\hlthick<}
|
||
|
|
||
|
\def\C@txb#1#2#3#4#5{\advance\y@i-\altportee
|
||
|
\advance\y@ii#1\relax
|
||
|
\check@staff
|
||
|
\llap{\@beam\kernm#1}%
|
||
|
\ifnum\b@n#5\z@ \comp@slope\y@ii \advance\y@i\s@lope
|
||
|
\raise\y@i\rlap{\kern#4\vrule\@height#3\@depth#2\@width\lthick}\relax
|
||
|
\fi
|
||
|
\fi
|
||
|
\ifnum\b@n<\z@ \global\advance\b@n\@ne \fi
|
||
|
\ifnum\b@n>\z@ \global\advance\b@n\m@ne \fi}
|
||
|
|
||
|
%%% semiautomatic beams
|
||
|
|
||
|
% adjustable beam slopes
|
||
|
% #1: beam number
|
||
|
% #2: starting pitch
|
||
|
% #3: ending pitch,
|
||
|
% #4: extension (number of \noteskip's)
|
||
|
|
||
|
\def\Ibu#1{\s@l@ctbeam#1\relax\I@bu\i@bu}
|
||
|
\def\Ibl#1{\s@l@ctbeam#1\relax\I@bl\i@bl}
|
||
|
\def\Ibbu#1{\s@l@ctbeam#1\relax \s@l@ctc \I@bu\i@bbu}
|
||
|
\def\Ibbl#1{\s@l@ctbeam#1\relax \s@l@ctc \I@bl\i@bbl}
|
||
|
\def\Ibbbu#1{\s@l@ctbeam#1\relax \s@l@ctd \I@bu\i@bbbu}
|
||
|
\def\Ibbbl#1{\s@l@ctbeam#1\relax \s@l@ctd \I@bl\i@bbbl}
|
||
|
\def\Ibbbbu#1{\s@l@ctbeam#1\relax \s@l@cte \I@bu\i@bbbbu}
|
||
|
\def\Ibbbbl#1{\s@l@ctbeam#1\relax \s@l@cte \I@bl\i@bbbbl}
|
||
|
\def\Ibbbbbu#1{\s@l@ctbeam#1\relax \s@l@cte \I@bu\i@bbbbbu}
|
||
|
\def\Ibbbbbl#1{\s@l@ctbeam#1\relax \s@l@cte \I@bl\i@bbbbbl}
|
||
|
|
||
|
% compute altitude difference of tried beam in \y@iv
|
||
|
% and compare with notes altitude difference
|
||
|
|
||
|
\def\@@chk{\y@iv.05\y@v \multiply\y@iv\n@viii}
|
||
|
|
||
|
\def\I@buuchk{\@@chk
|
||
|
\ifdim\y@iv>\n@ii\internote \advance\n@viii\m@ne \I@buuchk \fi
|
||
|
\ifnum\n@viii>\nin@ \advance\n@i\@ne \advance\n@ii\m@ne \I@buuchk \fi}
|
||
|
|
||
|
\def\I@bldchk{\@@chk
|
||
|
\ifdim\y@iv<\n@ii\internote \advance\n@viii\@ne \I@bldchk \fi
|
||
|
\ifnum\n@viii<-\nin@ \advance\n@i\m@ne \advance\n@ii\@ne \I@bldchk \fi}
|
||
|
|
||
|
\def\I@budchk{\@@chk
|
||
|
\ifdim\y@iv<\n@ii\internote \advance\n@viii\@ne \I@budchk \fi}
|
||
|
|
||
|
\def\I@bluchk{\@@chk
|
||
|
\ifdim\y@iv>\n@ii\internote \advance\n@viii\m@ne \I@bluchk \fi}
|
||
|
|
||
|
\def\I@bu{\let\@Ti\I@buuchk \let\@Tii\I@budchk \C@Ib}
|
||
|
\def\I@bl{\let\@Ti\I@bluchk \let\@Tii\I@bldchk \C@Ib}
|
||
|
|
||
|
\def\C@Ib#1#2#3#4{{\n@v#4\relax \min@n@v\@ne
|
||
|
\inhgetn@i#3\relax\n@ii\n@i
|
||
|
\inhgetn@i#2\relax\advance\n@ii-\n@i
|
||
|
\y@v\noteskip \multiply\y@v\n@v
|
||
|
\ifnum\n@ii=\z@ #1{#2}0%
|
||
|
\else
|
||
|
\ifnum\n@ii>\z@ \n@viii\t@n \@Ti\else\n@viii-\t@n \@Tii \fi
|
||
|
\edef\I@boper{\noexpand#1{\the\n@i}{\the\n@viii}\relax}\I@boper
|
||
|
\fi}}
|
||
|
|
||
|
% sets of double notes with computed slopes
|
||
|
|
||
|
\def\B@h{\let\B@ii\tqh}
|
||
|
\def\B@b{\let\B@ii\tqb}
|
||
|
|
||
|
\def\Dqbu{\let\B@i\Ibu \B@h\C@Dq}
|
||
|
\def\Dqbl{\let\B@i\Ibl \B@b\C@Dq}
|
||
|
\def\Dqbbu{\let\B@i\Ibbu \B@h\C@Dq}
|
||
|
\def\Dqbbl{\let\B@i\Ibbl \B@b\C@Dq}
|
||
|
|
||
|
\def\C@Dq#1#2{\B@i0{#1}{#2}1\qb0{#1}\B@ii0{#2}}
|
||
|
|
||
|
% sets of triple notes with computed slopes
|
||
|
|
||
|
\def\Tqbu{\let\B@i\Ibu \B@h\C@Tq}
|
||
|
\def\Tqbl{\let\B@i\Ibl \B@b\C@Tq}
|
||
|
\def\Tqbbu{\let\B@i\Ibbu \B@h\C@Tq}
|
||
|
\def\Tqbbl{\let\B@i\Ibbl \B@b\C@Tq}
|
||
|
|
||
|
\def\C@Tq#1#2#3{\B@i0{#1}{#3}2\qb0{#1#2}\B@ii0{#3}}
|
||
|
|
||
|
% sets of quadruple notes with computed slopes
|
||
|
|
||
|
\def\Qqbu{\let\B@i\Ibu \B@h\C@Qq}
|
||
|
\def\Qqbl{\let\B@i\Ibl \B@b\C@Qq}
|
||
|
\def\Qqbbu{\let\B@i\Ibbu \B@h\C@Qq}
|
||
|
\def\Qqbbl{\let\B@i\Ibbl \B@b\C@Qq}
|
||
|
|
||
|
\def\C@Qq#1#2#3#4{\B@i0{#1}{#4}3\qb0{#1#2#3}\B@ii0{#4}}
|
||
|
|
||
|
%%% duration points
|
||
|
|
||
|
\def\pt{\g@pt\@ne\z@}
|
||
|
\def\ppt{\g@pt\@ne\@ne}
|
||
|
\def\pppt{\g@pt\@ne\tw@}
|
||
|
|
||
|
\def\lpt{\g@pt\m@ne\z@}
|
||
|
\def\lppt{\g@pt\m@ne\@ne}
|
||
|
\def\lpppt{\g@pt\m@ne\tw@}
|
||
|
|
||
|
|
||
|
% Shifted, pointed chord notes
|
||
|
%
|
||
|
\def\lhp#1{\loff{\zhp{#1}}}
|
||
|
\def\rhp#1{\roff{\zhp{#1}}}
|
||
|
\def\lqp#1{\loff{\zqp{#1}}}
|
||
|
\def\rqp#1{\roff{\zqp{#1}}}
|
||
|
\def\rhpp#1{\roff{\zhpp{#1}}}
|
||
|
\def\lhpp#1{\loff{\zhpp{#1}}}
|
||
|
\def\rqpp#1{\roff{\zqpp{#1}}}
|
||
|
\def\lqpp#1{\loff{\zqpp{#1}}}
|
||
|
|
||
|
\def\g@pt#1#2#3{\check@staff
|
||
|
\inhgetn@i#3\relax \relax % two \relax since the first one
|
||
|
\ifnum\n@i<\@c % in swallowed by \inhgetn@i
|
||
|
\ifodd\n@i \else\advance\n@i#1\fi
|
||
|
\pl@base \raise\y@i\hbox{\musixchar#2}\fi\fi}
|
||
|
|
||
|
%%% rests
|
||
|
|
||
|
\def\wholeshift#1{\roffset{\p@ne25}{#1}}
|
||
|
|
||
|
\def\centerbar#1{\y@ii\lin@pos \advance\y@ii-\lastbarpos \advance\y@ii\cut@v
|
||
|
\kern-\h@lf\y@ii\lrlap{#1}\kern\h@lf\y@ii}%
|
||
|
|
||
|
|
||
|
\def\cpause{\hbox{\ccn{6}{\musixchar61}}}
|
||
|
\def\chpause{\hbox{\ccn{4}{\musixchar60}}}
|
||
|
\def\cPAuse{\hbox{\ccn{0}{\musixchar58}}}
|
||
|
\def\cPAUSe{\hbox{\ccn{0}{\musixchar59}}}
|
||
|
|
||
|
\def\cHpause#1{% 1.21 RDT
|
||
|
\y@ii\lin@pos \advance\y@ii-\lastbarpos%
|
||
|
\def\v@rtpart{\hbox{\vrule width.6pt height1.5\internote depth1.5\internote}}%
|
||
|
\def\h@rizpart{\hbox{\vrule width0.35\y@ii height.5\internote depth.5\internote}}%
|
||
|
\raise4\internote\hbox{\v@rtpart\h@rizpart\ccn5{\meterfont{#1}}\h@rizpart\v@rtpart}}%
|
||
|
|
||
|
\def\centerpause{\centerbar{\cpause}}
|
||
|
\def\centerhpause{\centerbar{\chpause}}
|
||
|
\def\centerPAuse{\centerbar{\cPAuse}}
|
||
|
\def\centerPAUSe{\centerbar{\cPAUSe}}
|
||
|
\def\centerHpause#1{\centerbar{\cHpause{#1}}}
|
||
|
|
||
|
\def\C@ps#1#2#3{\n@viii#3\multiply\n@viii\tw@
|
||
|
\advance\n@viii#2\raise\n@viii\internote \hbox{\musixchar#1}}
|
||
|
\def\C@pspt#1#2#3{\n@viii#3\multiply\n@viii\tw@
|
||
|
\advance\n@viii#2\raise\n@viii\internote \hbox{\musixchar#1\relax
|
||
|
\ifnum #1=\t@n\relax \raise 0.7\internote\hbox{\kern 0.2\qn@width\musixchar0}%
|
||
|
\else \raise -0.7\internote\hbox{\kern 0.2\qn@width\musixchar0}%
|
||
|
\fi}%
|
||
|
}
|
||
|
|
||
|
\def\PAUSe{\adv@box{\musixchar59}}
|
||
|
\def\PAuse{\adv@box{\musixchar58}}
|
||
|
|
||
|
\def\pause{\check@staff
|
||
|
\adv@box{\raise\si@\internote\hbox{\musixchar61}}\fi}
|
||
|
\def\pausep{\wholeshift{\pt5}\pause}
|
||
|
\def\liftpause{\C@ps\@l@v@n\si@}
|
||
|
\def\liftpausep{\C@pspt\@l@v@n\si@}
|
||
|
|
||
|
\def\hpause{\check@staff
|
||
|
\adv@box{\raise\f@ur\internote\hbox{\musixchar60}}\fi}
|
||
|
\let\hp\hpause
|
||
|
\def\hpausep{\wholeshift{\pt5}\hpause}
|
||
|
\let\hpp\hpausep
|
||
|
\def\lifthpause{\C@ps\t@n\f@ur}
|
||
|
\def\lifthpausep{\C@pspt\t@n\f@ur}
|
||
|
|
||
|
\newdimen\lift@rest
|
||
|
\def\adv@restbox#1{\hbox{\lift@rest 5\internote
|
||
|
\advance\lift@rest -2.5\fontdimen\fiv@\musixfont
|
||
|
\raise\lift@rest\hbox\@to\noteskip{#1\hss}}\advance\locx@skip\noteskip}
|
||
|
|
||
|
\def\qp{\adv@restbox{\check@staff\musixchar62\fi}}
|
||
|
\let\soupir\qp
|
||
|
|
||
|
%\def\ds@oup{\adv@restbox{\check@staff\musixchar63\fi}} % why? RDT 1.27
|
||
|
\def\ds{\adv@restbox{\check@staff\musixchar63\fi}}
|
||
|
\def\qs{\adv@restbox{\check@staff\musixchar64\fi}}
|
||
|
\def\hs{\adv@restbox{\check@staff\musixchar65\fi}}
|
||
|
\def\qqs{\adv@restbox{\check@staff\musixchar66\fi}}
|
||
|
|
||
|
% pointed rests version 1.16 RDT
|
||
|
\def\qpp{\adv@restbox{\check@staff\pt5\musixchar62\fi}}
|
||
|
\def\dsp{\adv@restbox{\check@staff\pt5\musixchar63\fi}}
|
||
|
\def\qsp{\adv@restbox{\check@staff\pt5\musixchar64\fi}}
|
||
|
\def\hsp{\adv@restbox{\check@staff\pt5\musixchar65\fi}}
|
||
|
\def\qqsp{\adv@restbox{\check@staff\pt5\musixchar66\fi}}
|
||
|
|
||
|
% double-dotted rests version 1.17 RDT
|
||
|
|
||
|
\def\pausepp{\wholeshift{\ppt5}\pause}
|
||
|
\def\hpausepp{\wholeshift{\ppt5}\hpause}
|
||
|
\let\hppp\hpausepp
|
||
|
\def\qppp{\adv@restbox{\check@staff\ppt5\musixchar62\fi}}
|
||
|
\def\dspp{\adv@restbox{\check@staff\ppt5\musixchar63\fi}}
|
||
|
\def\qspp{\adv@restbox{\check@staff\ppt5\musixchar64\fi}}
|
||
|
\def\hspp{\adv@restbox{\check@staff\ppt5\musixchar65\fi}}
|
||
|
\def\qqspp{\adv@restbox{\check@staff\ppt5\musixchar66\fi}}
|
||
|
|
||
|
% copied from musixlit.tex: version 1.21 RDT
|
||
|
|
||
|
\def\Hpause#1#2{\zcharnote{#1}{\def\s@r{%
|
||
|
\vrule\@width.6\p@\@height1\h@lf\internote\@depth1\h@lf\internote}\s@r%
|
||
|
\vrule\@width#2\noteskip\@height\h@lf\internote\@depth\h@lf\internote\s@r}}
|
||
|
|
||
|
%%% accidentals
|
||
|
|
||
|
\newskip\accshift
|
||
|
|
||
|
\def\bigaccid{\let\small@test\iftrue}
|
||
|
\def\smallaccid{\let\small@test\iffalse}
|
||
|
\def\varaccid{\def\small@test{\ifdim\noteskip>1\p@seven\qn@width}}
|
||
|
|
||
|
\varaccid % accidents de taille variable
|
||
|
|
||
|
\def\na#1{\small@test\bigna{#1}\else\smallna{#1}\fi}
|
||
|
\def\fl#1{\small@test\bigfl{#1}\else\smallfl{#1}\fi}
|
||
|
\def\sh#1{\small@test\bigsh{#1}\else\smallsh{#1}\fi}
|
||
|
\def\dfl#1{\small@test\bigdfl{#1}\else\smalldfl{#1}\fi}
|
||
|
\def\dsh#1{\small@test\bigdsh{#1}\else\smalldsh{#1}\fi}
|
||
|
|
||
|
% n@vi char pos of cautionpar (normal=5, doubleflat=6)
|
||
|
% n@v offset to char pos (flat=0, dflat=1, sharp=2, dsharp=3, natural=4)
|
||
|
% n@vi offset to char pos (big=0, small=60)
|
||
|
% n@vii =maxdimen -> cautionacctrue
|
||
|
|
||
|
\def\writ@ba{\pl@base\raise\y@i\llap{\musixchar\n@v\kern\accshift}}
|
||
|
\def\set@ba{\let\@Ti\writ@ba \n@vi\z@}
|
||
|
|
||
|
\def\bigna{\set@ba \let\@Tii\@Na \n@v\f@ur \C@acc}
|
||
|
\def\bigfl{\set@ba \let\@Tii\@Fl \n@v\z@ \C@acc}
|
||
|
\def\bigsh{\set@ba \let\@Tii\@Sh \n@v\tw@ \C@acc}
|
||
|
\def\bigdfl{\set@ba \let\@Tii\@dFl \n@v\@ne \C@acc}
|
||
|
\def\bigdsh{\set@ba \let\@Tii\@dSh \n@v\thr@@ \C@acc}
|
||
|
|
||
|
\def\@sa{\ifnum\n@vii=\maxdimen \C@ChaR \musixchar\n@v \kern.3\qn@width
|
||
|
\else \musixchar\n@v \fi \n@vii\z@}
|
||
|
|
||
|
\def\smallna{\set@sa \let\@Tii\@Na \n@v\f@ur \C@acc}
|
||
|
\def\smallfl{\set@sa \let\@Tii\@Fl \n@v\z@ \C@acc}
|
||
|
\def\smallsh{\set@sa \let\@Tii\@Sh \n@v\tw@ \C@acc}
|
||
|
\def\smalldfl{\set@sa \n@iv\si@ \let\@Tii\@dFl \n@v\@ne \C@acc}
|
||
|
\def\smalldsh{\set@sa \let\@Tii\@dSh \n@v\thr@@ \C@acc}
|
||
|
|
||
|
\def\cna{\set@ca \let\@Tii\@Na \n@v\f@ur \C@acc} % version 1.16 HM
|
||
|
\def\cfl{\set@ca \let\@Tii\@Fl \n@v\z@ \C@acc}
|
||
|
\def\csh{\set@ca \let\@Tii\@Sh \n@v\tw@ \C@acc}
|
||
|
\def\cdfl{\set@ca \n@iv\si@ \let\@Tii\@dFl \n@v\@ne \C@acc}
|
||
|
\def\cdsh{\set@ca \let\@Tii\@dSh \n@v\thr@@ \C@acc}
|
||
|
%
|
||
|
\def\writ@sa{\pl@base\raise\y@i\llap{\musixchar\n@v\kern\accshift}}
|
||
|
\def\set@sa{\let\@Ti\writ@sa \n@iv\fiv@ \n@vi\@xl }
|
||
|
\def\writ@ca{\pl@base\raise\y@i\llap{\C@ChaR \musixchar\n@v\kern.3\qn@width\kern\accshift}}
|
||
|
\def\set@ca{\let\@Ti\writ@ca \n@iv\fiv@ \n@vi\@xl }
|
||
|
|
||
|
\def\writ@ua{\advance\n@i\thr@@ \zchar\n@i{\kern\qu@rt\qn@width\@sa}}
|
||
|
\def\set@upper{\let\@Ti\writ@ua \n@iv\fiv@ \n@vi\@xl }
|
||
|
|
||
|
\def\upperna{\set@upper \let\@Tii\@Na \n@v\f@ur \C@acc}
|
||
|
\def\upperfl{\set@upper \let\@Tii\@Fl \n@v\z@ \C@acc}
|
||
|
\def\uppersh{\set@upper \let\@Tii\@Sh \n@v\tw@ \C@acc}
|
||
|
|
||
|
\def\@Na{\ifcase\n@ii \n@v\tw@ \or \n@v\f@ur \or \n@v\z@ \fi}
|
||
|
\def\@Fl{\ifcase\n@ii \n@v\f@ur \or \n@v\z@ \or \n@v\@ne \fi}
|
||
|
\def\@Sh{\ifcase\n@ii \n@v\thr@@ \or \n@v\tw@ \or \n@v\f@ur \fi}
|
||
|
\def\@dFl{\ifcase\n@ii \n@v\z@ \or \n@v\@ne \or
|
||
|
\message{\@nod flatten \noexpand\dfl \t@ruc}\let\@Ti\empty \fi}
|
||
|
\def\@dSh{\ifcase\n@ii
|
||
|
\message{\@nod sharpen \noexpand\dsh \t@ruc}\let\@Ti\empty
|
||
|
\or \n@v\thr@@ \or \n@v\tw@ \fi}
|
||
|
|
||
|
\def\C@acc#1{%
|
||
|
\check@staff
|
||
|
\inhgetn@i#1\relax
|
||
|
\ifx\rel@sw\@ne
|
||
|
\s@l@ctsigns \n@iii\n@i
|
||
|
\advance\n@iii-\ut@ref \advance\n@iii-\ut@ref
|
||
|
\loop\ifnum\n@iii>\si@ \advance\n@iii-\s@v@n \repeat
|
||
|
\loop\ifnum\n@iii<\z@ \advance\n@iii\s@v@n \repeat
|
||
|
\ifcase\n@iii
|
||
|
\n@ii\si@ % mi
|
||
|
\or\n@ii\@ne % fa
|
||
|
\or\n@ii\thr@@ % sol
|
||
|
\or\n@ii\fiv@ % la
|
||
|
\or\n@ii\s@v@n % si
|
||
|
\or\n@ii\tw@ % do
|
||
|
\or\n@ii\f@ur % re
|
||
|
\fi
|
||
|
% \n@ii positive signature limit, \n@ii-8 negative signature limit
|
||
|
\advance\n@ii-\a@s \advance\n@ii\si@ \divide\n@ii\s@v@n
|
||
|
\@Tii
|
||
|
\fi \advance\n@v\@l \advance\n@v\n@vi \expandafter\@Ti % [version 1.15] (Hiroaki)
|
||
|
\fi}
|
||
|
|
||
|
\def\@nod{Can't double }
|
||
|
|
||
|
\def\relativeaccid{\let\rel@sw\@ne }
|
||
|
\def\absoluteaccid{\let\rel@sw\empty }
|
||
|
\absoluteaccid
|
||
|
|
||
|
\def\lna#1{\loffset\smallvalue{\na{#1}}}
|
||
|
\def\lfl#1{\loffset\smallvalue{\fl{#1}}}
|
||
|
\def\lsh#1{\loffset\smallvalue{\sh{#1}}}
|
||
|
\def\ldfl#1{\loffset\smallvalue{\dfl{#1}}}
|
||
|
\def\ldsh#1{\loffset\smallvalue{\dsh{#1}}}
|
||
|
|
||
|
%%% arpeggio
|
||
|
|
||
|
\def\arpeggio#1#2{\zcharnote{#1}{%
|
||
|
\uplap{\leaders\hbox{\musixchar70}\vskip#2\Interligne}}}
|
||
|
\def\larpeggio#1#2{\loffset\smallvalue{\arpeggio{#1}{#2}}}
|
||
|
|
||
|
%%% ornaments, special signs
|
||
|
|
||
|
\def\@Char#1{\zcharnote{#1}\C@ChaR}
|
||
|
|
||
|
\def\backturn{\n@iv67\@Char}
|
||
|
\def\turn{\n@iv68\@Char}
|
||
|
\def\duevolte{{\keychar78}}
|
||
|
\def\caesura{\llap{\musixchar79\kern\h@lf\noteskip}}
|
||
|
\def\coda{\n@iv85\C@coda}
|
||
|
\def\Coda{\n@iv105\C@coda}
|
||
|
\def\C@coda#1{\llap{\@Char{#1}\kern\afterruleskip}}
|
||
|
\def\segno{\n@iv86\@Char}
|
||
|
\def\Segno{{\keychar110}}
|
||
|
\def\shake{\n@iv87\@Char}
|
||
|
\def\Shake{\n@iv88\@Char}
|
||
|
\def\Shakel{\n@iv106\@Char}
|
||
|
\def\Shakenw{\n@iv107\@Char}
|
||
|
\def\Shakesw{\n@iv108\@Char}
|
||
|
\def\Shakene{\n@iv109\@Char}
|
||
|
\def\mordent{\n@iv89\@Char}
|
||
|
\def\Mordent{\n@iv119\@Char}
|
||
|
\def\doublethumb{\n@iv121\@Char}
|
||
|
\def\trt#1{\loffset{0.65}{\shake{#1}}\roffset{0.65}{\mordent{#1}}}
|
||
|
|
||
|
|
||
|
\def\tr#1{\loffset{0.15}{\zcn{#1}{\ppff tr}}} % \loffset added version 1.23 RDT
|
||
|
\def\xtr#1{\raise1.25\internote\hbox{\n@iv111\zcn{#1}\C@ChaR}} % added version 1.23 RDT
|
||
|
\def\ptr#1{\raise1.25\internote\hbox{\n@iv117\zcn{#1}\C@ChaR}} % added version 1.23 RDT
|
||
|
%\def\Xtr#1{\wholeshift{\xtr{#1}}} % unnecessary?
|
||
|
|
||
|
%%% accents
|
||
|
|
||
|
\def\upbow{{\musixfont\@xxiii}}
|
||
|
\def\downbow{{\musixchar22}}
|
||
|
|
||
|
\def\flageolett{\n@iv120\uacc@Char}
|
||
|
\def\usfz{\n@iv\tw@nty \uacc@Char}
|
||
|
\def\lsfz{\n@iv21\lacc@Char}
|
||
|
\def\dsfz{\lsfz}
|
||
|
\def\upz{\n@iv\@xxiv \uacc@Char}
|
||
|
\def\lpz{\n@iv\@xxv \lacc@Char}
|
||
|
\def\dpz{\lpz}
|
||
|
\def\ust{\n@iv\@xxvi \uacc@Char}
|
||
|
\def\lst{\n@iv\@xxvii \lacc@Char}
|
||
|
\def\dst{\lst}
|
||
|
\def\uppz{\n@iv28\uacc@Char}
|
||
|
\def\lppz{\n@iv\@xxix \lacc@Char}
|
||
|
\def\dppz{\lppz}
|
||
|
\def\usf{\n@iv30\uacc@Char}
|
||
|
\def\lsf{\n@iv31\lacc@Char}
|
||
|
\def\dsf{\lsf}
|
||
|
\def\upzst{\n@iv18\uacc@Char}
|
||
|
\def\lpzst{\n@iv19\lacc@Char}
|
||
|
\def\dpzst{\lpzst}
|
||
|
|
||
|
\def\uacc@Char#1{\check@staff
|
||
|
\inhgetn@i#1\relax \relax
|
||
|
\ifnum\n@i<\@ight \ifodd\n@i \else\advance\n@i\@ne \fi \fi
|
||
|
\zchar\n@i\C@ChaR
|
||
|
\fi}
|
||
|
|
||
|
\def\lacc@Char#1{\check@staff
|
||
|
\inhgetn@i#1\relax \relax
|
||
|
\ifnum\n@i>\@ne \ifodd\n@i \else\advance\n@i\m@ne \fi \fi
|
||
|
\zchar\n@i\C@ChaR
|
||
|
\fi}
|
||
|
|
||
|
\def\C@ChaR{\musixfont\char\n@iv}
|
||
|
|
||
|
%%% accents on beams (correction proposed by Klaus Bechert)
|
||
|
|
||
|
\def\acc@ubalk{\acc@balk>\@ne}
|
||
|
\def\acc@lbalk{\acc@balk<\m@ne}
|
||
|
\def\acc@balk#1#2#3{\s@l@ctbeam#3\relax \getcurpos \advance\y@v\txt@ff
|
||
|
\advance\y@v-\b@x \y@ii\b@p\y@v \divide\y@ii\tw@nty \advance\y@ii\b@z
|
||
|
\ifnum\b@n#1#2\relax \advance\y@ii\b@n\interbeam
|
||
|
\advance\y@ii-#2\interbeam \fi
|
||
|
\advance\y@ii-\altportee \raise\y@ii\rlap\balk@accent}
|
||
|
\let\balk@accent\C@ChaR
|
||
|
|
||
|
%\def\bflageolett{\n@iv120\acc@ubalk}
|
||
|
\def\busfz{\n@iv\tw@nty \acc@ubalk}
|
||
|
\def\blsfz{\n@iv21\acc@lbalk}
|
||
|
%\def\bdownbow{\n@iv22\acc@ubalk}
|
||
|
%\def\bupbow{\n@iv\@xxiii \acc@lbalk}
|
||
|
\def\bupz{\n@iv\@xxiv \acc@ubalk}
|
||
|
\def\blpz{\n@iv\@xxv \acc@lbalk}
|
||
|
\def\bust{\n@iv\@xxvi \acc@ubalk}
|
||
|
\def\blst{\n@iv\@xxvii \acc@lbalk}
|
||
|
\def\buppz{\n@iv28\acc@ubalk}
|
||
|
\def\blppz{\n@iv\@xxix \acc@lbalk}
|
||
|
\def\busf{\n@iv30\acc@ubalk}
|
||
|
\def\blsf{\n@iv31\acc@lbalk}
|
||
|
%\def\bupzst{\n@iv18\acc@ubalk}
|
||
|
%\def\blpzst{\n@iv19\acc@lbalk}
|
||
|
|
||
|
% The next macros puts triplets (and others def'd with \txt) on beams
|
||
|
|
||
|
\def\butext#1{\txt@ff\qn@width
|
||
|
\def\balk@accent{\uplap{\lrlap{\kern\tw@\txt@ff\txtfont\txt}\kern\internote}}%
|
||
|
\acc@ubalk{#1}\txt@ff\h@lf\qn@width \let\balk@accent\C@ChaR}
|
||
|
|
||
|
\def\bltext#1{\txt@ff\z@
|
||
|
\def\balk@accent{\vbox\@to\z@{\kern\internote\txtfont\lrlap\txt\vss}}%
|
||
|
\acc@lbalk{#1}\txt@ff\h@lf\qn@width \let\balk@accent\C@ChaR}
|
||
|
|
||
|
%%% end of accents on beams (correction proposed by Klaus Bechert)
|
||
|
|
||
|
%%% crescendo, decrescendo
|
||
|
|
||
|
% These macros puts variable size (de)crescendo marks.
|
||
|
% \(de)crescendo{#1} #1=length (any TeX dimension, max 192pt(\simeq 68mm))
|
||
|
|
||
|
\def\C@cresc#1{\y@iv#1\n@v\y@iv
|
||
|
\sp@pt\@ne \advance\n@v\thr@@ % sp->pt round up
|
||
|
\divide\n@v\si@ % the next is 6pt(notehead) wider
|
||
|
\max@n@v\@xxxii
|
||
|
\min@n@v\@ne % clip to extremities
|
||
|
\advance\n@v\n@ii % first character position (-1)
|
||
|
\mxsps\char\n@v}
|
||
|
|
||
|
\def\crescendo{\n@ii\@lxxxiii \C@cresc}
|
||
|
\def\decrescendo{\n@ii\@cxv \C@cresc}
|
||
|
|
||
|
\newskip\@icresc
|
||
|
\def\icresc{\getcurpos\global\@icresc\y@v }
|
||
|
\def\tcresc{\n@ii\@lxxxiii \C@cre}
|
||
|
\def\tdecresc{\n@ii\@cxv \C@cre}
|
||
|
\def\C@cre{\getcurpos\advance\y@v-\@icresc \kernm\y@v\C@cresc\y@v\kern\y@v}
|
||
|
|
||
|
%%% pedal signs
|
||
|
|
||
|
\def\raiseped{-5}
|
||
|
|
||
|
\def\sPed{\musixchar34}
|
||
|
\def\sPED{%
|
||
|
\zchar\raiseped\sPed%
|
||
|
\getcurpos\advance\y@v1.6ex\global\pdl@pos\y@v%
|
||
|
\xdef\pdl@instr{\the\noinstrum@nt}\xdef\pdl@staff{\the\noport@@}% save current instrument and staff
|
||
|
}
|
||
|
|
||
|
\def\Ped{\musixchar35}
|
||
|
\def\PED{%
|
||
|
\zchar\raiseped\Ped%
|
||
|
\getcurpos\advance\y@v2.8ex\global\pdl@pos\y@v%
|
||
|
\xdef\pdl@instr{\the\noinstrum@nt}\xdef\pdl@staff{\the\noport@@}% save current instrument and staff
|
||
|
}
|
||
|
\def\Dep{\musixchar33}
|
||
|
\def\DEP{%
|
||
|
\zchar\raiseped\Dep%
|
||
|
\global\pdl@pos\z@%
|
||
|
}
|
||
|
\def\sDep{\musixchar104}
|
||
|
\def\sDEP{%
|
||
|
\zchar\raiseped\sDep%
|
||
|
\global\pdl@pos\z@%
|
||
|
}
|
||
|
|
||
|
%%% pedal brackets version 1.21 RDT
|
||
|
%%
|
||
|
%% \pdld pedal down
|
||
|
%% \pdlu pedal up
|
||
|
%% \pdlud pedal up and immediately down
|
||
|
|
||
|
\newdimen\pdl@pos % cursor position for pedal down
|
||
|
\global\pdl@pos\z@
|
||
|
|
||
|
\def\pdld{\hbox{\hroff{%
|
||
|
\raise\raiseped\internote\hbox{\vrule height2ex depth0.5pt width0.5pt}%
|
||
|
\getcurpos\global\pdl@pos\y@v%
|
||
|
% save current instrument and staff
|
||
|
\xdef\pdl@instr{\the\noinstrum@nt}\xdef\pdl@staff{\the\noport@@}%
|
||
|
}}}%
|
||
|
|
||
|
\def\pdlu{\hbox{\hroff{\getcurpos\advance\y@v-\pdl@pos%% compute length of horizontal rule
|
||
|
\kern-\y@v%
|
||
|
\raise\raiseped\internote\hbox{%
|
||
|
\vrule height-0.5pt depth1pt width\y@v%
|
||
|
\vrule height2ex depth0.5pt width0.5pt %% pedal up
|
||
|
}}}%
|
||
|
\global\pdl@pos\z@}%
|
||
|
|
||
|
\newbox\bigwedgebox % 1.22 RDT
|
||
|
\def\pdlud{\hbox{\hroff{\getcurpos\advance\y@v-\pdl@pos%% compute length of horizontal rule
|
||
|
\kern-\y@v%
|
||
|
\thinmuskip=2mu%
|
||
|
\setbox\bigwedgebox=\hbox{$\!\bigwedge\!$}%
|
||
|
\def\halfwidthbigwedge{0.5\wd\bigwedgebox}%
|
||
|
\advance\y@v-\halfwidthbigwedge%
|
||
|
\raise\raiseped\internote%
|
||
|
\hbox{%
|
||
|
\vrule height-0.5pt depth1pt width\y@v% draw horizontal rule
|
||
|
\kern\halfwidthbigwedge%
|
||
|
\raise0.33ex\lrlap{$\bigwedge$}% pedal up and down
|
||
|
}%
|
||
|
\getcurpos\advance\y@v\halfwidthbigwedge\global\pdl@pos\y@v%
|
||
|
}}}%
|
||
|
|
||
|
%% cut pedal rule at line end
|
||
|
%%
|
||
|
% compute length of horizontal rule
|
||
|
\def\pdlc@{\getcurpos\advance\y@v-\pdl@pos%
|
||
|
\kern-\y@v\raise\raiseped\internote\hbox{%
|
||
|
\vrule height-0.5pt depth1pt width\y@v %% draw horizontal rule
|
||
|
}}%
|
||
|
|
||
|
%%% fermata
|
||
|
|
||
|
\def\fermataup{\n@iv80\@Char}
|
||
|
\def\fermatadown{\n@iv81\@Char}
|
||
|
% center on whole note
|
||
|
\def\Fermataup#1{\wholeshift{\fermataup{#1}}}
|
||
|
\def\Fermatadown#1{\wholeshift{\fermatadown{#1}}}
|
||
|
|
||
|
%%% trills
|
||
|
|
||
|
\def\trilleX{\let\T@i\empty \C@trille}
|
||
|
\let\trille\trilleX
|
||
|
\def\TrilleX{\def\T@i{\ppff tr }\C@trille} % 1.24 changed from \it RDT
|
||
|
\let\Trille\TrilleX
|
||
|
\def\C@trille#1#2{\zcharnote{#1}{\y@v#2\noteskip \trill@}}
|
||
|
|
||
|
\let\maxtrilles\si@
|
||
|
% \maxtrilles and \@itrille[i] are only for obsolete Legacy \trillC
|
||
|
% and \TrillC; not related with new register allocation code. Leave
|
||
|
% it as-is. [version 1.15]
|
||
|
|
||
|
\newskip\@itrillei
|
||
|
\newskip\@itrilleii
|
||
|
\newskip\@itrilleiii
|
||
|
\newskip\@itrilleiv
|
||
|
\newskip\@itrillev
|
||
|
\newskip\@itrillevi
|
||
|
|
||
|
%\def\s@l@cttrille#1\relax{%
|
||
|
% \n@i#1\relax \ifnum\n@i<\z@ \n@i\@c \fi
|
||
|
% \ifnum\n@i<\maxtrilles \else
|
||
|
% \n@i\z@ \errmessage{Wrong trill number!}\fi
|
||
|
% \advance\n@i\@ne
|
||
|
% \edef\@itrille{\csname @itrille\roman@n@i}% dimen (altportee)
|
||
|
% }% select trill
|
||
|
|
||
|
|
||
|
\def\itrille{\itrill@old{0}}
|
||
|
\def\ttrille{\ttrill@old{0}}
|
||
|
\def\tTrille{\tTrill@old{0}}
|
||
|
|
||
|
\def\itrill@old#1{\s@l@cttrill#1\relax
|
||
|
\ifdim\tr@x < \maxdimen\errmessage{\@mis \noexpand\Ttrille \number #1}\fi
|
||
|
\getcurpos\global\tr@y\y@v}
|
||
|
\def\ttrill@old#1{\s@l@cttrill#1\relax
|
||
|
\message{\noexpand\tr@x=\the\tr@x, No. #1}%
|
||
|
\ifdim\tr@x < \maxdimen\else\errmessage{\@mis \noexpand\Itrille \number #1}\fi
|
||
|
\let\T@i\empty \C@tri}
|
||
|
\def\tTrill@old#1{\s@l@cttrill#1\relax
|
||
|
\message{\noexpand\tr@x=\the\tr@x, No. #1}%
|
||
|
\ifdim\tr@x < \maxdimen\else\errmessage{\@mis \noexpand\Itrille \number #1}\fi
|
||
|
\def\T@i{\ppff tr }\C@tri} % 1.24 changed from \it RDT
|
||
|
|
||
|
\def\C@tri#1{\getcurpos\advance\y@v-\tr@y \kernm\y@v
|
||
|
\zcharnote{#1}\trill@\kern\y@v\let\T@i\empty\let\@itrille\undefined}
|
||
|
\def\trill@{\hbox\@to\y@v{\T@i\leaders\hbox{\musixchar69}\hfill}}
|
||
|
|
||
|
%%%%%%
|
||
|
|
||
|
% \let\maxtrills\si@ % here disabled to avoid conflict with new register allocation code
|
||
|
% [version 1.15] moved out to the new register allocation code
|
||
|
% \newskip\tr@xi \tr@xi\maxdimen\relax % starting horizontal pos
|
||
|
% \newtoks\tr@swi % heading of trill
|
||
|
% \newskip\tr@yi % height of trill
|
||
|
|
||
|
\newcount\tr@number
|
||
|
|
||
|
\def\tr@loop{\tr@number\z@ \loop\ifnum\tr@number<\maxtrills
|
||
|
\s@l@cttrill\tr@number\relax
|
||
|
\advance\tr@number\@ne }
|
||
|
|
||
|
\def\s@l@cttrill#1\relax{%
|
||
|
\n@i#1\relax \ifnum\n@i<\z@ \n@i\@c \fi
|
||
|
\ifnum\n@i<\maxtrills \else
|
||
|
\count@\maxtrills \advance\count@\m@ne
|
||
|
\errmessage{Wrong trill reference number \the\n@i! (valid: 0 to \the\count@)}% [version 1.15]
|
||
|
\n@i\z@ % [version 1.15]
|
||
|
\fi
|
||
|
\advance\n@i\@ne
|
||
|
\xdef\tr@x{\csname tr@x\roman@n@i}%
|
||
|
\xdef\tr@y{\csname tr@y\roman@n@i}%
|
||
|
\xdef\tr@sw{\csname tr@sw\roman@n@i}%
|
||
|
}% select octiaviation line
|
||
|
|
||
|
%\newskip\tr@x \tr@x\maxdimen\relax % starting horizontal pos
|
||
|
%\newskip\tr@y % height of trill
|
||
|
|
||
|
\def\Itrille#1{\s@l@cttrill#1\relax
|
||
|
\ifdim\tr@x < \maxdimen\errmessage{\@mis \noexpand\Ttrille \number #1}\fi
|
||
|
\global\tr@sw={\relax}%
|
||
|
\C@T}
|
||
|
\def\ITrille#1{\s@l@cttrill#1\relax
|
||
|
\ifdim\tr@x < \maxdimen\errmessage{\@mis \noexpand\Ttrille \number #1}\fi
|
||
|
\global\tr@sw={{\ppff tr }}% 1.24 changed from \it RDT
|
||
|
\C@T}
|
||
|
|
||
|
\def\C@T#1{%
|
||
|
\getcurpos\global\tr@x\y@v % store horizontal pos
|
||
|
\inhgetn@i#1\relax\pl@base\advance\y@i\altportee % get absolute height
|
||
|
\global\tr@y\y@i }
|
||
|
|
||
|
\def\Ttrille#1{\s@l@cttrill#1\relax
|
||
|
\ifdim\tr@x < \maxdimen\else\errmessage{\@mis \noexpand\Itrille \number #1}\fi
|
||
|
\advance\tr@y-\altportee \let\T@ii\char \C@TR \global\tr@x\maxdimen }
|
||
|
\let\TTrille\Ttrille
|
||
|
|
||
|
\def\C@TR{%
|
||
|
\ifx\T@ii\n@ii \y@v\lin@pos \else \getcurpos \fi
|
||
|
\advance\y@v-\tr@x \kernm\y@v \raise\tr@y\hbox\@to\y@v{%
|
||
|
% \the\tr@sw\xleaders\hbox{\musixchar69}\hfill\T@ii\n@ii}}%
|
||
|
% Correction by Julian Gilbey
|
||
|
\the\tr@sw\xleaders\hbox{\musixchar69}\hfill}}%
|
||
|
|
||
|
%%% tremolos version 1.19 RDT
|
||
|
%%% based on code by Werner Icking and Andre van Ryckeghem
|
||
|
%%% version 1.20 RDT re-defined using \raise, suggested by JPC
|
||
|
%%% version 1.21
|
||
|
%%% RDT changed beam numbers to 5, suggested by JPC
|
||
|
%%% RDT adjusted the vertical positions for 16th and 32nd tremolos
|
||
|
%%% version 1.24
|
||
|
%%% RDT use new counter \tr@nspose to preserve changes to \transpose in an \hbox
|
||
|
|
||
|
\newcount\tr@nspose % used to restore value of \transpose after closing an \hbox
|
||
|
\def\trml#1{\raise2\internote\hbox{\loffset{0.5}{\ibl5{#1}9}\roffset{0.5}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\trmu#1{\raise-3\internote\hbox{\loffset{0.5}{\ibu5{#1}9}\roffset{0.5}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\trrml#1{\raise3\internote\hbox{\loffset{0.5}{\ibbl5{#1}9}\roffset{0.5}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\trrmu#1{\raise-4\internote\hbox{\loffset{0.5}{\ibbu5{#1}9}\roffset{0.5}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\trrrml#1{\raise3\internote\hbox{\loffset{0.5}{\ibbbl5{#1}9}\roffset{0.5}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\trrrmu#1{\raise-4\internote\hbox{\loffset{0.5}{\ibbbu5{#1}9}\roffset{0.5}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
|
||
|
% whole notes are wider than quarter/half notes:
|
||
|
% version 1.21 RDT adjusted the offsets and vertical positions
|
||
|
|
||
|
\def\Trml#1{\raise3\internote\hbox{\ibl5{#1}9\roffset{1.25}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\Trmu#1{\raise-4\internote\hbox{\loffset{1.1}{\ibu5{#1}9}\roffset{0.15}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\Trrml#1{\raise3\internote\hbox{\ibbl5{#1}9\roffset{1.25}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\Trrmu#1{\raise-4\internote\hbox{\loffset{1.1}{\ibbu5{#1}9}\roffset{0.15}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\Trrrml#1{\raise3\internote\hbox{\ibbbl5{#1}9\roffset{1.25}{\tbl5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
\def\Trrrmu#1{\raise-4\internote\hbox{\loffset{1.1}{\ibbbu5{#1}9}\roffset{0.15}{\tbu5}\global\tr@nspose\transpose}\transpose\tr@nspose}%
|
||
|
|
||
|
%%% octave lines
|
||
|
|
||
|
\def\octnumberup{\octnumberdefault\vrule width 0pt height2ex}
|
||
|
\def\octnumberdefault{\smallppff8} % version 1.17 RDT
|
||
|
\def\octnumberdown{\octnumberdefault$^a$\txtfont\kern 0.3em bassa\vrule width 0pt depth \Internote}
|
||
|
|
||
|
\def\octfinup{\check@staff
|
||
|
\n@v\@xxiii\n@ii\@xxiv\global\o@swz={\@ne}\fi
|
||
|
\C@of}
|
||
|
\def\octfindown{\check@staff
|
||
|
\n@v\@xxv \n@ii\@xxvi\global\o@swz={\z@}\fi
|
||
|
\C@of}
|
||
|
\def\C@of#1#2{\check@staff
|
||
|
\y@v#2\noteskip\zcharnote{#1}{\hbox\@to\y@v{%
|
||
|
\xdef\o@sw{\csname o@swz\endcsname}\relax
|
||
|
\octnumber\mxsps\xleaders\hbox{\char\n@v}\hfill\char\n@ii}}%
|
||
|
\fi}
|
||
|
|
||
|
%%%%%%
|
||
|
% selecting \octnumber??? according to \o@sw
|
||
|
\def\octnumber{% \show\o@sw
|
||
|
\setbox\w@rkbox\hbox{%
|
||
|
\ifnum \@ne=\the\o@sw\relax \octnumberup
|
||
|
\else \octnumberdown
|
||
|
\fi}%
|
||
|
\ifdim \wd\w@rkbox>\y@v\setbox\w@rkbox\hbox{\octnumberdefault}\fi
|
||
|
\box\w@rkbox
|
||
|
}
|
||
|
|
||
|
|
||
|
%%%%%%
|
||
|
|
||
|
% \let\maxoctlines\si@ % here disabled to avoid conflict with new register allocation code, except for \o@swz
|
||
|
% [version 1.15] moved out to the new register allocation code
|
||
|
% \newskip\o@xi \o@xi\maxdimen\relax % starting horizontal pos
|
||
|
% \newskip\o@yi % height of octline
|
||
|
\newtoks\o@swz % sense of octline for \octfin[up][down] without number
|
||
|
% \newtoks\o@swz % sense of octline for \octfin[up][down] without number
|
||
|
|
||
|
\newcount\o@number
|
||
|
|
||
|
\def\o@loop{\o@number\z@ \loop\ifnum\o@number<\maxoctlines
|
||
|
\s@l@ctoctline\o@number\relax
|
||
|
\advance\o@number\@ne }
|
||
|
|
||
|
\def\s@l@ctoctline#1\relax{%
|
||
|
\n@i#1\relax \ifnum\n@i<\z@ \n@i\@c \fi
|
||
|
\ifnum\n@i<\maxoctlines \else
|
||
|
\count@\maxoctlines \advance\count@\m@ne
|
||
|
\errmessage{Wrong octaviation line reference number \the\n@i! (valid: 0 to \the\count@)}% [version 1.15]
|
||
|
\n@i\z@% [version 1.15]
|
||
|
\fi
|
||
|
\advance\n@i\@ne
|
||
|
\xdef\o@x{\csname o@x\roman@n@i}%
|
||
|
\xdef\o@y{\csname o@y\roman@n@i}%
|
||
|
\xdef\o@sw{\csname o@sw\roman@n@i}%
|
||
|
}% select octiaviation line
|
||
|
|
||
|
%\newskip\o@x \o@x\maxdimen\relax % starting horizontal pos
|
||
|
%\newskip\o@y % height of octline
|
||
|
|
||
|
\def\ioctfinup{\Ioctfinup0}
|
||
|
\def\ioctfindown{\Ioctfindown0}
|
||
|
\def\Ioctfinup#1{\check@staff
|
||
|
\s@l@ctoctline#1\relax
|
||
|
\ifdim\o@x < \maxdimen\errmessage{\@mis \noexpand\Toctfin \number #1}\fi
|
||
|
\global\o@sw={\@ne}\fi
|
||
|
\C@O}
|
||
|
\def\Ioctfindown#1{\check@staff
|
||
|
\s@l@ctoctline#1\relax
|
||
|
\ifdim\o@x < \maxdimen\errmessage{\@mis \noexpand\Toctfin \number #1}\fi
|
||
|
\global\o@sw={\z@}\fi
|
||
|
\C@O}
|
||
|
|
||
|
\def\C@O#1{\check@staff
|
||
|
\getcurpos\global\o@x\y@v % store horizontal pos
|
||
|
\inhgetn@i#1\relax\pl@base\advance\y@i\altportee % get absolute height
|
||
|
\global\o@y\y@i
|
||
|
\fi} % clise check@staff in Ioctfinup/down
|
||
|
|
||
|
\def\toctfin{\Toctfin0}
|
||
|
\def\Toctfin#1{\check@staff
|
||
|
\s@l@ctoctline#1\relax
|
||
|
\advance\o@y-\altportee \let\T@ii\char \C@TO \global\o@x\maxdimen
|
||
|
\fi}
|
||
|
|
||
|
\def\C@TO{\check@staff
|
||
|
\ifnum \@ne=\the\o@sw
|
||
|
\n@v\@xxiii \n@ii\@xxiv \else \n@v\@xxv \n@ii\@xxvi \fi
|
||
|
\ifx\T@ii\n@ii \y@v\lin@pos \else \getcurpos \fi
|
||
|
\advance\y@v-\o@x \kernm\y@v \raise\o@y\hbox\@to\y@v{%
|
||
|
\octnumber\mxsps\xleaders\hbox{\char\n@v}\hfill\T@ii\n@ii}\relax
|
||
|
\fi}%
|
||
|
|
||
|
% Liftoctline #1 refnumber #2 lift[steps of internote]
|
||
|
|
||
|
\def\Liftoctline#1#2{\n@i#1\advance\n@i\@ne
|
||
|
\advance\csname o@y\roman@n@i#2\internote}
|
||
|
|
||
|
%%% some specials
|
||
|
|
||
|
% \def\metron#1#2{{\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2}}
|
||
|
% version 1.19 RDT:
|
||
|
\let\lyricson\relax
|
||
|
\let\lyricsoff\relax
|
||
|
\def\metron#1#2{{\lyricsoff\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2\lyricson}}
|
||
|
\def\metronequiv#1#2{{\lyricsoff\stemlength\f@ur\noteskip\t@n\p@ #1 1\ = #2 1\lyricson}}
|
||
|
|
||
|
|
||
|
\def\txt{3}
|
||
|
\def\xtuplet#1#2{\n@iv#1\advance\n@iv\m@ne {\sign@skip=\n@iv\noteskip
|
||
|
\sign@skip=0.5\sign@skip \xdef\half@sign@skip{\the\sign@skip}}%
|
||
|
\zcharnote{#2}{\kern\h@lf\qn@width\kern \half@sign@skip\lrlap{\txtfont#1\/\/}}}
|
||
|
\def\triolet{\xtuplet\txt} % version 1.17 RDT
|
||
|
\def\xxtuplet#1:#2#3{\n@iv#1\advance\n@iv\m@ne {\sign@skip=\n@iv\noteskip
|
||
|
\sign@skip=0.5\sign@skip \xdef\half@sign@skip{\the\sign@skip}}%
|
||
|
\zcharnote{#3}{\kern\h@lf\qn@width\kern \half@sign@skip\lrlap{\txtfont{#1:#2\/\/}}}}
|
||
|
|
||
|
%
|
||
|
% Following definitions based on tuplet.tex - conventional tuplet brackets for MusiXTeX.
|
||
|
% Col. G. L. Sicherman. Last revised 2003-05-17.
|
||
|
%
|
||
|
% Added to musixtex.tex version 1.16 by RDT.
|
||
|
%
|
||
|
% Standard MusiXTeX uses \uptrio and \downtrio to print tuplet brackets.
|
||
|
% We define \uptuplet and \downtuplet, with the same arguments:
|
||
|
%
|
||
|
% #1 : starting pitch
|
||
|
% #2 : width of bracket, in (\noteskip)s
|
||
|
% #3 : slope of bracket, in multiples of 1-1/8 degrees
|
||
|
%
|
||
|
% The user defines the text to appear in the opening as \tuplettxt.
|
||
|
% This is to avoid conflicting with the \txt in standard MusiXTeX.
|
||
|
%
|
||
|
% Examples:
|
||
|
%
|
||
|
% Draw a triplet bracket over the notes, starting at pitch "p",
|
||
|
% 1.25\noteskip wide, with a slope up of 3-3/8 degrees:
|
||
|
%
|
||
|
% \uptuplet p{1.25}3
|
||
|
%
|
||
|
% Draw a sextuplet bracket under the notes, starting at pitch "a",
|
||
|
% 2.5\noteskip wide, with a slope down of 4-1/2 degrees:
|
||
|
%
|
||
|
% \def\tuplettxt{6\/\/}
|
||
|
% \downtuplet{a}{2.5}{-4}
|
||
|
%
|
||
|
% Send comments, complaints, and bouquets to the Colonel at
|
||
|
% <colonel@monmouth.com>.
|
||
|
%
|
||
|
|
||
|
% Standard MusiXTeX prints a small "3" (or other number) within
|
||
|
% the bracket. Here we print the "3" in an opening in the bracket,
|
||
|
% so we need not use a small font.
|
||
|
%
|
||
|
% The double italic correction compensates for centering the number
|
||
|
% on the bracket line.
|
||
|
|
||
|
\def\tuplettxt{3\/\/}
|
||
|
|
||
|
%%% The rest is adapted from standard MusixTeX.
|
||
|
|
||
|
\newdimen\y@vii % x of right end of left part of bracket.
|
||
|
\newdimen\y@viii % x of left end of right part of bracket.
|
||
|
\newdimen\y@ix
|
||
|
\newbox\tuptxtb@x
|
||
|
|
||
|
% v@rline #1=height[dimen] #2=length[dimen] #3=slope (1\eqiv 1.125degree)
|
||
|
% (comments and ideas from Ian Collier) (from -20 upto 20 )
|
||
|
% This macro is used by some of the others which follow,
|
||
|
% using it directly it must be set in zero box
|
||
|
|
||
|
\def\v@rline#1#2#3{\n@v#3\y@i#2%
|
||
|
\setbox\tuptxtb@x\hbox{\hskip1pt\txtfont\tuplettxt\hskip1pt}%
|
||
|
\y@vii=\h@lf\y@i\advance\y@vii-\h@lf\wd\tuptxtb@x%
|
||
|
\n@ii-\tw@nty \min@n@v\n@ii
|
||
|
\max@n@v\tw@nty \n@iii\n@v
|
||
|
\ifnum\n@v<\z@ \n@v-\n@v \advance\n@v\tw@nty \fi % offset to lower linechars
|
||
|
\advance\n@v\@xxix
|
||
|
\setbox\ch@box\hbox{\mxsps\char\n@v}%
|
||
|
\ifdim\y@vii<\wd\ch@box \y@vii\wd\ch@box\fi% At least one whole segment!
|
||
|
\y@viii=\y@i\advance\y@viii-\y@vii%
|
||
|
\y@iv\wd\ch@box \y@ii\qu@rt\p@ \y@ii\n@iii\y@ii \y@iii\z@
|
||
|
\raise#1\internote\hbox{\mxsps\char\n@iv
|
||
|
%
|
||
|
% Build bracket with slanted line segments of width 10pt.
|
||
|
% Left part of bracket:
|
||
|
%
|
||
|
\loop\ifdim\y@iv<\y@vii\raise\y@iii\copy\ch@box
|
||
|
\advance\y@iv\wd\ch@box \advance\y@iii\y@ii \repeat
|
||
|
%
|
||
|
% last element
|
||
|
%
|
||
|
% \finalheight=2.5\completewidth
|
||
|
% \finalheight=\n@iii\finalheight
|
||
|
% \divide\finalheight by 100
|
||
|
% \advance\overlapwidth by -\completewidth
|
||
|
% \stepheight=-2.5\overlapwidth
|
||
|
% \stepheight=\n@iii\stepheight
|
||
|
% \divide\stepheight by 100
|
||
|
% \advance\curheight by \stepheight
|
||
|
% \kern -\overlapwidth \raise\curheight \box\ch@box
|
||
|
%
|
||
|
\y@ix=\y@vii\advance\y@ix-\y@iv\hbox to\y@ix{\hss}%
|
||
|
\y@ix\y@vii\advance\y@ix-\wd\ch@box%
|
||
|
\y@iii\n@iii\y@ix\y@iii2\h@lf\y@iii\divide\y@iii\@c\raise\y@iii\copy\ch@box%
|
||
|
%
|
||
|
% Text:
|
||
|
%
|
||
|
\y@v2\h@lf\y@i \y@v\n@iii\y@v \divide\y@v\@c%
|
||
|
\y@ix=-\y@vii \advance\y@ix\h@lf\y@i \advance\y@ix-\h@lf\wd\tuptxtb@x%
|
||
|
\hbox to\y@ix{\hss}%
|
||
|
\y@iii\h@lf\y@v \raise\y@iii\vbox to\z@{%
|
||
|
\vss{\copy\tuptxtb@x}\vss}
|
||
|
\y@ix=\y@viii \advance\y@ix-\h@lf\y@i \advance\y@ix-\h@lf\wd\tuptxtb@x
|
||
|
\hbox to\y@ix{\hss}% To start of right part. No-op unless bracket is short.
|
||
|
%
|
||
|
% Right part of bracket:
|
||
|
%
|
||
|
\y@iii2\h@lf\y@viii \y@iii\n@iii\y@iii \divide\y@iii\@c%
|
||
|
\y@iv=\y@viii \advance\y@iv\wd\ch@box%
|
||
|
\loop\ifdim\y@iv<\y@i\raise\y@iii\copy\ch@box%
|
||
|
\advance\y@iv\wd\ch@box \advance\y@iii\y@ii \repeat
|
||
|
%
|
||
|
% Finish off the right part:
|
||
|
%
|
||
|
\y@iii\y@i\advance\y@iii-\wd\ch@box\y@iii2\h@lf\y@iii\y@iii\n@iii\y@iii%
|
||
|
\y@ix=\y@i\advance\y@ix-\y@iv\hbox to\y@ix{\hss}%
|
||
|
\divide\y@iii\@c%
|
||
|
\raise\y@iii\copy\ch@box%
|
||
|
%
|
||
|
\raise\y@v\hbox{\mxsps\char\n@iv}}}
|
||
|
%
|
||
|
% y@i =complete length
|
||
|
% y@ii =height of linechar
|
||
|
% y@iii =current height
|
||
|
% y@iv =current width
|
||
|
% y@v =height of ending line
|
||
|
% y@vii =width of left segment of bracket
|
||
|
% y@viii=y@vii + width of opening
|
||
|
% y@ix =adjustment register
|
||
|
%
|
||
|
% n@iii=slope
|
||
|
% n@iv =(number of char for hooks)
|
||
|
% n@v =slope (number of linechar)
|
||
|
|
||
|
\def\X@bkt#1#2#3{\y@v#2\noteskip \advance\y@v\wn@width
|
||
|
\inhgetn@i#1\relax \rlap{\kernm\p@ne\qn@width\v@rline\n@i\y@v{#3}}}
|
||
|
|
||
|
\def\uptuplet{\n@iv22\X@bkt}
|
||
|
\def\downtuplet{\n@iv21\X@bkt}
|
||
|
|
||
|
%\check
|
||
|
|
||
|
\def\zbreath{\check@staff\raise\si@\internote\rlap{\BIGtype'}\fi}
|
||
|
\def\cbreath{\check@staff\adv@box{\raise\si@\internote
|
||
|
\hbox\@to\noteskip{\hss\BIGtype'\hss}}\fi}
|
||
|
|
||
|
% The following macros can be used to surround a note by parentheses
|
||
|
% \l[r]par p produces a left[right] parenthesis at pitch p (Ian Collier)
|
||
|
|
||
|
\def\lpar{\n@iv\thr@@ \@Char}
|
||
|
\def\rpar{\n@iv\f@ur \@Char}
|
||
|
|
||
|
% \bracket pn draws a square bracket [ to bracket an interval
|
||
|
% of an n-th whose lowest note is p (Ian Collier)
|
||
|
|
||
|
\def\bracket#1#2{\y@iv#2\internote \advance\y@iv\tw@\internote
|
||
|
\inhgetn@i#1\relax\pl@base \advance\y@i-1\h@lf\internote
|
||
|
\raise\y@i\llap{\uplap{\offinterlineskip\hbox{\mxsps\@xxvii}%
|
||
|
\hbox{\vrule\@height\y@iv}\hbox{\mxsps\@xxvii}}}}
|
||
|
|
||
|
%%% dynamics
|
||
|
|
||
|
\def\f@kern{\kernm\p@ne ex}
|
||
|
\def\p@kern{\kernm\p@ne5ex}
|
||
|
|
||
|
\def\f{{\ppff f}}
|
||
|
\def\ff{{\ppff f\f@kern f}}
|
||
|
\def\fp{{\ppff f\f@kern p}}
|
||
|
\def\sF{{\ppff s\ppff \p@kern f}} % changed \it to \ppff 1.24 RDT
|
||
|
\def\fff{{\ppff f\f@kern f\f@kern f}}
|
||
|
\def\ffff{{\ppff f\f@kern f\f@kern f\f@kern f}}
|
||
|
\def\mf{{\ppff m\p@kern\f@kern f}}
|
||
|
\def\mp@{{\ppff m\p@kern p}}
|
||
|
\let\mezzopiano\mp@
|
||
|
\def\p{{\ppff p}}
|
||
|
\def\pp{{\ppff p\p@kern p}}
|
||
|
\def\ppp{{\ppff p\p@kern p\p@kern p}}
|
||
|
\def\pppp{{\ppff p\p@kern p\p@kern p\p@kern p}}
|
||
|
\def\sfz{{\ppff s\p@kern f\f@kern z}} % version 1.16
|
||
|
\def\sfzp{{\ppff s\p@kern f\f@kern z\p@kern p}} % version 1.16
|
||
|
|
||
|
%%% spacings
|
||
|
|
||
|
% if you want to reduce the space behind e.g. \changecontext, use
|
||
|
% \addspace{dim} ! Only scaleable values are allowed !
|
||
|
|
||
|
\def\addspace#1{\kern#1\global\advance\x@skip#1}
|
||
|
|
||
|
% \hardspace inserts (reduces) outside of \notes..\en unscaleable space
|
||
|
|
||
|
\let\fil@spc\empty
|
||
|
\def\hardspace#1{\check@nopen\t@rmskip\y@v#1\addspace\y@v\fil@spc}
|
||
|
|
||
|
\def\off#1{\advance\locx@skip#1\kern#1}
|
||
|
\def\sk{\off\noteskip}
|
||
|
\def\hsk{\off{\h@lf\noteskip}}
|
||
|
\def\bsk{\off{-\noteskip}}
|
||
|
\def\hbsk{\off{-\h@lf\noteskip}} % version 1.27 RDT
|
||
|
|
||
|
%%
|
||
|
% Redefine \qsk to be scaleable softwidth rather than a fixed kern
|
||
|
% Otherwise, over/underfull boxes will occur on rescaled (pass 2) material
|
||
|
%%
|
||
|
|
||
|
\def\qqsk{\off{\qu@rt\@l@mskip}} % version 1.16 RDT
|
||
|
\def\hqsk{\off{\h@lf\@l@mskip}}
|
||
|
\def\tqsk{\off{\p@seven\@l@mskip}} % version 1.25 RDT
|
||
|
\def\qsk{\off\@l@mskip}
|
||
|
\def\bhsk{\off{-\h@lf\@l@mskip}} % version 1.27 RDT
|
||
|
\def\btsk{\off{-\p@seven\@l@mskip}} % version 1.27 RDT
|
||
|
\def\bqsk{\off-\@l@mskip} % version 1.27 RDT
|
||
|
|
||
|
\def\nspace{\hardspace{\h@lf\qn@width}}
|
||
|
\def\qspace{\hardspace\qn@width}
|
||
|
|
||
|
%%% notes spacing
|
||
|
|
||
|
\def\arithmeticskipscale{%
|
||
|
\def\znotes{\vnotes0\elemskip}
|
||
|
\def\notes{\vnotes2\elemskip}% 16th
|
||
|
\def\notesp{\vnotes2\h@lf\elemskip}% 16th point=8 trio
|
||
|
\def\Notes{\vnotes3\elemskip}% 8th
|
||
|
\def\Notesp{\vnotes3\h@lf\elemskip}% 8th point=4 trio
|
||
|
\def\NOtes{\vnotes4\elemskip}% 4th
|
||
|
\def\NOtesp{\vnotes4\h@lf\elemskip}% 4th point
|
||
|
\def\NOTes{\vnotes5\elemskip}% 2th
|
||
|
\def\NOTesp{\vnotes5\h@lf\elemskip}% 2th point
|
||
|
\def\NOTEs{\vnotes6\elemskip}% 1th
|
||
|
\def\NOTEsp{\undefined}%
|
||
|
\def\NOTES{\undefined}%
|
||
|
}%
|
||
|
|
||
|
\def\geometricskipscale{%
|
||
|
\def\znotes{\vnotes0\elemskip}
|
||
|
\def\notes{\vnotes2\elemskip}% 16th
|
||
|
\def\notesp{\vnotes2.38\elemskip}% 16th point=8 trio
|
||
|
\def\Notes{\vnotes2.83\elemskip}% 8th
|
||
|
\def\Notesp{\vnotes3.36\elemskip}% 8th point=4 trio
|
||
|
\def\NOtes{\vnotes4\elemskip}% 4th
|
||
|
\def\NOtesp{\vnotes4.76\elemskip}% 4th point
|
||
|
\def\NOTes{\vnotes5.66\elemskip}% 2th
|
||
|
\def\NOTesp{\vnotes6.72\elemskip}% 2th point
|
||
|
\def\NOTEs{\vnotes8\elemskip}% 1th
|
||
|
\def\NOTEsp{\vnotes9.52\elemskip}% 1th
|
||
|
\def\NOTES{\vnotes11.32\elemskip}% 1th
|
||
|
}%
|
||
|
|
||
|
\def\nnotes{\vnotes1.6\elemskip} % version 1.16 RDT (corrected 2015-03-31)
|
||
|
\def\nnnotes{\vnotes1.28\elemskip} % version 1.16 RDT (corrected 2015-03-31)
|
||
|
|
||
|
\arithmeticskipscale
|
||
|
|
||
|
\def\scale#1{\def\scalenoteskip{#1}}
|
||
|
\let\scalenoteskip\normalvalue
|
||
|
|
||
|
\def\multnoteskip#1{\noteskip#1\noteskip}
|
||
|
|
||
|
\def\vnotes#1\elemskip{\noteskip#1\@l@mskip \@vnotes}
|
||
|
|
||
|
\let\V@sw\z@
|
||
|
%\def\varnotes#1{\t@rmskip \let\V@sw\@ne
|
||
|
% \setbox\ch@box\hbox{#1}\noteskip\wd\ch@box \@vnotes}
|
||
|
|
||
|
\def\hardnotes#1\notes{\t@rmskip \let\V@sw\@ne
|
||
|
\noteskip#1\relax \@vnotes}
|
||
|
|
||
|
\let\thelyrics\empty
|
||
|
%\def\hardlyrics#1\notes{\t@rmskip \let\V@sw\@ne \def\thelyrics{\hbox{#1}}%
|
||
|
% \setbox\ch@box\thelyrics \noteskip\wd\ch@box \@vnotes}
|
||
|
\def\softlyrics#1{\def\thelyrics{\hbox{#1}}}%
|
||
|
\def\hardlyrics#1\notes{\t@rmskip \let\V@sw\@ne
|
||
|
\let\save@noteskip\noteskip
|
||
|
\def\noteskip{\z@\relax\errmessage{You cannot use \noexpand\noteskip
|
||
|
in \noexpand\hardlyrics's 1st argument!}}%
|
||
|
\def\thelyrics{\hbox{#1}}%
|
||
|
\setbox\ch@box\thelyrics \let\noteskip\save@noteskip
|
||
|
\noteskip\wd\ch@box \@vnotes}
|
||
|
|
||
|
|
||
|
\def\@vnotes{\multnoteskip\scalenoteskip
|
||
|
\def|{\nextstaff}\def&{\nextinstrument}\normaltranspose\transpose
|
||
|
\check@nopen\notes@open\@ne
|
||
|
\kern\n@skip\advance\x@skip\n@skip \locx@skip\x@skip
|
||
|
\n@skip\noteskip \noinstrum@nt\z@ \begininstrument}
|
||
|
|
||
|
\def\en{\@ndstaff\notes@open\z@
|
||
|
\ifnum\V@sw>0\t@rmskip
|
||
|
\fi
|
||
|
\let\thelyrics\empty}
|
||
|
\let\enotes\en
|
||
|
|
||
|
\newcount\notes@open
|
||
|
|
||
|
\def\check@nopen{%
|
||
|
\ifnum\notes@open>\z@ \en\errmessage{\@mis\noexpand\enotes ->}\fi}
|
||
|
|
||
|
%%% text, lyrics, free positioning of chars
|
||
|
|
||
|
\def\pl@base{\y@i\n@i\internote}
|
||
|
\def\lrlap#1{\rlap{\hss#1}}
|
||
|
\def\hard@box#1{\rlap{\hbox\@to\noteskip{#1\hfil}}}
|
||
|
\def\dhard@box#1{\rlap{\hbox\@to\tw@\noteskip{#1\hfil}}}
|
||
|
\def\thard@box#1{\rlap{\hbox\@to\thr@@\noteskip{#1\hfil}}}
|
||
|
|
||
|
\def\zcharnote{\let\@Ti\rlap \C@ch}
|
||
|
\def\lcharnote{\let\@Ti\llap \C@ch}
|
||
|
\def\ccharnote{\let\@Ti\lrlap \C@ch}
|
||
|
\def\hcharnote{\let\@Ti\hard@box \C@ch}
|
||
|
\def\charnote#1#2{\zcharnote{#1}{#2}\sk}
|
||
|
|
||
|
\def\zcn{\zcharnote} % version 1.16
|
||
|
\def\ccn{\ccharnote}
|
||
|
\def\lcn{\lcharnote}
|
||
|
|
||
|
\def\C@ch#1#2{\check@staff\inhgetn@i#1\relax\pl@base\raise\y@i\@Ti{#2}\fi}
|
||
|
|
||
|
\def\zmidstaff{\let\@Ti\rlap \C@mid}
|
||
|
\def\lmidstaff{\let\@Ti\llap \C@mid}
|
||
|
\def\cmidstaff{\let\@Ti\lrlap \C@mid}
|
||
|
|
||
|
\def\C@mid#1{\check@staff\y@v\interportee \advance\y@v\f@ur\Interligne \divide\y@v\tw@
|
||
|
\raise\y@v\uplap{\@Ti{\strut#1}\vss}\fi}
|
||
|
|
||
|
\def\zchar#1#2{\check@staff\raise#1\internote\rlap{#2}\fi}
|
||
|
\def\lchar#1#2{\check@staff\raise#1\internote\llap{#2}\fi}
|
||
|
\def\cchar#1#2{\check@staff\raise#1\internote\lrlap{#2}\fi}
|
||
|
\def\hchar#1#2{\check@staff\raise#1\internote\hard@box{#2}\fi}
|
||
|
|
||
|
\def\uptext#1{\check@staff\zchar\t@n{#1}\fi}
|
||
|
\def\Uptext#1{\check@staff\zchar\fourt@@n{#1}\fi}
|
||
|
|
||
|
\def\setsongraise#1#2{\n@v#1\relax % select instrument
|
||
|
\expandafter\def\csname T@R\romannumeral\n@v\endcsname{#2}}
|
||
|
|
||
|
% [version 1.15] moved out to the new register allocation code
|
||
|
% \let\T@Ri\z@
|
||
|
|
||
|
\def\qlrlap#1{\rlap{\hbox to \qn@width{\hss#1\hss}}}
|
||
|
\def\zsong{\let\@Ti\rlap \C@t}
|
||
|
\def\lsong{\let\@Ti\llap \C@t}
|
||
|
\def\csong{\let\@Ti\qlrlap \C@t}
|
||
|
\def\hsong{\let\@Ti\hard@box \C@t}
|
||
|
\def\dhsong{\let\@Ti\dhard@box \C@t}
|
||
|
\def\thsong{\let\@Ti\thard@box \C@t}
|
||
|
|
||
|
\def\C@t#1{\C@tx{\@Ti{\strut#1}\vss}}
|
||
|
|
||
|
\def\C@tx{%
|
||
|
\ifnum\noinstrum@nt=\@ne \y@iv\staffbotmarg \else
|
||
|
\advance\noinstrum@nt\m@ne
|
||
|
\y@iv\csname interinstrument\romannumeral\noinstrum@nt\endcsname
|
||
|
\C@Inter \advance\y@iv\stem@skip \divide\y@iv\tw@
|
||
|
\advance\noinstrum@nt\@ne \fi
|
||
|
\advance\y@iv-\csname T@R\romannumeral\noinstrum@nt\endcsname
|
||
|
%% \advance\noinstrum@nt\@ne \fi
|
||
|
\lower\y@iv\uplap}
|
||
|
|
||
|
%%% slope lines and brackets
|
||
|
|
||
|
% varline #1=height[dimen] #2=length[dimen] #3=slope (1\eqiv 1.125degree)
|
||
|
% (comments and ideas from Ian Collier) (from -20 upto 20 )
|
||
|
% This macro is used by some of the others which follow,
|
||
|
% using it directly it must be set in zero box
|
||
|
|
||
|
\def\varline#1#2#3{\n@v#3\y@i#2%
|
||
|
\n@ii-\tw@nty \min@n@v\n@ii
|
||
|
\max@n@v\tw@nty \n@iii\n@v
|
||
|
\ifnum\n@v<\z@ \n@v-\n@v \advance\n@v\tw@nty \fi % offset to lower linechars
|
||
|
\advance\n@v\@xxix
|
||
|
\setbox\ch@box\hbox{\mxsps\char\n@v}%
|
||
|
\y@iv\wd\ch@box \y@ii\qu@rt\p@ \y@ii\n@iii\y@ii \y@iii\z@
|
||
|
\raise#1\internote\hbox{\ifx\@hook\@ne \mxsps\char\n@iv \fi
|
||
|
% main loop
|
||
|
\loop\ifdim\y@iv<\y@i
|
||
|
\raise\y@iii\copy\ch@box\advance\y@iv\wd\ch@box \advance\y@iii\y@ii \repeat
|
||
|
% last element
|
||
|
%
|
||
|
% \finalheight=2.5\completewidth
|
||
|
% \finalheight=\n@iii\finalheight
|
||
|
% \divide\finalheight by 100
|
||
|
% \advance\overlapwidth by -\completewidth
|
||
|
% \stepheight=-2.5\overlapwidth
|
||
|
% \stepheight=\n@iii\stepheight
|
||
|
% \divide\stepheight by 100
|
||
|
% \advance\curheight by \stepheight
|
||
|
% \kern -\overlapwidth \raise\curheight \box\ch@box
|
||
|
%
|
||
|
\y@v2\h@lf\y@i \y@v\n@iii\y@v \divide\y@v\@c \advance\y@iv-\y@i
|
||
|
\y@ii-2\h@lf\y@iv \y@ii\n@iii\y@ii \divide\y@ii\@c \advance\y@iii\y@ii
|
||
|
\kernm\y@iv\raise\y@iii\box\ch@box%
|
||
|
\ifx\@hook\@ne \raise\y@v\hbox{\mxsps\char\n@iv}\fi
|
||
|
% text in the middle
|
||
|
\ifx\@text\@ne \ifnum\n@vi=\@ne \y@iii\p@ \else\y@iii-\p@ \fi
|
||
|
\advance\y@iii\h@lf\y@v \kernm\h@lf\y@i\raise\y@iii\vbox\@to\z@{%
|
||
|
\ifnum\n@vi=\@ne \vss \fi\lrlap{\txtfont\txt}\ifnum\n@vi=\@ne \else\vss \fi}\fi}%
|
||
|
\let\@hook\empty \let\@text\empty}
|
||
|
%
|
||
|
% y@i =complete length
|
||
|
% y@ii =height of linechar
|
||
|
% y@iii=current height
|
||
|
% y@iv =current width
|
||
|
% y@v =height of ending line
|
||
|
%
|
||
|
% n@iii=slope
|
||
|
% n@iv =(number of char for hooks)
|
||
|
% n@v =slope (number of linechar)
|
||
|
% n@vi =1 -> text above
|
||
|
% @hook=\@ne -> draws hookrules at begin and end of line
|
||
|
% @text=\@ne -> puts text at the middle of the line (def'd with \txt)
|
||
|
|
||
|
% \ov[un]bkt{p}{n}{s} draws a bracket over the music starting at the
|
||
|
% current position at pitch p, width n\noteskip and slope s, causing no space
|
||
|
% #1=height (note), #2=length (noteskips) #3=slope (1\eqiv 1.125[degree])
|
||
|
|
||
|
\def\ovbkt{\n@iv22\C@bkt}
|
||
|
\def\unbkt{\n@iv21\C@bkt}
|
||
|
|
||
|
\def\C@bkt#1#2#3{\y@v#2\noteskip \advance\y@v\wn@width \let\@hook\@ne
|
||
|
\inhgetn@i#1\relax \rlap{\kernm\p@ne\qn@width\varline\n@i\y@v{#3}}}
|
||
|
|
||
|
% \up[down]trio{p}{n}{s} same as above,
|
||
|
% draws \txt (default \eightit 3) above[below] in the middle
|
||
|
% #1=height (note), #2=length (noteskips) #3=slope (1\eqiv 1.125[degree])
|
||
|
|
||
|
\def\uptrio{\n@vi\z@ \let\@text\@ne \ovbkt}
|
||
|
\def\downtrio{\n@vi\@ne \let\@text\@ne \unbkt}
|
||
|
|
||
|
%
|
||
|
% slide #1=height #2=number of elements #3=slope(-8 to 8 [step 10degree])
|
||
|
%
|
||
|
\def\slide#1#2#3{\n@ii#3\relax\inhgetn@i#1\relax%
|
||
|
\ifnum\n@ii>\m@ne \advance\n@ii\m@ne\let\@Ti\raise
|
||
|
\else \n@ii-\n@ii \advance\n@ii\s@v@n\let\@Ti\lower \fi
|
||
|
\setbox\toks@box\hbox{\mxsps\char\n@ii}\n@iii\z@
|
||
|
\raise\n@i\internote\rlap{\hbox{\loop\ifnum\n@iii<#2%
|
||
|
\@Ti\n@iii\ht\toks@box\copy\toks@box\advance\n@iii\@ne\repeat}}}
|
||
|
|
||
|
%%% standard settings
|
||
|
% [115] make them compatible to >12 instruments
|
||
|
\def\resetlayout{\def\interfacteur{9}%
|
||
|
\stafftopmarg\thr@@\Interligne \staffbotmarg\thr@@\Interligne
|
||
|
\count@\z@ \loop
|
||
|
\advance\count@ by\@ne
|
||
|
\expandafter \let\csname n@l\roman@c@\endcsname \fiv@
|
||
|
% \expandafter\def\csname interfacteur\roman@c@\endcsname{\interfacteur} % RDT deleted 1.26
|
||
|
\ifnum\count@<\maxinstruments\repeat
|
||
|
\resetclefsymbols}
|
||
|
|
||
|
\def\resetclefsymbols{%
|
||
|
\count@\z@ \loop
|
||
|
\advance\count@ by\@ne
|
||
|
\expandafter \let\csname treblec@s\roman@c@\endcsname \z@
|
||
|
\expandafter \let\csname altoc@s\roman@c@\endcsname \z@
|
||
|
\expandafter \let\csname bassc@s\roman@c@\endcsname \z@
|
||
|
\ifnum\count@<\maxinstruments\repeat
|
||
|
}
|
||
|
|
||
|
% [version 1.15] setup the default maximum element numbers to the same values of T.114
|
||
|
\setmaxinstruments\si@
|
||
|
\setmaxcxxviiibeams\si@ % 128th beam
|
||
|
\setmaxcclvibeams\z@ % 256th beam
|
||
|
\setmaxgroups\thr@@ % groups of inst's or choirs
|
||
|
\setmaxslurs\maxinstruments
|
||
|
\setmaxtrills\maxinstruments
|
||
|
\setmaxoctlines\maxinstruments
|
||
|
%
|
||
|
|
||
|
% [version 1.15] new register allocation code requires some changes
|
||
|
%\resetlayout % no need
|
||
|
%\let\nbinstruments\maxinstruments % no need
|
||
|
%\normalnotesize % already executed in \setmaxinstruments
|
||
|
\normalmusicsize
|
||
|
\normalnotesize % important: execute it again after the first execute of \normalmusicsize --- to initialize \metron stem length. but why?
|
||
|
%\resetlayout % no need
|
||
|
\def\nbinstruments{1}
|
||
|
\noinstrum@nt1\s@l@ctinstr\internote\Internote
|
||
|
\def\tabstringfnt{\ifdim\internote<.95\Internote \fivess % 1.29 RDT
|
||
|
\else\ifdim\internote<1.19\Internote \sixss
|
||
|
\else\ifdim\internote<1.43\Internote \eightss
|
||
|
\else\niness\fi\fi\fi}%
|
||
|
|
||
|
%%%
|
||
|
%
|
||
|
% This is muflex.tex version 1.00 , January 1993
|
||
|
%
|
||
|
% Macro library for MusicTeX `flexiline' operations: MuFlex.
|
||
|
% The idea is to set up a two pass system.
|
||
|
% On the first pass, information about each bar is written to the file
|
||
|
% jobname.mx1.
|
||
|
% After the first pass, an external (non TeX) routine is run to
|
||
|
% determine optimal values of the elemental spacing (\elemskip)
|
||
|
% for each line, so as to properly fill each line, and to lead to
|
||
|
% the piece filling an integral number of lines.
|
||
|
% The relevant parameters are written onto the file
|
||
|
% jobname.mx2.
|
||
|
% On the second pass, the .mx2 file is read in, and the information
|
||
|
% used as described above.
|
||
|
%
|
||
|
% Ross Mitchell, January 1993.
|
||
|
%
|
||
|
%%%
|
||
|
|
||
|
\newwrite\outmux
|
||
|
\def\fil@{\immediate\write\outmux}
|
||
|
|
||
|
%%
|
||
|
% \mulooseness is the MuFlex analog of TeX's \looseness parameter:
|
||
|
% the increment to the natural number of lines in the section just
|
||
|
% ended.
|
||
|
%%
|
||
|
|
||
|
\newcount\mulooseness
|
||
|
% Alternative \linegoal
|
||
|
\newcount\linegoal
|
||
|
|
||
|
%%
|
||
|
% Invoke \startmuflex before \startpiece to find out the pass number
|
||
|
% and generally get things going.
|
||
|
%%
|
||
|
% !!! If you want (have) to override the .mx1, delete the .mx2 before !!!
|
||
|
% !! You have to change the mx1, if you change the spacing inbetween !!
|
||
|
|
||
|
\newif\ifstartmuflex@done
|
||
|
\def\startmuflex{%
|
||
|
\ifstartmuflex@done
|
||
|
\immediate\write16{Warning: \noexpand\startmuflex\space
|
||
|
already done, ignored.}%
|
||
|
\else
|
||
|
\startmuflex@donetrue
|
||
|
% \global\let\ifstartmuflex@done\iftrue
|
||
|
\openin\inmux\jobname.mx2\relax
|
||
|
\ifeof\inmux
|
||
|
\immediate\openout\outmux\jobname.mx1\relax
|
||
|
\fil@{\mufl@x}%
|
||
|
\pass@I
|
||
|
\else
|
||
|
\message{(\jobname.mx2)}\pass@II
|
||
|
\fi
|
||
|
\fi}
|
||
|
|
||
|
\let\endmuflex\empty
|
||
|
|
||
|
\newbox\l@eftrightbox
|
||
|
|
||
|
\def\leftrightrepeat@I{%
|
||
|
% \setbox\toks@box\l@eftrightrepeat\y@v\wd\toks@box
|
||
|
% \setbox\toks@box\l@eftrepeat\y@iv\wd\toks@box
|
||
|
% \advance\y@v\y@iv \global\advance\x@skip-\y@v
|
||
|
%
|
||
|
\setleftrightrepeat\@bar
|
||
|
\edef\thex@skip{\the\x@skip}%
|
||
|
\setbox\l@eftrightbox\l@eftrightrepeat
|
||
|
\edef\they@v{\the\wd\l@eftrightbox}%
|
||
|
\setbox\l@eftrightbox\l@eftrepeat
|
||
|
\edef\they@iv{\the\wd\l@eftrightbox}%
|
||
|
\global\x@skip\thex@skip
|
||
|
\fil@{l \they@v\space\they@iv}}
|
||
|
|
||
|
\def\leftrepeat@I{%
|
||
|
% \setbox\toks@box\l@eftrepeat\y@iv\wd\toks@box
|
||
|
% \global\advance\x@skip-\y@iv
|
||
|
\setleftrepeat\@bar
|
||
|
\edef\thex@skip{\the\x@skip}%
|
||
|
\setbox\l@eftrightbox\l@eftrepeat
|
||
|
\edef\they@iv{\the\wd\l@eftrightbox}%
|
||
|
\global\x@skip\thex@skip
|
||
|
\fil@{L \they@iv}}
|
||
|
|
||
|
% \akkoladen from: "Rainer Dunker" <rainer.dunker@ebe-online.de>
|
||
|
|
||
|
|
||
|
\def\akkoladen#1{%
|
||
|
\def\akk@count{0}% avoid occupying yet another count register
|
||
|
\ifx\empty#1\else\@akkoladen#1\@nd\fi
|
||
|
% deactivate all remaining \grouptop...bottom items
|
||
|
\loop
|
||
|
\ifnum\akk@count<\maxgroups
|
||
|
\incr@akk@count
|
||
|
\expandafter\groupbottom\expandafter{\akk@count}\maxdimen
|
||
|
\expandafter\grouptop\expandafter{\akk@count}\z@
|
||
|
\repeat}
|
||
|
\def\@akkoladen#1#2#3\@nd{%
|
||
|
\incr@akk@count
|
||
|
\expandafter\groupbottom\expandafter{\akk@count}{#1}%
|
||
|
\expandafter\grouptop\expandafter{\akk@count}{#2}%
|
||
|
\ifx\empty#3\else\@akkoladen#3\@nd\fi}
|
||
|
\def\incr@akk@count{%
|
||
|
\count@\akk@count\relax \advance\count@\@ne \edef\akk@count{\the\count@}}
|
||
|
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% This is MusiXTex code for multiple left curly brackets %
|
||
|
% %
|
||
|
% submitted by Mthimkhulu Molekwa %
|
||
|
% to the mutex list on 19 May 1999 %
|
||
|
% %
|
||
|
% %
|
||
|
% usage: %
|
||
|
% \curlybrackets{<instrument1lower><instrument1upper> %
|
||
|
% <instrument2lower><instrument2upper> %
|
||
|
% ... %
|
||
|
% <instrument_n_lower><instrument_n_upper> %
|
||
|
% } %
|
||
|
% %
|
||
|
% %
|
||
|
% %
|
||
|
% This version corrected 07/23/2007 by Rainer Dunker to make it %
|
||
|
% insensitive to changes in \interstaff by PMX %
|
||
|
% %
|
||
|
% Added to musixtex.tex version 1.16 by RDT %
|
||
|
% %
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% Macros for tablature. They put numbers on or above the staff lines. %
|
||
|
% Based on tabdefs.tex by R.J. Gelten %
|
||
|
% %
|
||
|
% 1.33 RDT %
|
||
|
% replace ledger lines by slashes (/) for string numbers > number of staff lines %
|
||
|
% %
|
||
|
% 1.33a RDT %
|
||
|
% replace 4-7 slashes by numbers 4-7 %
|
||
|
% decrement number of slashes if tabstylespace is true %
|
||
|
% %
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\newcount\stringraise
|
||
|
\newif\iftabstylespace\tabstylespacefalse
|
||
|
|
||
|
% \tabbox ensures a white background for the tab number in the ps-file
|
||
|
% so the stafflines don't overwrite the number. Symbols are centered.
|
||
|
\def\tabbox#1#2{%
|
||
|
\setbox0=\hbox{\tabfnt #2}%
|
||
|
\stringraise\nblines
|
||
|
\advance\stringraise by -#1
|
||
|
\multiply\stringraise by 2
|
||
|
\advancefalse\def\q@u{}\loffset{0.45}{\@nq{\the\stringraise}}%
|
||
|
\iftabstylespace\else\advance\stringraise-1\fi
|
||
|
\special{ps: 1 setgray}%
|
||
|
\ccharnote{\the\stringraise}{\vrule height \ht0 width \wd0 depth \dp0}%
|
||
|
\special{ps: 0 setgray}%
|
||
|
\ccharnote{\the\stringraise}{\box0}%
|
||
|
}
|
||
|
% \ltabbox does the same as \tabbox, except that it produces
|
||
|
% left-outlined symbols
|
||
|
\def\ltabbox#1#2{\setbox0=\hbox{\tabfnt #2}%
|
||
|
\stringraise\nblines
|
||
|
\advance\stringraise by -#1
|
||
|
\multiply\stringraise by 2
|
||
|
\advancefalse\def\q@u{}\loffset{0.2}{\@nq{\the\stringraise}}%
|
||
|
\iftabstylespace\else\advance\stringraise-1\fi
|
||
|
\special{ps: 1 setgray}%
|
||
|
\zcharnote{\the\stringraise}{\vrule height \ht0 width \wd0 depth \dp0}%
|
||
|
\special{ps: 0 setgray}%
|
||
|
\zcharnote{\the\stringraise}{\box0}%
|
||
|
}
|
||
|
% \rtabbox does the same as \tabbox, except that it produces
|
||
|
% right-outlined symbols
|
||
|
\def\rtabbox#1#2{\setbox0=\hbox{\tabfnt #2}%
|
||
|
\stringraise\nblines
|
||
|
\advance\stringraise by -#1
|
||
|
\multiply\stringraise by 2
|
||
|
\advancefalse\def\q@u{}\loffset{0.75}{\@nq{\the\stringraise}}%
|
||
|
\iftabstylespace\else\advance\stringraise-1\fi
|
||
|
\special{ps: 1 setgray}%
|
||
|
\lcharnote{\the\stringraise}{\vrule height \ht0 width \wd0 depth \dp0}%
|
||
|
\special{ps: 0 setgray}%
|
||
|
\lcharnote{\the\stringraise}{\box0}%
|
||
|
}
|
||
|
|
||
|
\newcount\stringnum
|
||
|
\newcount\nslashes
|
||
|
|
||
|
% \tab takes two arguments.
|
||
|
% #1 is the string number
|
||
|
% #2 is the symbol to be put on the string
|
||
|
% the symbols are horizontally centered and a \sk is put behind it,
|
||
|
% to jump to the position of the next symbol.
|
||
|
% if the string number > \nblines, ledger lines are replaced by slashes (/)
|
||
|
\def\tab#1#2{%
|
||
|
\stringnum=#1
|
||
|
\ifnum\stringnum>\nblines
|
||
|
\nslashes=\stringnum
|
||
|
\advance\nslashes by -\nblines
|
||
|
\iftabstylespace\advance\nslashes by -1\fi
|
||
|
\def\numslashes{\the\nslashes}
|
||
|
\ifcase\numslashes\tabbox{#1}{#2}\or\zcn{-3}{\tabfnt/#2}\or\zcn{-3}{\tabfnt//#2}\or\zcn{-3}{\tabfnt///#2}\or\zcn{-3}{\tabfnt 4}\or\zcn{-3}{\tabfnt 5}\or\zcn{-3}{\tabfnt 6}\or\zcn{-3}{\tabfnt 7}\fi%
|
||
|
\else\tabbox{#1}{#2}\fi\sk}
|
||
|
|
||
|
% left spilling \tab
|
||
|
\def\ltab#1#2{%
|
||
|
\stringnum=#1
|
||
|
\ifnum\stringnum>\nblines
|
||
|
\nslashes=\stringnum
|
||
|
\advance\nslashes by -\nblines
|
||
|
\iftabstylespace\advance\nslashes by -1\fi
|
||
|
\def\numslashes{\the\nslashes}
|
||
|
\ifcase\numslashes\ltabbox{#1}{#2}\or\zcn{-3}{\tabfnt/#2}\or\zcn{-3}{\tabfnt//#2}\or\zcn{-3}{\tabfnt///#2}\or\zcn{-3}{\tabfnt 4}\or\zcn{-3}{\tabfnt 5}\or\zcn{-3}{\tabfnt 6}\or\zcn{-3}{\tabfnt 7}\fi%
|
||
|
\else\ltabbox{#1}{#2}\fi\sk}
|
||
|
|
||
|
% right spilling \tab
|
||
|
\def\rtab#1#2{%
|
||
|
\stringnum=#1
|
||
|
\ifnum\stringnum>\nblines
|
||
|
\nslashes=\stringnum
|
||
|
\advance\nslashes by -\nblines
|
||
|
\iftabstylespace\advance\nslashes by -1\fi
|
||
|
\def\numslashes{\the\nslashes}
|
||
|
\ifcase\numslashes\rtabbox{#1}{#2}\or\zcn{-3}{\tabfnt/#2}\or\zcn{-3}{\tabfnt//#2}\or\zcn{-3}{\tabfnt///#2}\or\zcn{-3}{\tabfnt 4}\or\zcn{-3}{\tabfnt 5}\or\zcn{-3}{\tabfnt 6}\or\zcn{-3}{\tabfnt 7}\fi%
|
||
|
\else\rtabbox{#1}{#2}\fi\sk}
|
||
|
|
||
|
% \chord-tab symbol. Same as \tab, but no \sk is given, so multiple
|
||
|
% symbols can be placed above one another
|
||
|
\def\ztab#1#2{%
|
||
|
\stringnum=#1
|
||
|
\ifnum\stringnum>\nblines
|
||
|
\nslashes=\stringnum
|
||
|
\advance\nslashes by -\nblines
|
||
|
\iftabstylespace\advance\nslashes by -1\fi
|
||
|
\def\numslashes{\the\nslashes}
|
||
|
\ifcase\numslashes\tabbox{#1}{#2}\or\zcn{-3}{\tabfnt/#2}\or\zcn{-3}{\tabfnt//#2}\or\zcn{-3}{\tabfnt///#2}\or\zcn{-3}{\tabfnt 4}\or\zcn{-3}{\tabfnt 5}\or\zcn{-3}{\tabfnt 6}\or\zcn{-3}{\tabfnt 7}\fi%
|
||
|
\else\tabbox{#1}{#2}\fi}
|
||
|
|
||
|
% left spilling \ztab
|
||
|
\def\zltab#1#2{%
|
||
|
\stringnum=#1
|
||
|
\ifnum\stringnum>\nblines
|
||
|
\nslashes=\stringnum
|
||
|
\advance\nslashes by -\nblines
|
||
|
\iftabstylespace\advance\nslashes by -1\fi
|
||
|
\def\numslashes{\the\nslashes}
|
||
|
\ifcase\numslashes\ltabbox{#1}{#2}\or\zcn{-3}{\tabfnt/#2}\or\zcn{-3}{\tabfnt//#2}\or\zcn{-3}{\tabfnt///#2}\or\zcn{-3}{\tabfnt 4}\or\zcn{-3}{\tabfnt 5}\or\zcn{-3}{\tabfnt 6}\or\zcn{-3}{\tabfnt 7}\fi%
|
||
|
\else\ltabbox{#1}{#2}\fi}
|
||
|
|
||
|
% right spilling \ztab
|
||
|
\def\zrtab#1#2{%
|
||
|
\stringnum=#1
|
||
|
\ifnum\stringnum>\nblines
|
||
|
\nslashes=\stringnum
|
||
|
\advance\nslashes by -\nblines
|
||
|
\iftabstylespace\advance\nslashes by -1\fi
|
||
|
\def\numslashes{\the\nslashes}
|
||
|
\ifcase\numslashes\rtabbox{#1}{#2}\or\zcn{-3}{\tabfnt/#2}\or\zcn{-3}{\tabfnt//#2}\or\zcn{-3}{\tabfnt///#2}\or\zcn{-3}{\tabfnt 4}\or\zcn{-3}{\tabfnt 5}\or\zcn{-3}{\tabfnt 6}\or\zcn{-3}{\tabfnt 7}\fi%
|
||
|
\else\rtabbox{#1}{#2}\fi}
|
||
|
|
||
|
%
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% define a new clefsymbol \tabclef for tablature %
|
||
|
% 1.29 RDT
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\def\tabclef{%
|
||
|
\setbox0=\hbox{\tabcleffnt T}
|
||
|
\setbox1=\vbox{\baselineskip=0.5\baselineskip
|
||
|
\hbox to 2\wd0{{\tabcleffnt T}\hfil}
|
||
|
\hbox to 2\wd0{{\tabcleffnt A}\hfil}
|
||
|
\hbox to 2\wd0{{\tabcleffnt B}\hfil}
|
||
|
}
|
||
|
\ifnum\nblines=6\lower1.5\internote\box1
|
||
|
\else\ifnum\nblines=4\lower3.5\internote\box1\else\lower2.5\internote\box1\fi\fi}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
% tiny duration notes placed above tablature staff %
|
||
|
% 1.33a RDT %
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
|
||
|
\newcount\tiny@hgt % = 2 * \nblines + 1
|
||
|
|
||
|
% need to suppress ledger lines and prevent raising dots in dotted notes
|
||
|
|
||
|
\def\settiny@hgt{\tiny@hgt=\nblines\multiply\tiny@hgt by 2\advance\tiny@hgt by1}
|
||
|
|
||
|
\def\tzwh{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse\def\w@h{\musixfont\nin@}\y@v\wn@width
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\let\n@fon\g@w \let\n@sym\w@h
|
||
|
\pl@base\setst@m\resetst@m\raise\y@i\hbox{\n@sym}\advancetrue\fi}
|
||
|
|
||
|
\def\tzwhp{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse\def\w@h{\musixfont\nin@}\y@v\wn@width
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\let\n@fon\g@w \let\n@sym\w@h
|
||
|
\pl@base\setst@m\resetst@m\raise\y@i\hbox{\n@sym\musixchar\z@}\advancetrue\fi}
|
||
|
|
||
|
\def\tzhu{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\y@v\qn@width
|
||
|
\pl@base\setst@m\upst@m\raise\y@i\hbox{\musixfont\@ight}\advancetrue\fi}
|
||
|
|
||
|
\def\tzhup{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\y@v\qn@width
|
||
|
\pl@base\setst@m\upst@m\raise\y@i\hbox{\musixfont{\@ight}\musixchar\z@}\advancetrue\fi}
|
||
|
|
||
|
\def\tzqu{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\y@v\qn@width
|
||
|
\pl@base\setst@m\upst@m\raise\y@i\hbox{\musixfont\s@v@n}\advancetrue\fi}
|
||
|
|
||
|
\def\tzqup{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\y@v\qn@width
|
||
|
\pl@base\setst@m\upst@m\raise\y@i\hbox{\musixfont{\s@v@n}\musixchar\z@}\advancetrue\fi}
|
||
|
|
||
|
\def\tzcu{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse\q@symbol\n@vii\@xl
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\let\n@fon\g@q \let\n@sym\q@u\y@v\qn@width
|
||
|
\pl@base\setst@m\up@flag\raise\y@i\hbox{\n@sym}\advancetrue\fi}
|
||
|
|
||
|
\def\tzcup{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse\q@symbol\n@vii\@xl
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\let\n@fon\g@qp \let\n@sym\q@up\y@v\qn@width
|
||
|
\pl@base\setst@m\up@flag\raise\y@i\hbox{\n@sym}\advancetrue\fi}
|
||
|
|
||
|
\def\tzccu{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse\q@symbol\n@vii\@xli
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\let\n@fon\g@q \let\n@sym\q@u\y@v\qn@width
|
||
|
\pl@base\setst@m\up@flag\raise\y@i\hbox{\n@sym}\advancetrue\fi}
|
||
|
|
||
|
\def\tzccup{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse\q@symbol\n@vii\@xli
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\let\n@fon\g@qp \let\n@sym\q@up\y@v\qn@width
|
||
|
\pl@base\setst@m\up@flag\raise\y@i\hbox{\n@sym}\advancetrue\fi}
|
||
|
|
||
|
\def\tzcccu{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse\q@symbol\n@vii42
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\let\n@fon\g@q \let\n@sym\q@u\y@v\qn@width
|
||
|
\pl@base\setst@m\up@flag\raise\y@i\hbox{\n@sym}\advancetrue\fi}
|
||
|
|
||
|
\def\tzcccup{%
|
||
|
\settiny@hgt
|
||
|
\tinynotesize\advancefalse\q@symbol\n@vii42
|
||
|
\check@staff\getn@i{\the\tiny@hgt}\relax\let\n@fon\g@qp \let\n@sym\q@up\y@v\qn@width
|
||
|
\pl@base\setst@m\up@flag\raise\y@i\hbox{\n@sym}\advancetrue\fi}
|
||
|
|
||
|
|
||
|
%%%%%%%% end of tablature support %%%%%%%%%%%%
|
||
|
|
||
|
\let\origin@lwrit@staffs\writ@staffs
|
||
|
\def\writ@staffs{%
|
||
|
\origin@lwrit@staffs
|
||
|
\ifx\br@cks\empty\else\expandafter\@bracks\br@cks\ende\fi}
|
||
|
|
||
|
\let\br@cks\empty
|
||
|
\def\curlybrackets#1{\def\br@cks{#1}}
|
||
|
|
||
|
\def\@bracks#1#2#3\ende{%
|
||
|
\ifnum #1<#2 %=========================== inserted by D.S.(?)
|
||
|
\noinstrum@nt=#1\s@l@ctinstr\b@zi\altitude
|
||
|
\noinstrum@nt=#2\s@l@ctinstr\b@zii\altitude
|
||
|
\advance\b@zii-\b@zi
|
||
|
\C@Inter
|
||
|
\advance\b@zii\nblines\internote
|
||
|
\advance\b@zii\nblines\internote
|
||
|
\advance\b@zii-2\internote
|
||
|
\n@v\b@zii \sp@pt\tw@ \advance\n@v\@cxxviii
|
||
|
\divide\b@zii\tw@
|
||
|
\advance\b@zi\b@zii
|
||
|
\raise\b@zi\rlap{\mxsps\char\n@v\kern\instrum@in@group}%
|
||
|
\fi %==================================== inserted by D.S.(?)
|
||
|
\ifx\empty#3\else\@bracks#3\ende\fi}
|
||
|
|
||
|
|
||
|
%%
|
||
|
% Define \pass@I to perform the following functions:
|
||
|
%
|
||
|
% (a) set line and page breaking for the first pass by setting
|
||
|
% rigid values for \elemskip (#1),
|
||
|
% \maxbarsinlin@ (#2)
|
||
|
%
|
||
|
% (b) Redefine \t@rmskip so that it writes to the .mx1 file;
|
||
|
%
|
||
|
% (c) Redefine part of \debutmorceau to open the output (.mx1) file
|
||
|
% and write the following parameters to the .mx1 file:
|
||
|
% \line@width
|
||
|
% \parindent
|
||
|
% \beforeruleskip
|
||
|
% \afterruleskip
|
||
|
% \elemskip
|
||
|
% \clef@skip
|
||
|
% \sign@skip;
|
||
|
%
|
||
|
% (d) redefine various other macros so that length measures will be
|
||
|
% written to the .mx1 file
|
||
|
%%
|
||
|
|
||
|
\def\pass@I{\def\@nds@ction{\fil@{*\space\the\mulooseness\space\the\linegoal}%
|
||
|
\mulooseness\z@\relax \linegoal\z@}%
|
||
|
|
||
|
%\def\pass@I{\def\@nds@ction{\fil@{*\space\the\mulooseness}\mulooseness\z@}%
|
||
|
%%
|
||
|
% Redefine \t@rmskip to include a macro for writing a record to a file,
|
||
|
% and define the macro
|
||
|
%%
|
||
|
\def\fil@termskip{%
|
||
|
\fil@{\the\barsinpi@c@\space\the\widthtyp@\space\the\x@skip}%
|
||
|
\widthtyp@\@ne}%
|
||
|
%%
|
||
|
% Redefine part of debutmorceau to write header information to file
|
||
|
%%
|
||
|
\def\fil@begin{%
|
||
|
\fil@{S}% Startindicator
|
||
|
\fil@{\the\line@width}%
|
||
|
\fil@{\the\parindent}%
|
||
|
\fil@{\the\beforeruleskip}%
|
||
|
\fil@{\the\afterruleskip}%
|
||
|
\fil@{\the\@l@mskip}%
|
||
|
\fil@{\the\clef@skip}%
|
||
|
\fil@{\the\sign@skip}}%
|
||
|
%
|
||
|
% -> \writ@newsigns
|
||
|
%
|
||
|
\def\fil@signs{%
|
||
|
\maxsign@skip\z@
|
||
|
\n@loop \s@l@ctsigns
|
||
|
\sign@skip\tw@\Internote
|
||
|
\sign@skip\a@s\sign@skip
|
||
|
\ifdim\sign@skip<\z@ \sign@skip-\sign@skip \fi
|
||
|
\global\advance\sign@skip\smallvalue\Internote
|
||
|
\ifdim\maxsign@skip<\sign@skip \global\maxsign@skip\sign@skip
|
||
|
\fi
|
||
|
\repeat
|
||
|
\global\sign@skip\maxsign@skip
|
||
|
\fil@{s\space\the\sign@skip}}%
|
||
|
%
|
||
|
% -> \Contpiece
|
||
|
%
|
||
|
\def\fil@indent{\fil@{\the\barsinpi@c@\space0 \the\parindent}}%
|
||
|
%
|
||
|
% when a line is stopped with a zbar, to the next bar is added the amount
|
||
|
% of afterruleskip
|
||
|
% -> no line break during Pass 1 and indicate musixflx a zbar
|
||
|
%
|
||
|
\def\zbar{\zn@wbar\fil@{z \the\barno}}%
|
||
|
%
|
||
|
% \leftrightrepeat behaves different in mid of line and end of line
|
||
|
% -> no line break during Pass 1, get the widths and
|
||
|
% indicate musixflx a leftrightrepeat
|
||
|
%
|
||
|
\let\leftrightrepeat\leftrightrepeat@I
|
||
|
\let\zleftrightrepeat\leftrightrepeat@I % RDT 1.28
|
||
|
%
|
||
|
% s.a.
|
||
|
%
|
||
|
\let\leftrepeat\leftrepeat@I
|
||
|
\let\zleftrepeat\leftrepeat@I % RDT 1.28
|
||
|
%
|
||
|
% -> \hardspace
|
||
|
%
|
||
|
\def\fil@spc{\fil@{h \the\y@v}}%
|
||
|
%
|
||
|
% makes the .mx2 more transparent
|
||
|
%
|
||
|
\def\fil@barno{\fil@{b \the\barno}}%
|
||
|
%
|
||
|
% break line if value of \lin@pos (exclusive parindent, signs and clefs)
|
||
|
% is larger than 0.5\hsize
|
||
|
%
|
||
|
\def\T@bil{\getcurpos \ifdim\y@v<\h@lf\line@width}%
|
||
|
%
|
||
|
% close the file
|
||
|
%
|
||
|
\def\endmuflex{\immediate\closeout\outmux}}%
|
||
|
|
||
|
%%
|
||
|
% Macros to set up the second pass
|
||
|
%%
|
||
|
|
||
|
\newread\inmux
|
||
|
|
||
|
%%
|
||
|
% Main macro: \pass@II
|
||
|
% Function: %%%(a) Open the .mx2 file
|
||
|
% %%%(b) Set the number of lines per page to #1
|
||
|
% (c) Set the \everystaff macro to read and decode line
|
||
|
% parameter settings
|
||
|
% %%%(d) Define end of bar, end of line and repeat macros
|
||
|
% %%% according to \autolines
|
||
|
%%
|
||
|
|
||
|
\def\pass@II{\def\ragg@d{\hfilneg\ }%
|
||
|
% \def\everyst@ff{\everystaff\read\inmux\@to\inline \inline}} % ancient
|
||
|
\def\everyst@ff{\read\inmux\@to\inline \inline\relax \everystaff}}
|
||
|
|
||
|
%%
|
||
|
% \inline expands to \lineset#1#2#3#4#5, so define the latter
|
||
|
%%
|
||
|
|
||
|
\def\lineset#1#2#3#4#5{\ifx\no@l\empty \message{<#1>}\fi
|
||
|
\maxbarsinlin@#2%
|
||
|
\@l@mskip#3%
|
||
|
\elemskip\@l@mskip
|
||
|
\afterruleskip#4%
|
||
|
\beforeruleskip#5}
|
||
|
|
||
|
\def\musicparskip{\parskip\z@ plus\fiv@\Interligne minus\Interligne}
|
||
|
|
||
|
\def\endcatcodesmusic{%
|
||
|
\catcode`\&\catcode@and
|
||
|
\catcode`\|\catcode@vert
|
||
|
\catcode`\>\catcode@gt
|
||
|
\catcode`\<\catcode@lt
|
||
|
\catcode`\!\catcode@excl
|
||
|
\catcode`\*\catcode@star
|
||
|
\catcode`\:\catcode@sc
|
||
|
\catcode`\.\catcode@pt
|
||
|
\let\bar\@@bar
|
||
|
\catcodesmusicfalse}
|
||
|
|
||
|
\endcatcodesmusic
|
||
|
|
||
|
%...\let\wlog=\@wloG
|
||
|
|
||
|
\catcode`\@=\catcodeat
|
||
|
\endinput
|
||
|
|