%-% Musictex.sty version 0.1 of December, 10 1991
%-%   Updates to version 4.31 November 1991 of plain musictex
%-% Musictex.sty version 0.0 of 5, November 1991
%-% It is a first attempt to make musictex running by LaTeX
%-% We defined an environment named music to change the catcodes
%-% of the vertical bar and the ampersand for musictex.
%-% We used TeX command instead of LaTeX command inside of music.
%-% It needs a rather big \Tex{}, but emTeX compiler on PCs does the trip
%-% for small music arrays. It works better on work stations.
%-% Nicolas Brouard <brouard@frined51>
%-% With this file you need extra fonts. If extrafonts are
%-% are not available then use \documenstyle[musicpln]{article}
%-%
%-% In both cas you can add the option file bigmusic.sty which
%-% enlarges LaTeX page to a big size (A4).
%-%  \documentstyle[musicpln,bigmusic]{article}
%-%
%-% Here is an example:
%-% \documentstyle[musictex]{article}
%-% \begin{document}
%-%\def\nbinstruments{1}\relax
%-%\generalmeter{\meterfrac{4}{4}}\relax
%-%\debutmorceau
%-%\normal
%-%\zglu\Notes\rlap{\hu j}\ql h\enotes
%-%\temps\Notes\hl g\enotes
%-%\temps\Notes\hu k\enotes
%-%\temps\Notes\ql f\enotes
%-%\suspmorceau
%-% \end{music}
%-%
%-% Latex blabla
%-%
%-% \begin{music}
%-%\def\nbinstruments{1}\relax
%-%\generalmeter{\meterfrac{4}{4}}\relax
%-%\debutmorceau
%-%\normal
%-%\zglu\Notes\rlap{\hu j}\ql h\enotes
%-%\temps\Notes\hl g\enotes
%-%\temps\Notes\hu k\enotes
%-%\temps\Notes\ql f\enotes
%-%\suspmorceau
%-% \end{document}
%-%
%-%    Building  Musictex.sty
%-%
%-% Two files are required to build musictex.sty from
%-% the plain distribution, premusic.tex and posmusic.\TeX{}.
%-% Then musictex.sty is
%-% the concatenation of premusic.tex+musicfnt.tex+musictex.tex+posmusic.tex
%-% On unix:
%-%   cat premusic.tex musicfnt.tex musictex.tex posmusic.tex >musictex.sty
%-% On dos:
%-%   copy premusic.tex+musicfnt.tex+musictex.tex+posmusic.tex musictex.sty
%-%  If you don't have the fonts use:
%-% On unix:
%-%   cat premusic.tex musicpln.tex musictex.tex posmusic.tex >musicpln.sty
%-% On dos:
%-%   copy premusic.tex+musicpln.tex+musictex.tex+posmusic.tex musicpln.sty
%-% You also need the option file bigmusic.sty.

%
% This is MusicTeX - Version 4.32 -- December 1991
%
\def\fonthdg{c}  %  prefix to cmxxx fonts. change to "a" for amxxx fonts
\font\cmmi=\fonthdg mmi10 scaled \magstep1
\font\cmbx=\fonthdg mbx10 scaled \magstep1
\font\moyen=\fonthdg mbx10 scaled \magstep1
\font\cmex=\fonthdg mex10
\font\cmsy=\fonthdg msy10 scaled \magstep1
\font\cmr=\fonthdg mr10 scaled \magstep1
\font\ttyeight=\fonthdg mtt8
\catcode`\@=11
%
\let\@plainwlog=\wlog
\def\wlog#1{}%
%
\font\musictwenty=musicn20
\font\musicsixteen=musicn16
\font\beamsixteen=beamn16
\font\beamtwenty=beamn20
%
\def\q@u{\musicxx\char"21\hss}\def\qu@raise{\z@}%
\def\h@a{\musicxx\char"22\hss}\def\ha@raise{\z@}%
\def\w@h{\musicxx\char"23\hss}\def\wh@raise{\z@}%
\def\w@hq{\musicxx\char 125\hss}\def\wh@raise{\z@}%
\def\s@bv{\musicxx\char"24\hss}\def\wh@raise{\z@}%
\def\b@rv{\musicxx\char"20\hss}\def\wh@raise{\z@}%
\def\zwq#1{\getn@i{#1}\def\n@fon{\zwq}\def\n@sym{\w@hq}\g@zw}%
\def\zsb#1{\getn@i{#1}\def\n@fon{\zws}\def\n@sym{\s@bv}\g@zsb}% semi-breve
\def\zbv#1{\getn@i{#1}\def\n@fon{\zbv}\def\n@sym{\b@rv}\g@zbv}% breve
\def\g@zbv{\global\n@raise=\wh@raise\ifnum\n@i<100\relax
  \h@lines{\bv@width}\def\s@tem{\resetstem}\plap@symss\fi}%
\def\g@zsb{\global\n@raise=\wh@raise\ifnum\n@i<100\relax
  \h@lines{\sb@width}\def\s@tem{\resetstem}\plap@symss\fi}%
%
\newbox\ch@box
\newdimen\lthick
\global\lthick=0.4pt
\newdimen\qn@width
\newdimen\hn@width
\newdimen\wn@width
\newdimen\sb@width
\newdimen\bv@width
\newdimen\qd@skip
\newdimen\hd@skip
\newdimen\wd@skip
%
\newcount\musicsize
\def\computespecifics{\ifnum\musicsize=0\relax\musicsize=20\relax\fi
\ifnum\musicsize=20\relax
\def\musicxx{\musictwenty}\else\def\musicxx{\musicsixteen}\fi
\ifnum\musicsize=20\relax
\def\beamnxx{\beamtwenty}\else\def\beamnxx{\beamsixteen}\fi
\ifnum\musicsize=20\relax\def\meterfont{\moyen}\else\def\meterfont{\cmbx}\fi
\Interligne=\musicsize pt\divide\Interligne by 4\relax
\wn@width=1.4\Interligne
\sb@width=2.2\Interligne
\bv@width=1.4\Interligne
\hn@width=1.2\Interligne
\qn@width=1.2\Interligne
\qd@skip=\qn@width\advance\qd@skip by -0.5\lthick
\hd@skip=\hn@width\advance\hd@skip by -0.5\lthick
\wd@skip=\wn@width\advance\wd@skip by -0.5\lthick
\setbox\ch@box=\hbox{\c@rochu}\c@height=\ht\ch@box
}%
%
%\check
%
\def\s@oupir{{\musicxx\char"3E}}%
%
\def\c@rochu{{\musicxx \char"28}}%
\def\c@rochl{{\musicxx \char"2D}}%
\newdimen\c@height\newcount\c@mult
%\check
\def\d@cr#1{\c@mult=#1\relax    % queue de #1 croche(s) vers le haut
\advance\c@mult by 39\relax
\setbox\ch@box=\rlap{\musicxx\char\c@mult}\c@height=\ht\ch@box
\global\advance\st@top by \c@height
\global\advance\st@top by \internote
\global\advance\st@top by -\st@bot
  \ifdim\st@top>1pt
  \global\advance\st@bot by -\altportee
  \raise\st@bot\rlap{\kern\stem@skip\vrule height\st@top width \lthick
  \advance\st@top by -\c@height\raise\st@top\box\ch@box}\fi
  \resetstem}%
%\check
\def\p@cr#1{\c@mult=#1\relax    % queue de #1 croche(s) vers le bas
\advance\c@mult by 44\relax
\setbox\ch@box=\rlap{\kern 0.5\lthick\musicxx\char\c@mult}\c@height=\ht\ch@box
\global\advance\st@bot by -\internote
\global\advance\st@bot by -\c@height
\global\advance\st@top by -\st@bot
\ifdim\st@top>1pt
 \global\advance\st@bot by -\altportee
 \raise\st@bot\rlap{\box\ch@box\vrule height\st@top width \lthick}%
\fi
  \resetstem}%
%\check
\def\s@harp{\musicxx\char"34}\def\sh@raise{\z@}%
\def\f@lat{\musicxx\char"32}\def\fl@raise{\z@}%
\def\n@at{\musicxx\char"36}\def\na@raise{\z@}%
\def\ds@harp{\musicxx\char"35}%
\def\df@lat{\musicxx\char"33}%
%
\def\smalln@at{\musicxx\char"7C}%
\def\smallf@lat{\musicxx\char"78}%
\def\smalls@harp{\musicxx\char"7A}%
\def\smallds@harp{\musicxx\char"7B}%
\def\smalldf@lat{\musicxx\char"79}%
%
\def\bigsh#1{\getn@i{#1}\global\n@raise=\sh@raise\pl@llap{\s@harp}}%
\def\smallsh#1{\getn@i{#1}\global\n@raise=\sh@raise\pl@llap{\smalls@harp}}%
\def\uppersh#1{\zcharnote{#1}{\raise3\internote
\hbox to \qn@width{\hss\smalls@harp\hss}}}%
%
\def\bigdsh#1{\getn@i{#1}\global\n@raise=\sh@raise\pl@llap{\ds@harp}}%
\def\smalldsh#1{\getn@i{#1}\global\n@raise=\sh@raise\pl@llap{\smallds@harp}}%
%
\def\bigna#1{\getn@i{#1}\global\n@raise=\na@raise\pl@llap{\n@at}}%
\def\smallna#1{\getn@i{#1}\global\n@raise=\na@raise\pl@llap{\smalln@at}}%
\def\upperna#1{\zcharnote{#1}{\raise3\internote
\hbox to \qn@width{\hss\smalln@at\hss}}}%
%
\def\bigfl#1{\getn@i{#1}\global\n@raise=\fl@raise\pl@llap{\f@lat}}%
\def\smallfl#1{\getn@i{#1}\global\n@raise=\fl@raise\pl@llap{\smallf@lat}}%
\def\upperfl#1{\zcharnote{#1}{\raise3\internote
\hbox to \qn@width{\hss\smallf@lat\hss}}}%
%
\def\bigdfl#1{\getn@i{#1}\global\n@raise=\fl@raise\pl@llap{\df@lat}}%
\def\smalldfl#1{\getn@i{#1}\global\n@raise=\fl@raise\pl@llap{\smalldf@lat}}%
%
\def\na#1{\ifdim\small@test\bigna{#1}\else\smallna{#1}\fi}%
\def\fl#1{\ifdim\small@test\bigfl{#1}\else\smallfl{#1}\fi}%
\def\sh#1{\ifdim\small@test\bigsh{#1}\else\smallsh{#1}\fi}%
\def\dfl#1{\ifdim\small@test\bigdfl{#1}\else\smalldfl{#1}\fi}%
\def\dsh#1{\ifdim\small@test\bigdsh{#1}\else\smalldsh{#1}\fi}%
%
%\check
\def\b@adjust{\ifdim\y@ii>2.1\q@antum
\multiply\q@antum by 2\relax\advance\b@char by 1\relax\fi
}%
\newcount\b@char
\def\b@alkdefs{\b@char=0\relax
\ifnum \b@p>0\relax\b@char=\b@p\relax\multiply\b@char by 6\relax
  \advance\b@char by -6\relax\ifnum\b@char>54\relax\b@char=54\relax\fi\fi
\ifnum \b@p<0\relax\b@char=-\b@p\relax\multiply\b@char by 6\relax
  \advance\b@char by 58\relax\ifnum\b@char>118\relax\b@char=118\relax\fi\fi
\q@antum=60pt\divide\q@antum by 32\relax\b@adjust
\b@adjust
\b@adjust
\b@adjust
\b@adjust
\chardef\b@alk=\b@char}%
%\check
\def\s@lopdefs{\q@antum=60pt\divide\q@antum by 32\relax \def\s@lope{0.0}\relax
\ifnum \b@p=1\relax\def\s@lope{0.05}\fi
\ifnum \b@p>1\relax\b@char=\b@p\relax\multiply\b@char by 5\relax
  \ifnum\b@char>50\relax\b@char=50\relax\fi
  \edef\s@lope{0.\the\b@char}\fi
\ifnum \b@p=-1\relax\def\s@lope{-0.05}\fi
\ifnum \b@p<-1\relax\b@char=-\b@p\relax\multiply\b@char by 5\relax
  \ifnum\b@char>50\relax\b@char=50\relax\fi
  \edef\s@lope{-0.\the\b@char}\fi
}%
%\check
\def\p@outre{%    \y@ii : longueur,   \b@p : pente,  \y@i : altitude
\ifnum \b@p=0\relax
  \raise  \y@i\hbox{\vrule height 0.24\Interligne depth 0.24\Interligne
      width \y@ii}\else\b@alkdefs\beamnxx
  \global\y@iv=0pt
  \loop\ifdim\y@iv<\y@ii
    {\y@v=\y@ii\advance\y@v by -\y@iv
    \advance\y@v by -\q@antum
    \y@iii=\y@i
    \advance\y@iii by \s@lope\y@iv
    \ifdim\y@v<\z@\advance\y@iii by \s@lope\y@v\hskip\y@v\fi
    \raise\y@iii\hbox to \q@antum{\b@alk\hss}\global\advance\y@iv by \q@antum
    }\repeat
\fi
}%
%\check
\def\clefdefa{\hbox to 3.2\Interligne{\musicxx\kern -0.4\Interligne\char"49\hss
}}%
\def\smallclefdefa{\hbox to 2.8\Interligne{\musicxx\kern -0.32\Interligne
\char"4A\hss}}%
%\check
\def\clefdesol{\hbox to 3.2\Interligne{\musicxx\kern -0.6\Interligne
\char"47\hss}}%
\def\smallclefdesol{\hbox to 2.8\Interligne{\musicxx\kern -0.48\Interligne
\char"48\hss}}%
%\check
\def\clefdut{\hbox to 3.2\Interligne{\musicxx\kern -0.4\Interligne\char"4B\hss
}}%
\def\smallclefdut{\hbox to 2.8\Interligne{\musicxx\kern -0.32\Interligne
\char"4C\hss}}%
%
\def\allabreve{{\kern 0.5\Interligne\musicxx\char"52}}%
\def\meterC{{\kern 0.5\Interligne\musicxx\char"53}}%
%
\def\d@soup{\musicxx\char"3F}%
\def\q@soup{\musicxx\char"40}%
\def\p@orgue{\hbox{\kern -0.5\hn@width\musicxx\char"50}}%
\def\p@urgue{\hbox{\kern -0.5\hn@width\musicxx\char"51}}%
\def\trille#1{\hbox to #1{\leaders\hbox{\musicxx\char"64}\hfill}}%
\def\Trille#1{\hbox to #1{\it tr\leaders\hbox{\musicxx\char"64}\hfill}}%
%
%
% arpeges
%
\def\arpegesym#1{\hbox to \Interligne{\kern -1.2\Interligne
\vbox to #1{\parindent=\z@
\offinterlineskip\ifdim #1>4\Interligne\Arp@elem\fi\hrule
\cleaders\arp@elem\vfill\kern -\interligne}\hss}}%
\def\arp@elem{\vbox to \Interligne{\vss\musicxx\char"5A}}%
\def\Arp@elem{\vbox to 4\Interligne{\vss\musicxx\char"5D}}%
%
\def\arpeggio#1#2{\zcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax
\musicxx\chardef\arp@el=\n@iii\relax\arp@el}\qsk}%
\def\larpeggio#1#2{\lcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax
\musicxx\chardef\arp@el=\n@iii\relax\arp@el\kern -0.3\qn@width}\qsk}%
%
\def\mordant#1{\zcharnote{#1}{\musicxx\char 89}}%
\def\pince#1{\zcharnote{#1}{\musicxx\char 87}}%
\def\Pince#1{\zcharnote{#1}{\musicxx\char 88}}%
\def\sf#1{{\advance\transpose by -2\usf{#1}}}%
\def\pz#1{{\advance\transpose by -2\upz{#1}}}%
\def\ppz#1{\uppz{#1}}%
\def\st#1{{\advance\transpose by -2\ust{#1}}}%
%
\def\usf#1{\zcharnote{#1}{\musicxx\char 30}}%
\def\lsf#1{\zcharnote{#1}{\musicxx\char 31}}%
\def\ust#1{\zcharnote{#1}{\musicxx\char 26}}%
\def\lst#1{\zcharnote{#1}{\musicxx\char 27}}%
\def\upz#1{\zcharnote{#1}{\musicxx\char 24}}%
\def\lpz#1{\zcharnote{#1}{\musicxx\char 25}}%
\def\uppz#1{\zcharnote{#1}{\musicxx\char 28}}%
\def\lppz#1{\zcharnote{#1}{\musicxx\char 29}}%
%
% placement des accents au-dessus de poutres et non de tetes de notes
\def\acc@balk{\global\stem@skip=\z@  %
\y@ii=\b@z                     % a augmenter avec la pente
\y@v=\locx@skip\advance\y@v by \stem@skip\advance\y@v by -\b@x
\advance\y@ii by \s@lope\y@v
\advance\y@ii by -\altportee
\raise\y@ii\rlap{\kern\stem@skip\balk@accent}}%
%\check
\def\busf#1{\def\balk@accent{\musicxx\char 30}\selectpoutre{#1}\acc@balk}%
\def\blsf#1{\def\balk@accent{\musicxx\char 31}\selectpoutre{#1}\acc@balk}%
\def\bust#1{\def\balk@accent{\musicxx\char 26}\selectpoutre{#1}\acc@balk}%
\def\blst#1{\def\balk@accent{\musicxx\char 27}\selectpoutre{#1}\acc@balk}%
\def\bupz#1{\def\balk@accent{\musicxx\char 24}\selectpoutre{#1}\acc@balk}%
\def\blpz#1{\def\balk@accent{\musicxx\char 25}\selectpoutre{#1}\acc@balk}%
\def\buppz#1{\def\balk@accent{\musicxx\char 28}\selectpoutre{#1}\acc@balk}%
\def\blppz#1{\def\balk@accent{\musicxx\char 29}\selectpoutre{#1}\acc@balk}%
%
% soufflets crescendo et decrescendo
%
\def\dimin{{\musicxx\char"10}}%
\def\Dimin{{\musicxx\char"11}}%
\def\DImin{{\musicxx\char"12}}%
\def\DIMin{{\musicxx\char"13}}%
\def\cresc{{\musicxx\char"14}}%
\def\Cresc{{\musicxx\char"15}}%
\def\CResc{{\musicxx\char"16}}%
\def\CREsc{{\musicxx\char"17}}%
%
% colons for repeats (:| |: :||:)
%
%\check
\def\w@coli{\selectinstr{\p@loop 
  \raise\altportee\hbox to \z@{\hss\musicxx\char 126\hss}\n@portee\repeat}}%
%
\let\wlog=\@plainwlog
 
%
% This is MusicTeX - Version 4.4 -- January 1992
%
\catcode`\@=11
%  PARAMETERS DIFFERENT THAN IN PLAIN
%
\normallineskiplimit=1pt
\parindent 10mm
%
% EXTRA FONTS NEEDED
%
\font\enorme=\fonthdg mbx10 scaled \magstep5
\font\moyen=\fonthdg mbx10 scaled \magstep2
\font\tentt=\fonthdg mtt10
\font\ppff=\fonthdg mbxti10 scaled \magstep 1
%
\tolerance=10000\relax
%  procedures speciales D. taupin
\hsize 16cm \vsize 24cm
%
\let\@plainwlog=\wlog
\def\wlog#1{}%
%
%\check
\catcode`\&=13
\catcode`\|=13
%
\raggedbottom
\def\p@t{\kern 1.5pt\cmbx\char"2E}%
\def\P@t{\pt@raise\hbox{\p@t}}%
\def\PP@t{\pt@raise\hbox{\p@t\char"2E}}%
\def\PPP@t{\pt@raise\hbox{\p@t\char"2E\char"2E}}%
%
%\check
%
\def\f@tok#1#2\af@tok{#1}%
\def\s@tok#1#2\af@tok{#2}%
%
\def\gl@au#1{\ifnum #1<0\relax\global\advance #1 by -1\relax\fi
                 \ifnum #1>0\relax\global\advance #1 by 1\relax\fi}%
\def\gl@de#1{\ifnum #1<0\relax\global\advance #1 by 1\relax\fi
                 \ifnum #1>0\relax\global\advance #1 by -1\relax\fi}%
%
%
\newdimen\brace@w
\newdimen\afterruleskip
\newdimen\pt@up % offset point de notes pointees
\newdimen\noteskip
\newdimen\elemskip
\newdimen\q@antum
\newdimen\n@raise
\newdimen\n@width
\newdimen\stem@skip
\newdimen\interligne % entre les lignes
\newdimen\nullthick % pour les parties sans portees (paroles)
\newdimen\bottommargin % marge au-dessous des portees
\newdimen\topmargin % au-dessus des portees
\newdimen\total@margin % bottom+top margins
\newdimen\internote % la moitie de \Interligne
\newdimen\interbeam % distance entre poutres
\newdimen\Interligne % de la base d'une ligne a l'autre
\newdimen\interportee % distance between staffs of the same instrument
\newdimen\interinstrument % distance between instruments (added to \interportee)
\newdimen\systemheight
%
\newdimen\k@ii
\newdimen\k@iii
\newdimen\k@iiii
\newdimen\k@iiv
\newdimen\k@iv
\newdimen\k@ivi
\newdimen\altplancher
\newdimen\altportee
\newdimen\line@width
\newdimen\x@skip
\newdimen\locx@skip
\newdimen\st@bot  %  note stem bottom
\newdimen\st@top     %  note stem top
%
% positions x et z de debut des tenues
\newdimen\t@xi\newdimen\t@zi
\newdimen\t@xii\newdimen\t@zii
\newdimen\t@xiii\newdimen\t@ziii
\newdimen\t@xiv\newdimen\t@ziv
\newdimen\t@xv\newdimen\t@zv
\newdimen\t@xvi\newdimen\t@zvi
%
% signes des tenues ( \t@p: entier de -1 a +1 )
% etat des tenues ( \t@s: 0= inactive, 1= actif, 2= continuation )
%
\newcount\t@pi\newcount\t@si
\newcount\t@pii\newcount\t@sii
\newcount\t@piii\newcount\t@siii
\newcount\t@piv\newcount\t@siv
\newcount\t@pv\newcount\t@sv
\newcount\t@pvi\newcount\t@svi
%
% positions x et z de debut des poutres
\newdimen\b@xi\newdimen\b@zi
\newdimen\b@xii\newdimen\b@zii
\newdimen\b@xiii\newdimen\b@ziii
\newdimen\b@xiv\newdimen\b@ziv
\newdimen\b@xv\newdimen\b@zv
\newdimen\b@xvi\newdimen\b@zvi
%
\newdimen\bb@xi\newdimen\bb@zi
\newdimen\bb@xii\newdimen\bb@zii
\newdimen\bb@xiii\newdimen\bb@ziii
\newdimen\bb@xiv\newdimen\bb@ziv
\newdimen\bb@xv\newdimen\bb@zv
\newdimen\bb@xvi\newdimen\bb@zvi
%
\newdimen\bbb@xi\newdimen\bbb@zi
\newdimen\bbb@xii\newdimen\bbb@zii
\newdimen\bbb@xiii\newdimen\bbb@ziii
\newdimen\bbb@xiv\newdimen\bbb@ziv
\newdimen\bbb@xv\newdimen\bbb@zv
\newdimen\bbb@xvi\newdimen\bbb@zvi
%
\newdimen\bbbb@xi\newdimen\bbbb@zi
\newdimen\bbbb@xii\newdimen\bbbb@zii
\newdimen\bbbb@xiii\newdimen\bbbb@ziii
\newdimen\bbbb@xiv\newdimen\bbbb@ziv
\newdimen\bbbb@xv\newdimen\bbbb@zv
\newdimen\bbbb@xvi\newdimen\bbbb@zvi
%
% pentes des poutres ( entier de -3 a +3 )
% multiplicite des poutres ( de -4 a +4 .   0= inactive )
%
\newcount\b@pi\newcount\b@ni
\newcount\b@pii\newcount\b@nii
\newcount\b@piii\newcount\b@niii
\newcount\b@piv\newcount\b@niv
\newcount\b@pv\newcount\b@nv
\newcount\b@pvi\newcount\b@nvi
%
\newif\ifraggedlines
%
\newcount\barno
\newcount\lastbarno
\newcount\notes@open
\def\check@nopen{\ifnum\notes@open>0\relax\enotes\message{ missing
 \noexpand\enotes\ mesure \the\barno}\fi}%
%
% altitudes des portees de chaque instrument
%
\newcount\ut@ref
\newcount\noportee
\newcount\noinstrument
%
\newcount\nbporteesi
\newcount\nbporteesii
\newcount\nbporteesiii
\newcount\nbporteesiv
\newcount\nbporteesv
\newcount\nbporteesvi
%
\newcount\signi
\newcount\signii
\newcount\signiii
\newcount\signiv
\newcount\signv
\newcount\signvi
%
\newif\ifadvance\advancetrue
\newcount\transpose
\newcount\normaltranspose
\newcount\o@signi
\newcount\o@signii
\newcount\o@signiii
\newcount\o@signiv
\newcount\o@signv
\newcount\o@signvi
%
\newtoks\cleftoksi
\newtoks\cleftoksii
\newtoks\cleftoksiii
\newtoks\cleftoksiv
\newtoks\cleftoksv
\newtoks\cleftoksvi
%
\newtoks\o@cksi
\newtoks\o@cksii
\newtoks\o@cksiii
\newtoks\o@cksiv
\newtoks\o@cksv
\newtoks\o@cksvi
%
\newtoks\metertoksi
\newtoks\metertoksii
\newtoks\metertoksiii
\newtoks\metertoksiv
\newtoks\metertoksv
\newtoks\metertoksvi
%
\global\nbporteesi=1%
\global\nbporteesii=1%
\global\nbporteesiii=1%
\global\nbporteesiv=1%
\global\nbporteesv=1%
\global\nbporteesvi=1%
\global\cleftoksi={{0}{0}{0}{0}}%
\global\cleftoksii={{0}{0}{0}{0}}%
\global\cleftoksiii={{0}{0}{0}{0}}%
\global\cleftoksiv={{0}{0}{0}{0}}%
\global\cleftoksv={{0}{0}{0}{0}}%
\global\cleftoksvi={{0}{0}{0}{0}}%
%
%\check
%
\def\n@advance{\global\advance\noinstrument by 1\relax}%
\def\n@loop{\global\noinstrument=0\relax\loop
  \ifnum\noinstrument<\nbinstruments\relax\n@advance
  \selectinstr}%
%
\def\savemeters{\savemeter}%
\def\savemeter{\n@loop\global\metertoks={{}{}{}{}}\repeat}%
%\check
\def\maxinstruments{6}%
%
\def\selectinstr{%
\xdef\altitude{\csname k@i\romannumeral\noinstrument\endcsname}%
\xdef\nbportees{\csname nbportees\romannumeral\noinstrument\endcsname}%
\xdef\sign{\csname sign\romannumeral\noinstrument\endcsname}%
\xdef\o@sign{\csname o@sign\romannumeral\noinstrument\endcsname}%
\xdef\cleftoks{\csname cleftoks\romannumeral\noinstrument\endcsname}%
\xdef\metertoks{\csname metertoks\romannumeral\noinstrument\endcsname}%
\xdef\o@cks{\csname o@cks\romannumeral\noinstrument\endcsname}%
}
%\check
\def\nbinstruments{\maxinstruments}\savemeter
\def\nbinstruments{\undefined}%
%
% compteurs de travail
%
\newcount\n@i
\newcount\n@ii
\newcount\n@iii
%
% registres de travail
%
\newbox\toks@box
\newbox\workbox
\newbox\n@otebox
%
\newdimen\clef@skip
\newdimen\sign@skip
%
\newdimen\y@
\newdimen\y@i
\newdimen\y@ii
\newdimen\y@iii
\newdimen\y@iv
\newdimen\y@v
%
\newtoks\arg@suite
%
% fabrique un jeu complet (ou systeme complet de portees)
% en fonction de \nbinstruments
\def\null@portee{\global\advance\y@ by \nullthick
    \ifdim\systemheight>0.1pt\global\advance\systemheight by \nullthick
    \else
     \global\advance\altplancher by \nullthick
    \fi
}%
%
%\check
%
\def\mult@portee{\y@ii=\nbportees\interportee
    \advance\y@ii by -\interportee\advance\y@ii by 4\Interligne
    \advance\y@ii by \nbportees\lthick
    \advance\y@ii by -\lthick
 \raise\y@\llap{\cmex\raise 8pt\rlap{\char'072}\raise\y@ii\rlap{\char
'070}\divide\y@ii by 2\relax{\advance\y@ii by 8pt\raise\y@ii\rlap{\char
'074}}\y@v=\y@ii\relax\advance\y@v by -12pt
    \raise 7pt\rlap{\kern 3.8pt\vrule height \y@v width 1.2pt}\advance\y@ii
	by 7pt \raise \y@ii\rlap{\kern 3.8pt\vrule height \y@v width 1.2pt}\kern
	7.5pt}}%
%
%\check
%
\def\n@portee{\global\advance\noportee by 1\relax}%
\def\p@loop{\global\noportee=0\relax
   \loop\ifnum\noportee<\nbportees\relax\alt@comp}%
%
%\check
%
\def\alt@comp{\altportee=\altitude
  \advance\altportee by \noportee\interportee}%
%
\def\portees{\rlap{\global\y@=\bottommargin
\total@margin=\bottommargin
\advance\total@margin by \topmargin
%
\global\systemheight=\z@
\global\altplancher=\y@
\n@loop
  \global\noportee=0\relax
  \global\altitude=\y@
%
  \ifnum\nbportees=0\relax
     \null@portee
  \else
    \ifnum\nbportees>1\relax
      \mult@portee
    \fi
    {\loop \raise\y@\portee
      \n@portee \global\advance\y@ by \interportee
	  \global\advance\systemheight by \interportee
	  \ifnum\noportee<\nbportees
     \repeat}\fi % fin du \else pour 0 portees=chant
  \ifnum\noinstrument<\nbinstruments   
    \xdef\interinstrum{\csname interinstrument\romannumeral\noinstrument
                     \endcsname}%
    \expandafter\ifx\interinstrum\relax\xdef\interinstrum{\interinstrument}\fi
    \global\advance\systemheight by \interinstrum
    \global\advance\y@ by \interinstrum
  \fi  
\repeat
%\global\advance\systemheight by -\interinstrum   
\global\advance\systemheight by -\interportee
\global\advance\systemheight by 4\Interligne
\global\advance\systemheight by 0.5\lthick
%
\raise\altplancher\rlap{\vrule height \systemheight depth 0.5\lthick}%
\raise \total@margin\hbox{\vrule height \systemheight width \z@ depth
 0.5\lthick}}% fin de la \hbox
}%
%
%\check
% portee simple
\def\staffline{\hrule width \line@width height 0.5\lthick depth 0.5\lthick}
\def\portee{\rlap{\vbox to \z@ {\vss\staffline
\kern\interligne\staffline
\kern\interligne\staffline
\kern\interligne\staffline
\kern\interligne\staffline\kern -0.5\lthick
}}}%
%\check
%
% initialisations des dimensions etc...
%
%*************** definition des titres des instruments
% ***********************
%
\def\instrumenti{}%
\def\instrumentii{}%
\def\instrumentiii{}%
\def\instrumentiv{}%
\def\instrumentv{}%
\def\instrumentvi{}%
%\check
%
\def\maxlegatenuti{6}%
%
\def\resettens{\resetlegs}%
\newcount\n@l
\def\resetlegs{\global\n@l=0\relax
  \loop\ifnum\n@l<\maxlegatenuti\relax
  \selecttenue{\n@l}\t@p=0\relax\t@s=0\relax
  \global\advance\n@l by 1\relax
  \repeat}%
%
%\check
%
\def\piece@begina{\barno=1\relax\global\barsinline=0\relax
\frenchspacing\def\barvrule{\thinvrule}\resetlegs
\savesignature\computewidths}%
%
\def\debutmorceau{\leavevmode\piece@begina
\advance\line@width by -\parindent
\portees\instrumentnames
\advance\line@width by \parindent
\piece@beginb\setnormalhyphen}%
%
\def\piece@beginb{\writeclefs\everystaff
\writesignatures\writemeters
\save@all\currenthyphenpenalty}%
%
\def\save@all{\saveclefs\savesignature\savemeters}%
%
\def\debutextrait{\piece@begina
\setbox\workbox=\hbox{\portees}% to compute heights
\setbox\workbox=\hbox\bgroup
\def\barre{\xbarre}\piece@beginb}%
%\check
\def\finextrait{\def\z@suspend{}\suspmorceau\egroup
\line@width=\wd\workbox
\centerline{\instrumentnames\portees\unhbox\workbox}}%
%
% saving penalties to be able to restore them at the end of music
%
\def\savepenalties{\edef\restorepenalties{%
\noexpand\linepenalty=\the\linepenalty\noexpand\relax
\noexpand\interlinepenalty=\the\interlinepenalty\noexpand\relax
\noexpand\hyphenpenalty=\the\hyphenpenalty\noexpand\relax
\noexpand\exhyphenpenalty=\the\exhyphenpenalty\noexpand\relax
\noexpand\finalhyphendemerits=\the\finalhyphendemerits\noexpand\relax
\noexpand\doublehyphendemerits=\the\doublehyphendemerits\noexpand\relax
\noexpand\adjdemerits=\the\adjdemerits\noexpand\relax
\noexpand\pretolerance=\the\pretolerance\noexpand\relax
}}%
%\check
\def\computewidths{\interportee=\interfacteur\Interligne
\computespecifics
\ifdim\topmargin<1pt \topmargin=\topfacteur\Interligne\fi
\ifdim\bottommargin<1pt \bottommargin=\bottomfacteur\Interligne\fi
\global\interligne=\Interligne
\global\internote=0.5\Interligne
\global\interbeam=1.5\internote
\ifdim\nullthick<1pt \global\nullthick=4\Interligne\fi
\global\advance\interligne by -\lthick
%
\zglueskip=\z@  plus \gluemaxskip
\afterruleskip=4\internote
\global\line@width=\hsize}%
%\check
%
\def\n@alaligne{\suspmorceau\lreprmorceau}%
\def\n@zalaligne{\zsuspmorceau\lreprmorceau}%
\def\lreprmorceau{\reprmorceau}%
\def\suspmorceau{\check@nopen\gluebrule\newbar\z@suspend}%
\def\zsuspmorceau{\check@nopen\termskip\rtenuti\z@suspend}%
\def\z@suspend{\ifraggedlines\hfil\fi
  \break\adv@bottom\par\removelastskip
\vskip -\baselineskip}%
\def\alapage{\suspmorceau\preprmorceau}%
\def\zalapage{\zsuspmorceau\preprmorceau}%
\def\preprmorceau{\eject\global\linesinpage=0\relax\reprmorceau}%
\def\reprmorceau{\atnextline\computewidths\noindent\leavevmode
\global\barsinline=0\relax{\advance\linesinpage by 1\relax\message{Line \the
\linesinpage:}}\relax
\adv@bottom\portees\writeclefs\raise \internote\hbox{\wbarno}\everystaff
\writesignatures\writemeters\zgluearule
\save@all\currenthyphenpenalty\def\atnextline{}}%
%
\def\everystaff{}\def\atnextline{}%
%\check
%
\def\resetsignatures{\generalsignature{0}\savesignature}%
%
\def\savesignature{\n@loop\o@sign=\sign\repeat}%
%\check
\def\saveclefs{\n@loop\global\o@cks=\cleftoks\repeat}
%\check
%
% definitions en fonction du numero de l'instriment
%
\newskip\zglueskip
%
\def\meterfrac#1#2{\setbox\workbox=\vbox{\hbox{\ \meterfont
 #1}\hbox{\ \meterfont #2}}%
\vbox to 4\Interligne{\offinterlineskip\vss\hbox to \wd\workbox{\hss
\meterfont #1\hss}\vss
\vss\hbox to \wd\workbox{\hss\meterfont #2\hss}\vss}}%
%\check
\newtoks\t@gene
\def\generalmeter#1{\t@gene={{#1}{#1}{#1}{#1}}\n@loop
\global\metertoks=\t@gene\repeat}%
%\check
\def\signaturegenerale{\generalsignature}%
\def\generalsignature#1{\n@loop\sign=#1\relax\repeat}%
%
% compteurs de travail
%
% a completer pour fermer les poutres
\def\zglu{\zglue}%
\def\zglue{\nobreak\hskip \zglueskip   \nobreak}%
%
\def\temps{\nobreak\global\advance\n@skip by -\brace@w\termskip\nobreak
\skip@b\nobreak\zglu}%
\def\z@barre{\nobreak\global\advance\n@skip by -\brace@w\termskip\nobreak
\skip@b\-\hskip\zglueskip\nobreak}%
\def\xz@barre{\nobreak\global\advance\n@skip by -\brace@w\termskip\nobreak
\skip@b\hskip\zglueskip\nobreak}%
%
\def\newbar{\barvrule\def\barvrule{\thinvrule}\global\advance\barno by 1\relax
  \message{bar \the\barno}}%
\def\w@barno{\global\n@iii=\barno\global\divide\n@iii by \freqbarno
\ifnum\n@iii=\lastbarno\relax
\else{\y@i=\altplancher\advance\y@i by \systemheight
\advance\y@i by \internote\raise\y@i\llap{\it \number\barno
   \kern -6pt}}\fi\global\lastbarno=\n@iii
}%
\def\freqbarno{1}\def\wbarno{\w@barno}%
%
% discretionary line breaking
%
\def\noautolines{\def\barre{\n@barre}\def\zbarre{\z@barre}%
\def\alaligne{\c@ountline\n@alaligne}\def\zalaligne{\n@zalaligne}%
\def\currenthyphenpenalty{\setnohyphenpenalty}%
\def\updatecontext{\n@updatecon}%
\def\leftrepeat{\n@leftrepeat}%
\def\leftrightrepeat{\n@leftrightrepeat}%
\setnohyphenpenalty}%
%
\def\setnohyphenpenalty{\linepenalty=500\pretolerance=-1%
\finalhyphendemerits=-10\hyphenpenalty=-10%
\exhyphenpenalty=0\doublehyphendemerits=0%
\adjdemerits=0\interlinepenalty=0}%
%
\def\sethyphenpenalty{\linepenalty=500\pretolerance=-1%
\finalhyphendemerits=1000\hyphenpenalty=1000%
\exhyphenpenalty=0\doublehyphendemerits=0%
\adjdemerits=0\interlinepenalty=1000}%
%
\newcount\barsinline
\newcount\linesinpage
\newcount\maxbarsinline
\newcount\maxlinesinpage
\def\c@ountbar{\global\advance\barsinline by 1\relax}%
\def\c@ountline{\global\advance\linesinpage by 1\relax}%
%
\def\autolines#1#2#3{% #1 nombre d'elemskip par mesure,
%                      #2 nombre de mesures par ligne,
%                      #3 nb lignes par page
\global\maxbarsinline=#2\relax
\global\maxlinesinpage=#3\relax
\global\elemskip=\line@width\global\advance\elemskip by -5\Interligne
\global\divide\elemskip by \maxbarsinline\relax
\global\advance\elemskip by -3\Interligne\global\divide\elemskip by #1\relax
\def\barre{\t@barre}\def\updatecontext{\t@updatecon}\def\zbarre{\t@zbarre}%
\def\alaligne{\t@alaligne}\def\zalaligne{\t@zalaligne}%
\def\leftrepeat{\t@leftrepeat}%
\def\leftrightrepeat{\t@leftrightrepeat}%
\def\currenthyphpenalsty{\sethyphenpenalty}\sethyphenpenalty}%
%
\def\t@barre{\c@ountbar
\ifnum\barsinline<\maxbarsinline\relax\x@barre
\else\t@alaligne
\fi}%
\def\t@zbarre{\c@ountbar
\ifnum\barsinline<\maxbarsinline\relax\xz@barre
\else\t@zalaligne
\fi}%
%
\def\t@alaligne{\c@ountline
\ifnum\linesinpage<\maxlinesinpage\relax\n@alaligne
\else\alapage
\fi}%
\def\t@zalaligne{\c@ountline
\ifnum\linesinpage<\maxlinesinpage\relax\n@zalaligne
\else\zalapage
\fi}%
%
\def\Suspmorceau{\c@ountline\finmorceau
 \ifnum\linesinpage<\maxlinesinpage\relax\else\eject
 \global\linesinpage=0\relax\fi}%
%
%
\def\tz@barre{\c@ountbar
\ifnum\barsinline<\maxbarsinline\relax\z@barre
\else
 \c@ountline
 \ifnum\linesinpage<\maxlinesinpage\relax\zalaligne
 \global\advance\linesinpage by -1\relax % car \alaligne aura aussi augmente
 \message{ line: \the\linesinpage }%
 \else\zalapage
\fi\fi}%
%
\def\t@updatecon{\c@ountbar
  \ifnum\barsinline<\maxbarsinline\relax\x@updatecon
\else
 \c@ountline
 \ifnum\linesinpage<\maxlinesinpage\l@updatecon
 \message{ line: \the\linesinpage }%
 \else\p@updatecon
\fi\fi}%
%\check
%
\noautolines
%
\def\n@barre{\gluebrule\newbar\gluearule}%   barre de mesure
\def\xbarre{\c@ountbar\x@barre}
\def\x@barre{\gluebrule\newbar\zgluearule}%  barre de mesure
                                          % sans possibilite de saut
%
\def\d@oubleBAR{\thinvrule\nobreak\hskip 0.3\Interligne
\nobreak\thickvrule}%
%
\def\d@oublebar{\thinvrule\nobreak\hskip 0.4\Interligne
\nobreak\thinvrule}%
%
\def\r@ightrepeat{\hbox{\w@colons\d@oubleBAR}}
\def\l@eftrepeat{\hbox{\thickvrule\kern 0.3\Interligne\thinvrule\w@colons}}
\def\l@eftrightrepeat{\hbox{\w@colons\thickvrule
    \kern 0.3\Interligne\thickvrule\w@colons}}
%
%\check
%
\def\leftrightrepeatsymbol{\gluebrule\l@eftrightrepeat\glueaftersymbol}
\def\glueaftersymbol{{\def\wbarno{}\afterruleskip=\internote\zgluearule}}%
\def\leftrepeatsymbol{\gluebrule\l@eftrepeat\glueaftersymbol}%
\def\rightrepeatsymbol{\gluebrule\r@ightrepeat\glueaftersymbol}%
%
%\check
%
\def\doublebarre{\setdoublebar\barre}% double barre de mesure
\def\setdoublebar{\def\barvrule{\d@oublebar}}%
\def\setdoubleBAR{\def\barvrule{\d@oubleBAR}}%
\def\rightrepeat{\setrightrepeat\barre}%
\def\finrigthrepeat{\setrightrepeat\suspmorceau}%
%
\def\setrightrepeat{\def\barvrule{\r@ightrepeat}}%
\def\setleftrepeat{\def\barvrule{\l@eftrepeat}}%
\def\setleftrightrepeat{\def\barvrule{\l@eftrightrepeat}}%
%
\def\think@vrule#1{\raise\altplancher\hbox{\vrule height\systemheight width
 #1 depth 0.5\lthick}}%
%
\def\thinvrule{\think@vrule{\lthick}}%
\def\thickvrule{\think@vrule{0.6\Interligne}}%
%
\def\finmorceau{\setdoubleBAR\suspmorceau}%
%\check
%
\def\gluearule{\-\zgluearule}%
\def\zgluearule{\nobreak\wbarno\ygluearule}%
\def\ygluearule{\nobreak\kern \afterruleskip\nobreak
\kern -\brace@w\rtenuti\kern\brace@w\nobreak
\global\x@skip=\z@\global\n@skip=\z@}%
\def\termskip{\upd@sk\ctenuti\nobreak
\global\n@skip=\z@\global\x@skip=\z@}%
%
\def\gluebrule{\nobreak\global\advance\x@skip by 0.4\Interligne\termskip
   \hskip\zglueskip\rtenuti\nobreak}%
%
\def\writesignatures{\global\sign@skip=\z@
\w@ritesigns
\global\advance\sign@skip by 0.2\Interligne \nobreak\hskip\sign@skip
}%
\def\Writesignatures{\global\sign@skip=\z@
\w@ritesigns
\nobreak\advance\sign@skip by 0.6\Interligne\kern\sign@skip\nobreak}%
%
\def\w@ritesigns{\n@loop\writesigni\repeat}%
%
%\check
\def\instrumentnames{\n@loop\writeinsname\repeat}%
%
%\check
\def\writenewsignatures{\global\sign@skip=\z@
  \n@loop\writenewsigni\repeat
  \nobreak\ifdim\sign@skip>0.1pt\global\advance\sign@skip by 0.6\Interligne
  \nobreak\global\n@skip=\sign@skip\termskip
  \fi
  \nobreak}%
%
%\check
%
% normal hyphenation process when \noautolines
%
\def\setnormalhyphen{\edef\-{\noexpand\discretionary{}%
%\check 2
{\noexpand\hbox{\noexpand\portees\noexpand\writeclefs
\noexpand\everystaff}%
\noexpand\hbox{\noexpand\writesignatures}%
}%
%\check 2
{}}}%   fin du def \setnormalhyphen
%\check
%    ecrire toutes les indications de mesure sur toutes les portees
\def\writemeters{\global\n@skip=\z@
\n@loop\writemeteri\repeat\nobreak
\ifdim\n@skip>\z@\advance\n@skip by 0.6\Interligne
  \global\n@skip=\n@skip\termskip
\fi\nobreak}%
%
%\check
\def\writemeteri{\nobreak\selectinstr{\p@loop
 \edef\w@call{\noexpand\writemeterp{\noexpand\noportee}\the\metertoks}\relax
  \setbox\toks@box=\hbox{\w@call{}{}{}{}}\relax
  \ifdim\n@skip<\wd\toks@box\global\n@skip=\wd\toks@box\fi
  \raise\altportee\rlap {\box\toks@box}\n@portee
  \repeat}}%
%\check
\def\writeclefs{%    ecrire toutes les clefs sur toutes les portees
\global\clef@skip=\z@
\w@riteclefs
\kern\clef@skip}%
%
\def\w@riteclefs{\n@loop\writeclefi\repeat}%
%
%\check
\def\writenewclefs{% ecrire toutes les nouvelles clefs sur toutes les
% portees
\global\clef@skip=\z@
\w@ritenewclefi
\kern\clef@skip\nobreak}%
%
\def\w@ritenewclefi{\n@loop\writenewclefi\repeat}%
%
%\check
\def\writesigni{\selectinstr\def\o@test{999}\w@ritenewsigni}%
\def\writenewsigni{\selectinstr\def\o@test{\o@sign}\w@ritenewsigni}%
\def\w@ritenewsigni{{\p@loop
  \n@portee
  \ifnum\o@test=\sign\relax\else
    \edef\get@ref{\noexpand\get@refs\the\cleftoks{}{}{}{}}%
    \setbox\toks@box=\hbox{\kern 0.2\Interligne\get@ref\compnwsign
         \kern 0.2\Interligne}%
    \ifdim\sign@skip<\wd\toks@box \global\sign@skip=\wd\toks@box\fi
    \raise\altportee\rlap{\box\toks@box}%
  \fi
\repeat}%
}%
%\check
\def\writeinsname{\selectinstr
\xdef\instrument{\csname instrument\romannumeral
\noinstrument\endcsname}%
\altportee=\altitude
\ifnum\nbportees>0\relax\advance\altportee by \nbportees\interportee
  \advance\altportee by -\interportee\advance\altportee by 4\Interligne
  \advance\altportee by \altitude\divide\altportee by 2\relax
\fi
 \setbox\n@otebox=\llap{\vbox{\hsize=\parindent\advance\hsize by
 -0.4\Interligne \centerline{\instrument}}\
  \kern 2pt}\advance\altportee by -0.5\ht\n@otebox
  \raise\altportee\box\n@otebox
}%
%\check
\def\get@refs#1#2#3#4{%   #1-#4: cle correspondante 0=sol, 6=fa, 1-4=ut  .
\ifcase\noportee\relax\global\ut@ref=0\relax
\or\global\ut@ref=#1\relax
\or\global\ut@ref=#2\relax
\or\global\ut@ref=#3\relax
\or\global\ut@ref=#4\relax
\fi}
\def\compnwsign{\ifnum\o@sign=0\relax
                \else\ifnum\sign=0\relax
                     \else\kern 0.2\Interligne
                     \fi
                \fi
   \ifnum\o@sign<0\relax\w@flats\w@sharps
   \else\w@sharps\w@flats
   \fi}%
%
%\check
\def\w@flats{%
\ifnum\sign<0\relax\s@bemol{6}\else\ifnum\o@sign<0\relax\s@becarre{6}\fi\fi
\ifnum\sign<-1\relax\s@bemol{9}\else\ifnum\o@sign<-1\relax\s@becarre{9}\fi
\fi
\ifnum\sign<-2\relax\s@bemol{5}\else\ifnum\o@sign<-2\relax\s@becarre{5}\fi
\fi
\ifnum\sign<-3\relax\s@bemol{8}\else\ifnum\o@sign<-3\relax\s@becarre{8}\fi
\fi
\ifnum\sign<-4\relax\s@bemol{4}\else\ifnum\o@sign<-4\relax\s@becarre{4}\fi
\fi
\ifnum\sign<-5\relax\s@bemol{7}\else\ifnum\o@sign<-5\relax\s@becarre{7}\fi
\fi
\ifnum\sign<-6\relax\s@bemol{3}\else\ifnum\o@sign<-6\relax\s@becarre{3}\fi
\fi
}%
%\check
\def\w@sharps{%
\ifnum\sign>0\relax\s@dieze{10}\else\ifnum\o@sign>0\relax\s@becarre{10}\fi
\fi
\ifnum\sign>1\relax\s@dieze{7}\else\ifnum\o@sign>1\relax\s@becarre{7}\fi\fi
\ifnum\sign>2\relax\s@dieze{11}\else\ifnum\o@sign>2\relax\s@becarre{11}\fi
\fi
\ifnum\sign>3\relax\s@dieze{8}\else\ifnum\o@sign>3\relax\s@becarre{8}\fi\fi
\ifnum\sign>4\relax\s@dieze{5}\else\ifnum\o@sign>4\relax\s@becarre{5}\fi\fi
\ifnum\sign>5\relax\s@dieze{9}\else\ifnum\o@sign>5\relax\s@becarre{9}\fi\fi
\ifnum\sign>6\relax\s@dieze{6}\else\ifnum\o@sign>6\relax\s@becarre{6}\fi\fi
}%
%\check
\def\s@bemol#1{\global\n@iii=#1\relax
 \p@bedieze\advance\y@iii by \fl@raise\raise\y@iii\hbox to
 1.04\Interligne{\hss\f@lat\hss}%
}%
\def\s@becarre#1{\global\n@iii=#1\relax
 \p@bedieze\advance\y@iii by \na@raise\raise\y@iii\hbox to
 1.04\Interligne{\hss\n@at\hss}%
}%
\def\s@dieze#1{\global\n@iii=#1\relax
 \p@bedieze\advance\y@iii by \sh@raise\raise\y@iii\hbox to
 1.08\Interligne{\hss\s@harp\hss}%
}%
%
\def\p@bedieze{\global\advance\n@iii by \ut@ref\relax
   \global\advance\n@iii by \ut@ref\relax
%   cas de la cle de fa
   \ifnum\ut@ref=6\global\advance\n@iii by -14\relax\else
   \ifnum\ut@ref>0\global\advance\n@iii by -7\relax\fi\fi
   \ifnum\n@iii<1\relax\global\advance\n@iii by 7\relax\fi
   \ifnum\n@iii<1\relax\global\advance\n@iii by 7\relax\fi
   \ifnum\n@iii>11\relax\global\advance\n@iii by -7\relax\fi
   \ifnum\n@iii>11\relax\global\advance\n@iii by -7\relax\fi
   \y@iii=\n@iii\internote
   \advance\y@iii by -\Interligne
}
%\check
%
%\check
%
\def\writeclefp#1#2#3#4#5{%
\n@i=#1\relax
\ifcase\n@i\singleclef{#2}%
\or\singleclef{#3}\or\singleclef{#4}\or\singleclef{#5}\fi
}%
%
%\check
\def\writemeterp#1#2#3#4#5{%
\n@i=#1\relax
\ifcase\n@i\hbox{#2}\or\hbox{#3}\or\hbox{#4}\or\hbox{#5}\fi
}%
%
%\check
\def\writenewclefp#1#2#3#4#5#6#7#8#9{%
\n@i=#1\relax
\ifcase\n@i\newsingleclef{#2}{#6}%
\or\newsingleclef{#3}{#7}\or\newsingleclef{#4}{#8}\or
\newsingleclef{#5}{#9}\fi
}%
%\check
%
\def\singleclef#1{%
\global\n@iii=#1\relax
\charclef
}%
%\check
%
\def\Clefdut{\global\advance\n@iii by -3\relax\raise\n@iii\Interligne\clefdut}%
\def\Clefdefa{\global\advance\n@iii by -6\relax\raise\n@iii\Interligne\clefdefa
}%
\def\charclef{%
\ifdim\clef@skip<2.4\Interligne\global\clef@skip=2.4\Interligne\fi
\ifcase\n@iii\relax\clefdesol\relax
\or{\Clefdut}%
\or{\Clefdut}%
\or{\Clefdut}%
\or{\Clefdut}%
\or{\Clefdefa}%
\or{\Clefdefa}%
\fi}%
%\check
%
\def\smallClefdut{\global\advance\n@iii by -3\relax\raise\n@iii
\Interligne\smallclefdut}%
\def\smallClefdefa{\global\advance\n@iii by -6\relax\raise\n@iii
\Interligne\smallclefdefa}%
\def\smallcharclef{%
\ifdim\clef@skip<2.4\Interligne\global\clef@skip=2.4\Interligne\fi
\ifcase\n@iii\relax\smallclefdesol\relax
\or{\smallClefdut}%
\or{\smallClefdut}%
\or{\smallClefdut}%
\or{\smallClefdut}%
\or{\smallClefdefa}%
\or{\smallClefdefa}%
\fi}%
%\check
\def\newsingleclef#1#2{%
\global\n@iii=#1\relax
\n@ii=#2\relax
\ifnum\n@ii=\n@iii\relax\else\smallcharclef
\fi}%
%\check
\def\writeclefi{\selectinstr
{\p@loop
  \edef\w@call{\noexpand\writeclefp{\noexpand\noportee}\the\cleftoks}%
  \setbox\toks@box=\hbox{\w@call{}{}{}{}}%
  \ifdim\clef@skip<\wd\toks@box \global\clef@skip=\wd\toks@box\fi
  \raise\altportee\rlap{\box\toks@box}\n@portee
  \repeat}%
}%
%\check
\def\writenewclefi{\selectinstr{\p@loop
 \edef\w@call{\noexpand\writenewclefp{\noexpand\noportee}\the\cleftoks\the
\o@cks}%
\setbox\toks@box=\hbox{\w@call{}{}{}{}}%
\ifdim\clef@skip<\wd\toks@box \global\clef@skip=\wd\toks@box\fi
  \raise\altportee\rlap{\box\toks@box}\n@portee\repeat}%
}%
%\check
% minuscule: une seule barre
% majuscule: double barre
\def\changecontexte{\changecontext}%
\def\Changecontexte{\Changecontext}%
%
\def\changecontext{\gluebrule\newbar\nobreak\updatecontext}%
\def\pchangecontext{\gluebrule\newbar\nobreak\p@updatecon}%
%\check
\def\Changecontext{\setdoublebar\changecontext}%
\def\pChangecontext{\setdoublebar\pchangecontext}%
%
% write colons on all staffs (a part of [left][right]repeat symbols
%
\def\wrcolons{\w@colons}%
\def\w@colons{\nobreak\hskip 0.4\Interligne\nobreak
  \n@loop \w@coli\repeat
  \nobreak\hskip 0.4\Interligne\nobreak}%
%
%\check
%
\def\n@updatecon{%  imprime tout ce qui est nouveau
\nobreak\writenewclefs
\nobreak\writenewsignatures\nobreak\setnormalhyphen\-\writemeters\zgluearule
\save@all}%
%
\def\x@updatecon{%  imprime tout ce qui est nouveau
\nobreak\writenewclefs\nobreak\wbarno
\nobreak\writenewsignatures\nobreak\writemeters\ygluearule
\save@all}%
%
\def\l@updatecon{\nobreak\writenewclefs\nobreak\writenewsignatures
\z@suspend\reprmorceau}%
%
\def\p@updatecon{\nobreak\writenewclefs\nobreak\writenewsignatures
\z@suspend\preprmorceau}%
%
%\check
%
\def\n@leftrepeat{\gluebrule
\nobreak\writenewclefs
\discretionary{\newbar}%
%\check 1
{\hbox{\portees\writeclefs\everystaff\Writesignatures}%
\l@eftrepeat\hbox{\writemeters}}%
%\check 1
{\l@eftrepeat}\nobreak\writemeters\zgluearule
\save@all\setnormalhyphen}%
%
%\check
%
\def\n@leftrightrepeat{\gluebrule
\nobreak\writenewclefs
%
\discretionary{\setrightrepeat\newbar}%
%\check 1
{\hbox{\portees\writeclefs\everystaff\Writesignatures
\l@eftrepeat\writemeters}}%
%\check 1
{\l@eftrightrepeat}\nobreak\writemeters\zgluearule
\save@all\setnormalhyphen}%
%
\def\t@leftrepeat{\c@ountbar
  \ifnum\barsinline<\maxbarsinline\relax\setleftrepeat\x@barre
\else
 \c@ountline
 \ifnum\linesinpage<\maxlinesinpage\l@leftrepeat
 \message{ ligne: \the\linesinpage }%
 \else\p@leftrepeat
\fi\fi}%
%
%\check
%
\def\t@leftrightrepeat{\c@ountbar
  \ifnum\barsinline<\maxbarsinline\relax\setleftrightrepeat\x@barre
\else
 \c@ountline
 \ifnum\linesinpage<\maxlinesinpage\l@leftrightrepeat
 \message{ ligne: \the\linesinpage }%
 \else\p@leftrightrepeat
\fi\fi}%
%
%\check
%
\def\l@leftrepeat{\suspmorceau
  \reprmorceau\l@eftrepeat}%
%
\def\p@leftrepeat{\suspmorceau
  \preprmorceau\l@eftrepeat}%
%
%\check
%
\def\l@leftrightrepeat{\setrightrepeat\suspmorceau
  \reprmorceau\l@eftrepeat}%
%
\def\p@leftrightrepeat{\setrightrepeat\suspmorceau
  \preprmorceau\l@eftrepeat}%
%
\def\Changeclef{\Changeclefs}\def\Changeclefs{%
\gluebrule\thinvrule\nobreak\hskip 0.6\Interligne\nobreak\newbar
\nobreak\writenewclefs\saveclefs}%
%\check
\def\changeclef{\changeclefs}\def\changeclefs{\termskip
\writenewclefs\saveclefs}%
%\check
%**************************************************************************
%                    les notes proprement dites
%**************************************************************************
\def\vnotes#1\elemskip{\noteskip=#1\elemskip \n@otes}%
\def\znotes{\noteskip=\z@\n@otes}%
%
%\check
%
\def\enotes{\e@notes}%
%
\newdimen\n@skip
\def\skip@n{\hskip \n@skip}%
\def\skip@b{\hskip \brace@w
\global\advance\x@skip by\n@skip\nobreak}%****
%
\def\upd@sk{\nobreak\skip@n\global\advance\x@skip by\n@skip\nobreak}%
%
\def\nextstaff{\endstaff\beginstaff}%
\def\nextinstrument{\endinstrument\begininstrument}%
%
\def\n@otes{\def|{\nextstaff}\def&{\nextinstrument}\normaltranspose=\transpose
\check@nopen\global\advance\notes@open by 1\relax\upd@sk
\locx@skip=\x@skip
\global\n@skip=\noteskip
\global\noinstrument=0\relax
\begininstrument}%
%
%\check
\def\begininstrument{\global\advance\noinstrument by 1\relax
\selectinstr\resetstem
\global\noportee=0\relax\beginstaff
}%
%\check
%
\def\endinstrument{\endstaff}%
%\check
%
\def\beginstaff{\alt@comp
  \n@portee
  \edef\get@ref{\noexpand\get@refs\the\cleftoks{}{}{}{}}\relax\get@ref
  \setbox\n@otebox=\hbox\bgroup\locx@skip=\x@skip }%
%\check
%
\def\endstaff{\egroup
  \ifdim\n@skip<\wd\n@otebox \global\n@skip=\wd\n@otebox
  \fi
  \nobreak\raise\altportee\rlap{\unhbox\n@otebox}\nobreak}%
%
%\check
%
\def\e@notes{\global\notes@open=0\relax\endinstrument
\ifdim\n@skip<\noteskip \showthe\noteskip\showthe\n@skip
\global\n@skip=\noteskip
\fi}%
%
%\check
%
% queue de note vers le bas
\def\p@tail{\global\advance\st@bot by -3\Interligne\global\stem@skip=\z@
\pd@tail}%
%\check
% queue de note vers le haut
\def\d@tail{\global\advance\st@top by 3\Interligne\pd@tail}%
%
\def\pd@tail{\global\advance\st@top by -\st@bot
  \ifdim\st@top>1pt\global\advance\st@bot by -\altportee
  \raise\st@bot\rlap{\kern\stem@skip\vrule height\st@top width \lthick}\fi
  \resetstem}%
%\check
\def\resetstem{\global\st@bot=99cm\global\st@top=-\st@bot}%
%
\def\setstem{{\advance\y@i by -\n@raise  \advance\y@i by \altportee
\ifdim\st@bot>\y@i\global\st@bot=\y@i\fi
\ifdim\st@top<\y@i\global\st@top=\y@i\fi}}%
%
%\check
%
%  sequence de placement d'un caractere a une position dans la portee
\def\pl@note{\pl@base  \advance\y@i by \n@raise}%
\def\pl@base{\y@i=\n@i\internote}%
%
% lignes supplementaires pour \n@i (position)
%
\newcount\h@lnlv
\newdimen\hlp@width
\def\h@lines#1{\hlp@width=#1\h@lnlv=0\relax\lh@lines\h@lnlv=8\relax
\uh@lines}%
\def\lh@lines{\loop\advance\h@lnlv by -1\relax
  \ifnum\n@i<\h@lnlv\relax\advance\h@lnlv by -1\relax
  \ifnum\h@lnlv<-20\relax\showthe\h@lnlv\fi
  \raise\h@lnlv\internote\llap{\vrule width 1.6\hlp@width height 0.5\lthick
  depth 0.5\lthick\kern -1.3\hlp@width}\repeat}%
%\check
\def\uh@lines{\loop\advance\h@lnlv by 1\relax
  \ifnum\n@i>\h@lnlv\relax\advance\h@lnlv by 1\relax
  \ifnum\h@lnlv>30\relax\showthe\h@lnlv\fi
 \raise\h@lnlv\internote\llap{\vrule width 1.6\hlp@width height 0.5\lthick
    depth 0.5\lthick\kern -1.3\hlp@width}\repeat}%
%\check
% *********** les symboles de notes ou assimiles ****************
%
% placement
%
\newcount\inh@alt
\def\getn@i{\global\inh@alt=0\relax\xgetn@i}%
%
\def\inhgetn@i{\global\inh@alt=1\relax\xgetn@i}%
%
\def\xgetn@i#1{\n@i=9999\relax   % par defaut
\edef\t@ruc{\f@tok #1\noexpand\relax\af@tok}\ifcat a\t@ruc\relax
\getn@iletter{#1}%
\else\getn@inonlet{#1}% \ifcat pas lettre
\fi\global\n@raise=\z@}% %
\def\getn@inonlet#1{\edef\ss@uite{}\edef\s@uite{\s@tok #1{}\af@tok}%
\edef\alt@suite{}\ifcat 1\t@ruc\relax
\t@rucfig{#1}%   cas active character dont  chiffre
\else\t@rucexpcar{#1}%
\fi\alt@suite}% fi du \ifcat 1
%\check
% analysis of accidentals within collective note coding
\def\absoluteaccidentals{\def\Xna{\na}\def\Xsh{\sh}\def\Xfl{\fl}%
\def\Xdsh{\dsh}\def\Xdfl{\dfl}}%
\absoluteaccidentals
%
\def\t@rucexpcar#1{\if ^\t@ruc\relax
        \edef\alt@suite{\ifnum
           \inh@alt=0\relax\noexpand\Xsh{\s@uite}\fi
        \noexpand\getn@i{\s@uite}}\fi
      \if _\t@ruc\relax
        \edef\alt@suite{\ifnum
           \inh@alt=0\relax\noexpand\Xfl{\s@uite}\fi
        \noexpand\getn@i{\s@uite}}\fi}%
%\check
\def\t@rucfig#1{\if=\t@ruc\relax
        \edef\alt@suite{\ifnum
           \inh@alt=0\relax\noexpand\Xna{\s@uite}\fi
        \noexpand\getn@i{\s@uite}}\fi
\if*\t@ruc\relax
        \edef\alt@suite{\ifnum
           \inh@alt=0\relax\noexpand\sk{\s@uite}\fi
        \noexpand\getn@i{\s@uite}}\fi
\if.\t@ruc\relax
        \edef\alt@suite{\ifnum
           \inh@alt=0\relax\noexpand\pt{\s@uite}\fi
        \noexpand\getn@i{\s@uite}}\fi
\if>\t@ruc\relax
        \edef\alt@suite{\ifnum
           \inh@alt=0\relax\noexpand\Xdsh{\s@uite}\fi
        \noexpand\getn@i{\s@uite}}\fi
\if<\t@ruc\relax
        \edef\alt@suite{\ifnum
           \inh@alt=0\relax\noexpand\Xdfl{\s@uite}\fi
        \noexpand\getn@i{\s@uite}}\fi
\if!\t@ruc\relax
        \transpose=\normaltranspose\relax
 \edef\alt@suite{\noexpand\getn@i{\s@uite}}\fi
\if'\t@ruc\relax
        \advance\transpose by 7\relax
 \edef\alt@suite{\noexpand\getn@i{\s@uite}}\fi
\if`\t@ruc\relax
        \advance\transpose by -7\relax
 \edef\alt@suite{\noexpand\getn@i{\s@uite}}%
\else \if -\t@ruc\relax\n@i=#1\relax\fi
      \if 1\t@ruc\relax\n@i=#1\relax\fi
      \if 2\t@ruc\relax\n@i=#1\relax\fi
      \if 3\t@ruc\relax\n@i=#1\relax\fi
      \if 4\t@ruc\relax\n@i=#1\relax\fi
      \if 5\t@ruc\relax\n@i=#1\relax\fi
      \if 6\t@ruc\relax\n@i=#1\relax\fi
      \if 7\t@ruc\relax\n@i=#1\relax\fi
      \if 8\t@ruc\relax\n@i=#1\relax\fi
      \if 9\t@ruc\relax\n@i=#1\relax\fi
      \if 0\t@ruc\relax\n@i=#1\relax\fi
\fi}%
%\check
%
\def\getn@iletter#1{\n@i=\expandafter`\t@ruc\relax
\ifnum\n@i >96\relax \advance\n@i by -101\relax % ramener au E (position
% zero en clef de sol, ut@ref=0)
\else\advance\n@i by -83\relax % ramener au S= E + 14
\fi
\advance\n@i by \ut@ref\relax
\advance\n@i by \ut@ref\relax
\advance\n@i by \transpose\relax
\edef\s@uite{\s@tok #1{}\af@tok}\edef\ss@uite{\noexpand\n@fon{\s@uite}}}%
%\check
%
\def\pt@raise{\ifodd\n@i\relax\pt@up=-0.1\Interligne\else\pt@up
=0.3\Interligne\fi
\advance\pt@up by -\n@raise\raise\pt@up}%
%
%
\def\lcharnote#1#2{\getn@i{#1}\pl@llap{#2}}%
%
\def\bigaccid{\def\small@test{\noteskip>-1pt}}%
\def\smallaccid{\def\small@test{\noteskip>9999pt}}%
\def\varaccid{\def\small@test{\noteskip>1.9\qn@width}}%
%
\varaccid % accidents de taille variable
%\check
\def\lfl#1{\getn@i{#1}\global\n@raise=\fl@raise
  \pl@llap{\f@lat\kern 0.8\qd@skip}%
}%
%\check
\def\ldfl#1{\getn@i{#1}\global\n@raise=\fl@raise
  \pl@llap{\df@lat\kern 0.8\qd@skip}%
}%
%\check
\def\lsh#1{\getn@i{#1}\global\n@raise=\sh@raise
  \pl@llap{\s@harp\kern 0.8\qd@skip}%
}%
\def\ldsh#1{\getn@i{#1}\global\n@raise=\z@
  \pl@llap{\ds@harp\kern 0.8\qd@skip}}%
%\check
\def\lna#1{\getn@i{#1}\global\n@raise=\na@raise
  \pl@llap{\n@at\kern 0.8\qd@skip}}%
%\check
\def\pl@llap{\pl@note\raise\y@i\llap}%
%**************** notes (sans queue) *******************
%
\def\xcharnote#1#2#3{\getn@i{#2}\pl@base\raise\y@i\hbox to #1{#3\hss}}%
%\check
%
\def\raise@note{\advance\locx@skip by\noteskip\raise\y@i\hbox to \noteskip}%
%
% rondes sous diverses formes
%
% ronde decalee a gauche (sans avance)
\def\lw#1{\kern -\wd@skip\zw{#1}\kern \wd@skip}%
%
% ronde decalee a droite (sans avance)
\def\rw#1{\kern \wd@skip\zw{#1}\kern -\wd@skip}%
%\check
% ronde sans avance
\def\zw#1{\getn@i{#1}\def\n@fon{\zw}\def\n@sym{\w@h}\g@zw}%
\def\zwp#1{\getn@i{#1}\def\n@fon{\zwp}\def\n@sym{\w@hp}\g@zw}%
\def\zwpp#1{\getn@i{#1}\def\n@fon{\zwpp}\def\n@sym{\w@hpp}\g@zw}%
\def\zwppp#1{\getn@i{#1}\def\n@fon{\zwppp}\def\n@sym{\w@hppp}\g@zw}%
\def\g@zw{\global\n@raise=\wh@raise\ifnum\n@i<100\relax
  \h@lines{\wn@width}\def\s@tem{\resetstem}\plap@symss\fi}%
%\check
%
\def\phpause{\hbox to \noteskip{\vrule width
 1.2\qn@width height \internote\hss}}%
\def\pause{\hbox{\raise 5\internote\phpause}}%
\def\hpause{\hbox{\raise 4\internote\phpause}}%
\def\demisoupir{\ds}%
\def\ds{\hbox to \noteskip{\d@soup\hss}%
\advance\locx@skip by \noteskip}%
\def\qp{\hbox to \noteskip{\s@oupir\hss}\advance\locx@skip by \noteskip}%
\def\soupir{\qp}%
\def\dsoupir{\ds}%
\def\qsoupir{\qs}%
\def\quartsoupir{\qs}%
% quat de soupir
\def\qs{\hbox to \noteskip{\q@soup\hss}%
\advance\locx@skip by \noteskip}%
\def\demisoupir{\ds}%
%\check
\def\pl@noteq{\pl@note  \setstem
  \ifdim\noteskip>\z@
    \ifdim\st@bot<29cm
      \s@tem
    \fi
  \fi
}%
%
\def\Ped{{\cmsy P\kern -1pt\it ed.}}%
\def\PED{\rlap{\zcharnote{-5}{\kern -2pt\Ped}}}%
\def\DEP{\rlap{\zcharnote{-7}{\kern 0.5\noteskip\kern -4pt\moyen *}}}%
%\check
\def\pl#1{\zcharnote{#1}{\raise 2pt           \rlap{\ttyeight +}}}%
\def\pointdorgue#1{\zcharnote{#1}{\raise \Interligne\p@orgue}}%
\def\pointdurgue#1{\zcharnote{#1}{\raise-\Interligne\p@urgue}}%
\def\ntrille#1#2{\zcharnote{#1}{\trille{#2\elemskip}}}%
\def\nTrille#1#2{\zcharnote{#1}{\Trille{#2\elemskip}}}%
\def\xtrille#1#2{\zcharnote{#1}{\trille{#2}}}%
\def\xTrille#1#2{\zcharnote{#1}{\Trille{#2}}}%
%
\def\pt#1{\inhgetn@i{#1}\def\n@fon{\pt}\def\n@sym{\z@p}\g@pt}
\def\ppt#1{\inhgetn@i{#1}\def\n@fon{\ppt}\def\n@sym{\z@pp}\g@pt}
\def\pppt#1{\inhgetn@i{#1}\def\n@fon{\pppt}\def\n@sym{\z@ppp}\g@pt}
\def\g@pt{\global\n@raise=\qu@raise\ifnum\n@i<100\relax \pl@note\raise\y@i
\rlap{\n@sym}\fi}%
%
%\check
%
% blanche sans queue decalee a gauche
% blanche pointee sans queue
% blanche decalee a gauche
\def\lh#1{\kern -\hd@skip\zh{#1}\kern \hd@skip}%
% blanche decalee a droite sans queue
\def\rh#1{\kern \hd@skip\zh{#1}\kern -\hd@skip}%
% blanche sans queue ni avance
\def\zh#1{\getn@i{#1}\def\n@fon{\zh}\def\n@sym{\h@a}\g@zh}
\def\zhp#1{\getn@i{#1}\def\n@fon{\zhp}\def\n@sym{\h@ap}\g@zh}
\def\zhpp#1{\getn@i{#1}\def\n@fon{\zhpp}\def\n@sym{\h@app}\g@zh}
\def\zhppp#1{\getn@i{#1}\def\n@fon{\zhppp}\def\n@sym{\h@appp}\g@zh}
\def\g@zh{\global\n@raise=\ha@raise\global\n@width=\hn@width\g@z}%
\def\g@z{\ifnum\n@i<100\relax
  \h@lines{\n@width}\pl@note\setstem\rlap@symss\fi}%
%
% noires sans queues
%
\def\zq#1{\getn@i{#1}\def\n@fon{\zq}\def\n@sym{\q@u}\g@zq}
\def\zqp#1{\getn@i{#1}\def\n@fon{\zqp}\def\n@sym{\q@up}\g@zq}
\def\zqpp#1{\getn@i{#1}\def\n@fon{\zqpp}\def\n@sym{\q@upp}\g@zq}
\def\zqppp#1{\getn@i{#1}\def\n@fon{\zqppp}\def\n@sym{\q@uppp}\g@zq}
\def\g@zq{\global\n@raise=\qu@raise\global\n@width=\qn@width\g@z}%
%
%\check
\def\rq#1{\kern \qd@skip\zq{#1}\kern -\qd@skip}%
\def\lq#1{\kern -\qd@skip\zq{#1}\kern \qd@skip}%
% *********************** notes avec queue **********************
%
%\check
\def\qu#1{\getn@i{#1}\def\n@fon{\qu}\def\n@sym{\q@u}\g@qu}%
\def\qup#1{\getn@i{#1}\def\n@fon{\qup}\def\n@sym{\q@up}\g@qu}%
\def\qupp#1{\getn@i{#1}\def\n@fon{\qupp}\def\n@sym{\q@upp}\g@qu}%
\def\quppp#1{\getn@i{#1}\def\n@fon{\quppp}\def\n@sym{\q@uppp}\g@qu}%
%\check
\def\g@qu{\global\n@raise=\qu@raise\ifnum\n@i<100\relax
  \global\stem@skip=\qd@skip\def\s@tem{\d@tail}\g@qbh@\fi}%
%
\def\q@up{\hbox to \qn@width{\q@u\hss}\P@t}%
\def\q@upp{\hbox to \qn@width{\q@u\hss}\PP@t}%
\def\q@uppp{\hbox to \qn@width{\q@u\hss}\PPP@t}%
\def\h@ap{\hbox to \hn@width{\h@a\hss}\P@t}%
\def\h@app{\hbox to \hn@width{\h@a\hss}\PP@t}%
\def\h@appp{\hbox to \hn@width{\h@a\hss}\PPP@t}%
\def\w@hp{\hbox to \wn@width{\w@h\hss}\P@t}%
\def\w@hpp{\hbox to \wn@width{\w@h\hss}\PP@t}%
\def\w@hpp{\hbox to \wn@width{\w@h\hss}\PPP@t}%
%
\def\z@p{\kern \qn@width\P@t}\def\z@pp{\kern \qn@width\PP@t}\def
\z@ppp{\kern \qn@width \PPP@t}%
%\check
\def\rqu#1{\getn@i{#1}\def\n@fon{\qu}\global\n@raise=\qu@raise
  \def\n@sym{\kern \qd@skip\q@u}%
\ifnum\n@i<100\relax
  \kern \qd@skip  \h@lines{\qn@width}\kern -\qd@skip
  \global\stem@skip=\qd@skip\def\s@tem{\d@tail}\pl@symss\fi}%
%\check
% noire queue en haut sans avance
\def\zqu#1{\getn@i{#1}\def\n@fon{\qu}\def\n@sym{\q@u}\rlap{\g@qu}}%
%
% espace vide d'une note
\def\off#1{\advance\locx@skip by #1\kern #1}%
\def\sk{\off\noteskip}%
\def\qsk{\off\qn@width}%
\def\hsk{\off\hn@width}%
%\check
\def\lqu#1{\kern -\qd@skip\zqu{#1}\kern \qd@skip}%
%\check
% noires queue en base
\def\ql#1{\getn@i{#1}\def\n@fon{\ql}\def\n@sym{\q@u}\g@ql}%
\def\qlp#1{\getn@i{#1}\def\n@fon{\qlp}\def\n@sym{\q@up}\g@ql}%
\def\qlpp#1{\getn@i{#1}\def\n@fon{\qlpp}\def\n@sym{\q@upp}\g@ql}%
\def\qlppp#1{\getn@i{#1}\def\n@fon{\qlppp}\def\n@sym{\q@uppp}\g@ql}%
\def\g@ql{\global\n@raise=\qu@raise\ifnum\n@i<100\relax
  \def\s@tem{\p@tail}\g@qbh@\fi}%
%
% la meme sans avance
\def\zql#1{\getn@i{#1}\def\n@fon{\ql}\def\n@sym{\q@u}\rlap{\g@ql}}%
%\check
% decalees a gauche et a droite
\def\lql#1{\kern -\qd@skip\zql{#1}\kern \qd@skip}%
\def\rql#1{\kern \qd@skip\zql{#1}\kern -\qd@skip}%
%
% croches, doubles croches, triples croches, quadruple croches queue en
% haut et en bas
%
\def\clp#1{\pt{#1}\cl{#1}}\def\cup#1{\pt{#1}\cu{#1}}%
\def\cu{\mcu1}\def\ccu{\mcu2}\def\cccu{\mcu3}\def\ccccu{\mcu4}%
\def\cl{\mcl1}\def\ccl{\mcl2}\def\cccl{\mcl3}\def\ccccl{\mcl4}%
\def\zcu{\advancefalse\mcu1}\def\zccu{\advancefalse\mcu2}%
\def\zcccu{\advancefalse\mcu3}\def\zccccu{\advancefalse\mcu4}%
\def\zcl{\advancefalse\mcl1}\def\zccl{\advancefalse\mcl2}%
\def\zcccl{\advancefalse\mcl3}\def\zccccl{\advancefalse\mcl4}%
%
\def\mcu#1#2{\getn@i{#2}\global\n@raise=\qu@raise
\def\n@sym{\q@u}\edef\n@fon{\noexpand\mcu #1}%
\ifnum\n@i<100\relax
  \h@lines{\qn@width}\global\stem@skip=\qd@skip
\def\s@tem{\d@cr#1}\pl@symssq\fi}%
\def\mcl#1#2{\getn@i{#2}\global\n@raise=\qu@raise
\def\n@sym{\q@u}\edef\n@fon{\noexpand\mcl #1}%
\ifnum\n@i<100\relax
  \h@lines{\qn@width}\def\s@tem{\p@cr#1}\pl@symssq\fi}%
%
% ronde
\def\wh#1{\getn@i{#1}\def\n@fon{\wh}\def\n@sym{\w@h}\g@wh}%
\def\whp#1{\getn@i{#1}\def\n@fon{\whp}\def\n@sym{\w@hp}\g@wh}%
\def\whpp#1{\getn@i{#1}\def\n@fon{\whpp}\def\n@sym{\w@hpp}\g@wh}%
\def\whppp#1{\getn@i{#1}\def\n@fon{\whppp}\def\n@sym{\w@hppp}\g@wh}%
\def\g@wh{\global\n@raise=\wh@raise\ifnum\n@i<100\relax
  \h@lines{\wn@width}\def\s@tem{\resetstem}\pl@symss\fi}%
%\check
% blanche avec queue
\def\ha{\hu}%
\def\hu#1{\getn@i{#1}\def\n@fon{\hu}\def\n@sym{\h@a}\g@hu}%
\def\hup#1{\getn@i{#1}\def\n@fon{\hup}\def\n@sym{\h@ap}\g@hu}%
\def\hupp#1{\getn@i{#1}\def\n@fon{\hupp}\def\n@sym{\h@app}\g@hu}%
\def\huppp#1{\getn@i{#1}\def\n@fon{\huppp}\def\n@sym{\h@appp}\g@hu}%
\def\g@hu{\global\n@raise=\ha@raise\ifnum\n@i<100\relax
 \h@lines{\hn@width}\global\stem@skip=\hd@skip\def\s@tem{\d@tail}\pl@symss\fi}%
%
%\check
\def\rhu#1{\getn@i{#1}\def\n@fon{\hu}\global\n@raise=\ha@raise
\def\n@sym{\kern \hd@skip\h@a}%
\ifnum\n@i<100\relax
  \kern \hd@skip
  \h@lines{\hn@width}\kern -\hd@skip
  \global\stem@skip=\hd@skip\def\s@tem{\d@tail}\pl@symss\fi}%
%\check
% blanche avec queue sans avance
\def\zhu#1{\getn@i{#1}\def\n@fon{\hu}\def\n@sym{\h@a}\g@zhu}%
\def\zhup#1{\getn@i{#1}\def\n@fon{\hup}\def\n@sym{\h@ap}\g@zhu}%
\def\zhupp#1{\getn@i{#1}\def\n@fon{\hupp}\def\n@sym{\h@app}\g@zhu}%
\def\zhuppp#1{\getn@i{#1}\def\n@fon{\huppp}\def\n@sym{\h@appp}\g@zhu}%
\def\g@zhu{\global\n@raise=\ha@raise\ifnum\n@i<100\relax
  \h@lines{\hn@width}\global\stem@skip=\hd@skip
  \def\s@tem{\d@tail}\plap@symss\fi}%
%\check
\def\lhu#1{\kern -\hn@width\zhu{#1}\kern \hn@width}%
%
%
% blanches queue en bas
\def\hl#1{\getn@i{#1}\def\n@fon{\hl}\def\n@sym{\h@a}\g@hl}%
\def\hlp#1{\getn@i{#1}\def\n@fon{\hlp}\def\n@sym{\h@ap}\g@hl}%
\def\hlpp#1{\getn@i{#1}\def\n@fon{\hlpp}\def\n@sym{\h@app}\g@hl}%
\def\hlppp#1{\getn@i{#1}\def\n@fon{\hlppp}\def\n@sym{\h@appp}\g@hl}%
\def\g@hl{\global\n@raise=\ha@raise\ifnum\n@i<100\relax
  \h@lines{\hn@width}\def\s@tem{\p@tail}\pl@symss\fi}%
%\check
\def\zhl#1{\getn@i{#1}\def\n@fon{\hl}\def\n@sym{\h@a}\rlap{\g@hl}}%
\def\rhl#1{\kern \hd@skip\zhl{#1}\kern -\hd@skip}%
\def\lhl#1{\kern -\hn@width\zhl{#1}\kern \hn@width}%
%\check
%**************** initialisation de poutres ******************
% \ibu{0<numero<10}{altitude~note}{pente de -9 a +9}
% \ibl{0<numero<10}{altitude~note}{pente de -9 a +9}
%
\def\selectpoutre#1{{\n@i=#1\relax
  \ifnum\n@i<0\relax\n@i=29\relax\fi
  \advance\n@i by 1\relax
\xdef\b@x{\csname b@x\romannumeral\n@i\endcsname}%
\xdef\b@z{\csname b@z\romannumeral\n@i\endcsname}%
\xdef\bb@x{\csname bb@x\romannumeral\n@i\endcsname}%
\xdef\bb@z{\csname bb@z\romannumeral\n@i\endcsname}%
\xdef\bbb@x{\csname bbb@x\romannumeral\n@i\endcsname}%
\xdef\bbb@z{\csname bbb@z\romannumeral\n@i\endcsname}%
\xdef\bbbb@x{\csname bbbb@x\romannumeral\n@i\endcsname}%
\xdef\bbbb@z{\csname bbbb@z\romannumeral\n@i\endcsname}%
\xdef\b@n{\csname b@n\romannumeral\n@i\endcsname}%
\xdef\b@p{\csname b@p\romannumeral\n@i\endcsname}}\s@lopdefs}%
% fin selectpoutre
%
\def\ibu#1{\selectpoutre{#1}\i@bu}%
\def\i@bu#1#2{\ifnum\b@n=0\relax\else\t@bu\fi
  \global\b@n=-1\relax
  \global\b@x=\locx@skip
  \global\advance\b@x by \qd@skip\inhgetn@i{#1}\pl@base
  \global\b@z=\y@i\global\advance\b@z by\altportee\global\b@p=#2\relax
  \global\advance\b@z by 3.25\Interligne}%
%
\def\ibl#1{\selectpoutre{#1}\i@bl}%
\def\i@bl#1#2{\ifnum\b@n=0\relax\else\t@bl\fi
  \global\b@n=1\relax
  \global\b@x=\locx@skip\inhgetn@i{#1}\pl@base
  \global\b@z=\y@i\global\advance\b@z by \altportee\global\b@p=#2\relax
  \global\advance\b@z by -3.25\Interligne}%
%\check
\def\ibbu#1{\selectpoutre{#1}\i@bbu}%
\def\ibbl#1{\selectpoutre{#1}\i@bbl}%
\def\i@bbu#1#2{\ifnum\b@n=0\relax\i@bu{#1}{#2}\relax\global\advance\b@z by
 \internote\fi\n@bbu\relax}%
\def\i@bbl#1#2{\ifnum\b@n=0\relax\i@bl{#1}{#2}\relax\global\advance\b@z by
 -\internote\fi\n@bbl\relax}%
\def\nbbu#1{\selectpoutre{#1}\ifnum\b@n>-2\relax\ifnum\b@n<2\relax\n@bbu\fi
\fi}%
\def\nbbl#1{\selectpoutre{#1}\ifnum\b@n>-2\relax\ifnum\b@n<2\relax\n@bbl\fi
\fi}%
\def\n@bbu{\gl@au{\b@n}\global\bb@x=\locx@skip
  \global\advance\bb@x by \qd@skip
 \global\bb@z=\b@z\ifnum\b@n<0\relax\global\advance\bb@z by
 -\interbeam
 \else \global\advance\bb@z by \interbeam
                         \fi
 {\advance\locx@skip by \qd@skip \advance\locx@skip by -\b@x
\global\advance\bb@z by \s@lope\locx@skip }}%
%
\def\n@bbl{\gl@au{\b@n}\global\bb@x=\locx@skip
  \global\advance\bb@x by \lthick
 \global\bb@z=\b@z\ifnum\b@n<0\relax\global\advance\bb@z by -\interbeam
 \else \global\advance\bb@z by \interbeam \fi
  {\advance\locx@skip by -\b@x
\global\advance\bb@z by \s@lope\locx@skip }}%
%\check
\def\ibbbu#1{\selectpoutre{#1}\i@bbbu}%
\def\ibbbl#1{\selectpoutre{#1}\i@bbbl}%
\def\i@bbbu#1#2{\ifnum\b@n=0\relax\i@bbu{#1}{#2}%
\global\advance\b@z by \internote
\global\advance\bb@z by \internote
\fi\n@bbbu}%
\def\i@bbbl#1#2{\ifnum\b@n=0\relax\i@bbl{#1}{#2}%
\global\advance\b@z by -\internote
\global\advance\bb@z by -\internote
\fi\n@bbbl}%
\def\nbbbu#1{\selectpoutre{#1}\ifnum\b@n=-1\relax\n@bbu\fi\ifnum\b@n
=1\relax\n@bbu\fi
 \ifnum\b@n=-2\relax\n@bbbu\fi\ifnum\b@n=2\relax\n@bbbu\fi
}%
\def\nbbbl#1{\selectpoutre{#1}\ifnum\b@n=-1\relax\n@bbl\fi\ifnum\b@n
=1\relax\n@bbl\fi
 \ifnum\b@n=-2\relax\n@bbbl\fi\ifnum\b@n=2\relax\n@bbbl\fi
}%
\def\n@bbbu{\gl@au{\b@n}\global\bbb@x=\locx@skip
  \global\advance\bbb@x by \qd@skip
 \global\bbb@z=\b@z\ifnum\b@n<0\relax\global\advance\bbb@z by
 -2\interbeam
 \else \global\advance\bbb@z by 2\interbeam
                         \fi
 {\advance\locx@skip by \qd@skip \advance\locx@skip by -\b@x
\global\advance\bbb@z by \s@lope
\locx@skip }}%
%
\def\n@bbbl{\gl@au{\b@n}\global\bbb@x=\locx@skip
  \global\advance\bbb@x by \lthick
 \global\bbb@z=\b@z\ifnum\b@n<0\relax\global\advance\bbb@z by
 -2\interbeam
 \else \global\advance\bbb@z by 2\interbeam
                         \fi
 {\advance\locx@skip by -\b@x\global\advance\bbb@z by \s@lope
\locx@skip }}%
%\check
%
\def\ibbbbu#1{\selectpoutre{#1}\i@bbbbu}%
\def\ibbbbl#1{\selectpoutre{#1}\i@bbbbl}%
\def\i@bbbbu#1#2{\ifnum\b@n=0\relax\i@bbbu{#1}{#2}%
\global\advance\b@z by \interbeam
\global\advance\bb@z by \interbeam
\global\advance\bbb@z by \interbeam
\fi\n@bbbbu}%
\def\i@bbbbl#1#2{\ifnum\b@n=0\relax\i@bbbl{#1}{#2}%
\global\advance\b@z by -\interbeam
\global\advance\bb@z by -\interbeam
\global\advance\bbb@z by -\interbeam
\fi\n@bbbbl}%
\def\nbbbbu#1{\selectpoutre{#1}\ifnum\b@n=-1\relax\n@bbu\fi\ifnum\b@n
=1\relax\n@bbu\fi
 \ifnum\b@n=-2\relax\n@bbbu\fi\ifnum\b@n=2\relax\n@bbbu\fi
 \ifnum\b@n=-3\relax\n@bbbbu\fi\ifnum\b@n=3\relax\n@bbbbu\fi
}%
\def\nbbbbl#1{\selectpoutre{#1}\ifnum\b@n=-1\relax\n@bbl\fi\ifnum\b@n
=1\relax\n@bbl\fi
 \ifnum\b@n=-2\relax\n@bbbl\fi\ifnum\b@n=2\relax\n@bbbl\fi
 \ifnum\b@n=-3\relax\n@bbbbl\fi\ifnum\b@n=3\relax\n@bbbl\fi
}%
\def\n@bbbbu{\gl@au{\b@n}\global\bbbb@x=\locx@skip
  \global\advance\bbbb@x by \qd@skip
 \global\bbbb@z=\b@z\ifnum\b@n<0\relax\global\advance\bbbb@z by
 -3\interbeam
 \else \global\advance\bbbb@z by 3\interbeam
                         \fi
 {\advance\locx@skip by \qd@skip \advance\locx@skip by -\b@x
\global\advance\bbbb@z by \s@lope
\locx@skip }}%
%
\def\n@bbbbl{\gl@au{\b@n}\global\bbbb@x=\locx@skip
  \global\advance\bbbb@x by \lthick
 \global\bbbb@z=\b@z\ifnum\b@n<0\relax\global\advance\bbbb@z by
 -3\interbeam
 \else \global\advance\bbbb@z by 3\interbeam
                         \fi
 {\advance\locx@skip by -\b@x\global\advance\bbbb@z by \s@lope
\locx@skip }}%
%\check
%
% terminaison de toutes les poutres en suspens
%
%
%***** terminer une poutre superieure ****************
%\check
%
\def\tbu#1{\selectpoutre{#1}\t@bu}%
\def\tqh#1{\selectpoutre{#1}\t@qh}%
\def\tbbu#1{\selectpoutre{#1}\t@bbu}%
\def\tbbbu#1{\selectpoutre{#1}\t@bbbu}%
\def\tbbbbu#1{\selectpoutre{#1}\t@bbbbu}%
%\check
\def\t@qh{\t@bu\qh@}%
\def\t@bu{\ifnum\b@n<-1\relax\t@bbu\fi
\ifnum\b@n>1\relax\t@bbu\fi
\y@i=\b@z
\advance\y@i by -\altportee
\y@ii=\locx@skip
\advance\y@ii by \qn@width
\advance\y@ii by -\b@x
\llap{\p@outre\hskip -\qn@width}%
\global\b@n=0\relax}%
%
%\check
\def\t@bbu{\ifnum\b@n<-2\relax\t@bbbu\fi
           \ifnum\b@n>2\relax\t@bbbu\fi
\ifnum\b@n=1\relax{\advance\locx@skip by -\qn@width\n@bbu}\fi
\ifnum\b@n=-1\relax{\advance\locx@skip by -\qn@width\n@bbu}\fi
\y@i=\bb@z\y@ii=-\bb@x\t@xbu}%
%\check
\def\t@xbu{\advance\y@i by -\altportee
\advance\y@ii by \locx@skip \advance\y@ii by \qn@width
\llap{\p@outre\hskip -\qn@width}%
\ifnum\b@n>0\relax
\advance\y@i by \s@lope\y@ii\raise\y@i\rlap{\kern\qn@width
\kern -\lthick\vrule height \z@ depth 1.8\internote width \lthick}\fi
\gl@de{\b@n}}%
%\check
\def\t@bbbu{\ifnum\b@n<-3\relax\t@bbbbu\fi
            \ifnum\b@n>3\relax\t@bbbbu\fi
\ifnum\b@n=2\relax{\advance\locx@skip by -\qn@width\n@bbbu}\fi
\ifnum\b@n=-2\relax{\advance\locx@skip by -\qn@width\n@bbbu}\fi
\y@i=\bbb@z\y@ii=-\bbb@x\t@xbu}%
%
%\check
\def\t@bbbbu{\ifnum\b@n<-4\relax\showthe\b@n\global\b@n=-4\relax\fi
\ifnum\b@n>4\relax\showthe\b@n\global\b@n=4\relax\fi
\ifnum\b@n=3\relax{\advance\locx@skip by -\qn@width\n@bbbbu}\fi
\ifnum\b@n=-3\relax{\advance\locx@skip by -\qn@width\n@bbbbu}\fi
\y@i=\bbbb@z\y@ii=-\bbbb@x\t@xbu}%
%***** terminer une poutre inferieure****************
\def\tbl#1{\selectpoutre{#1}\t@bl}%
\def\tqb#1{\selectpoutre{#1}\t@qb}%
\def\tbbl#1{\selectpoutre{#1}\t@bbl}%
\def\tbbbl#1{\selectpoutre{#1}\t@bbbl}%
\def\tbbbbl#1{\selectpoutre{#1}\t@bbbbl}%
% provisoire
\def\t@qb{\t@bl\qb@}%
\def\t@bl{\relax
\ifnum\b@n<-1\relax\t@bbl\fi
\ifnum\b@n>1\relax\t@bbl\fi
\y@i=\b@z
\advance\y@i by -\altportee
\y@ii=\locx@skip
\advance\y@ii by \lthick
\advance\y@ii by -\b@x
\kern\lthick\llap{\p@outre}\kern -\lthick
\global\b@n=0\relax}%
%\check
%
\def\t@bbl{\relax
\ifnum\b@n<-2\relax\t@bbbl\fi
\ifnum\b@n>2\relax\t@bbbl\fi
\ifnum\b@n=1\relax{\advance\locx@skip by -\qn@width\n@bbl}\fi
\ifnum\b@n=-1\relax{\advance\locx@skip by -\qn@width\n@bbl}\fi
\y@i=\bb@z\y@ii=-\bb@x\t@xbl}%
%
\def\t@xbl{\advance\y@i by -\altportee
\advance\y@ii by \locx@skip
\advance\y@ii by \lthick
\kern\lthick\llap{\p@outre}\kern-\lthick
\ifnum\b@n<0\relax\advance\y@i by \s@lope\y@ii
\raise\y@i\rlap{\vrule height \interbeam width \lthick}\fi
\gl@de{\b@n}}%
%\check
\def\t@bbbl{\relax
\ifnum\b@n<-3\relax\t@bbbbl\fi
\ifnum\b@n>3\relax\t@bbbbl\fi
\ifnum\b@n=2\relax{\advance\locx@skip by -\qn@width\n@bbbl}\fi
\ifnum\b@n=-2\relax{\advance\locx@skip by -\qn@width\n@bbbl}\fi
\y@i=\bbb@z\y@ii=-\bbb@x\t@xbl}%
%\check
\def\t@bbbbl{\relax
\ifnum\b@n<-4\relax\showthe\b@n\global\b@n=-4\relax\fi
\ifnum\b@n>4\relax\showthe\b@n\global\b@n=4\relax\fi
\ifnum\b@n=3\relax{\advance\locx@skip by -\qn@width\n@bbbbl}\fi
\ifnum\b@n=-3\relax{\advance\locx@skip by -\qn@width\n@bbbbl}\fi
\y@i=\bbbb@z\y@ii=-\bbbb@x\t@xbl}%
%******************** notes accrchees aux poutres
% ************************************
%
\def\qh#1{\selectpoutre{#1}\qh@}%
\def\hh#1{\selectpoutre{#1}\hh@}%
\def\qhp#1{\selectpoutre{#1}\qhp@}%
\def\qhpp#1{\selectpoutre{#1}\qhpp@}%
\def\qhppp#1{\selectpoutre{#1}\qhppp@}%
\def\qh@#1{\getn@i{#1}\def\n@fon{\qh@}\def\n@sym{\q@u}\g@qh@}% % position
\def\hh@#1{\getn@i{#1}\def\n@fon{\hh@}\def\n@sym{\h@u}\g@qh@}% % position
\def\qhp@#1{\getn@i{#1}\def\n@fon{\qhp@}\def\n@sym{\q@up}\g@qh@}% % position
\def\qhpp@#1{\getn@i{#1}\def\n@fon{\qhpp@}\def\n@sym{\q@upp}\g@qh@}% % position
\def\qhppp@#1{\getn@i{#1}\def\n@fon{\qhppp@}\def\n@sym{\q@uppp}\g@qh@}% %
% position
\def\qb#1{\selectpoutre{#1}\qb@}%
\def\hb#1{\selectpoutre{#1}\hb@}%
\def\qbp#1{\selectpoutre{#1}\qbp@}%
\def\qbpp#1{\selectpoutre{#1}\qbpp@}%
\def\qbppp#1{\selectpoutre{#1}\qbppp@}%
\def\qb@#1{\getn@i{#1}\def\n@fon{\qb@}\def\n@sym{\q@u}\g@qb@} % #1 position
\def\hb@#1{\getn@i{#1}\def\n@fon{\hb@}\def\n@sym{\h@a}\g@qb@} % #1 position
\def\qbp@#1{\getn@i{#1}\def\n@fon{\qbp@}\def\n@sym{\q@up}\g@qb@} % #1 position
\def\qbpp@#1{\getn@i{#1}\def\n@fon{\qbpp@}\def\n@sym{\q@upp}\g@qb@} % #1
% position
\def\qbppp@#1{\getn@i{#1}\def\n@fon{\qbppp@}\def\n@sym{\q@uppp}\g@qb@} % #1
% position
\def\g@qb@{\global\n@raise=\qu@raise\ifnum\n@i<100\relax
  \global\stem@skip=\z@\def\s@tem{\d@balk}\g@qbh@\fi}%
%
\def\g@qh@{\global\n@raise=\qu@raise\ifnum\n@i<100\relax
  \global\stem@skip=\qd@skip\def\s@tem{\d@balk}\g@qbh@\fi}%
%
\def\g@qbh@{\h@lines{\qn@width}\pl@symss}%
%
\def\pl@symss{\pl@noteq\raise@note{\n@sym\hss}\ss@uite}%
\def\pl@symssq{\ifadvance\pl@symss\else\plap@symss\fi\advancetrue}%
%
\def\rlap@symss{\raise\y@i\rlap{\n@sym}\ss@uite}%
\def\plap@symss{\pl@noteq\rlap@symss}%
%
\def\d@balk{%    % queue de note vers une poutre
\y@ii=\b@z                     % a augmenter avec la pente
\y@v=\locx@skip\advance\y@v by \stem@skip\advance\y@v by -\b@x
\advance\y@ii by \s@lope\y@v
\ifdim\y@ii>\st@top % la poutre est au-dessus
  \ifnum\b@n>0\relax\advance\y@ii by \b@n\interbeam
    \advance\y@ii by -\interbeam
  \fi\global\st@top=\y@ii  %  a mettre a jour avec la pente ulterieurement
\else
  \ifdim\y@ii<\st@bot
  \ifnum\b@n<0\relax\advance\y@ii by \b@n\interbeam
    \advance\y@ii by \interbeam
  \fi\global\st@bot=\y@ii
\fi\fi\pd@tail}%
%
%*********************************** notes sans avancement (accords)
% ********************
\def\zwh#1{{\noteskip=\z@\wh{#1}}}%
\def\zha#1{{\noteskip=\z@\ha{#1}}}%
%
\def\charnote{\xcharnote{\noteskip}}%
\def\zcharnote{\xcharnote{\z@}}%
%\check
%
%************************* liaisons horizontales **************************
%
\def\selecttenue#1{{\n@i=#1\relax
\ifnum\n@i<0\relax\n@i=29\fi
  \advance\n@i by 1\relax
\xdef\t@x{\csname t@x\romannumeral\n@i\endcsname}%
\xdef\t@z{\csname t@z\romannumeral\n@i\endcsname}%
\xdef\t@p{\csname t@p\romannumeral\n@i\endcsname}%
\xdef\t@s{\csname t@s\romannumeral\n@i\endcsname}}%
}%   fin selecttenue
%
%\check
% mise a jour marge inferieure et correction d'altitude de tenues
%
\newdimen\bottom@adv
\def\advancebottom#1{\global\bottom@adv=#1\relax}%
\def\adv@bottom{\global\advance\bottommargin by \bottom@adv
  \global\n@l=0\relax
  \loop\ifnum\n@l<\maxlegatenuti\relax
    \selecttenue{\n@l}\global\advance\t@z by \bottom@adv\relax
    \global\advance\n@l by 1\relax
  \repeat
  \global\bottom@adv=\z@}%
%
%\check
%
\def\lu@slur{\cmex\char"7A}\def\ru@slur{\cmex\char"7B}%
\def\ll@slur{\cmex\char"7C}\def\rl@slur{\cmex\char"7D}%
\setbox\n@otebox=\hbox{\lu@slur}\brace@w=\wd\n@otebox
%
\def\leg@hrule{\leaders\hrule height 1.2pt\hfill}%
\def\leg@vrule{\vrule height 1.2pt}%
%
% complete slur of length #1 (up and down)
\def\upleg#1{%    #1 longueur
\hbox to #1{\lu@slur\ifdim #1>2\brace@w\leg@hrule
\else\hss\fi\ru@slur}}%
%
\def\loleg#1{%    #1 longueur
\hbox to #1{\ll@slur\ifdim #1>2\brace@w\leg@hrule
\else\hss\fi\rl@slur}}%
%
% slur termination of length #1 (up and down)
\def\uprleg#1{%    #1 longueur
\hbox to #1{\ifdim #1>\brace@w\leg@hrule
\else\hss\fi\ru@slur}}%
%
\def\lorleg#1{%    #1 longueur
\hbox to #1{\ifdim #1>\brace@w\leg@hrule
\else\hss\fi\rl@slur}}%
%\check
%
% slur beginning (left) (up and down)
\def\uples#1{%    #1 longueur
\hbox to #1{\lu@slur\ifdim #1>\brace@w\leg@hrule
\else\hss\fi}}%
%
\def\loles#1{%    #1 longueur
\hbox to #1{\ll@slur\ifdim #1>\brace@w\leg@hrule
\else\hss\fi}}%
%\check
%
% continuation des tenues au milieu d'une mesure
%
\def\ctenuti{% \vrule width 0.4pt height 3cm\kern -0.4pt\relax
% **** \locx@skip=\x@skip\advance\locx@skip by \n@skip
\global\n@l=0\relax
\loop\ifnum\n@l<\maxlegatenuti\relax
  \selecttenue{\n@l}\ifnum\t@s=0\relax
  \else\c@ten\fi
  \global\advance\n@l by 1\relax
  \repeat}%
%
% continuation d'une tenue par dessus une barre: ne doit pas
% deborder mais s'arreter juste au point indique
%
\def\rtenuti{% *** \locx@skip=\x@skip\advance\locx@skip by \n@skip
\global\n@l=0\relax
\loop\ifnum\n@l<\maxlegatenuti\relax
  \selecttenue{\n@l}\ifnum\t@s=2\relax\r@ten\fi
  \global\advance\n@l by 1\relax
  \repeat}%
%
% noter un debut de tenue
%
\def\itenu#1{\selecttenue{#1}\i@tenu}%
\def\ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
\i@tenu{#2}}}%
\def\rtenu#1{\selecttenue{#1}\ri@tenu}%
\def\ri@tenu#1{\i@tenu{#1}\global\advance\t@x by \wn@width}%
\def\i@tenu#1{\global\t@p=1\relax % sens=1
  \global\t@s=1\relax % etat en cours
  \global\t@x=\locx@skip
  \global\advance\t@x by \qd@skip
  \inhgetn@i{#1}\pl@base\global\t@z=\y@i\global\advance\t@z by\altportee
  \global\advance\t@z by 3.5pt}%
%
\def\itenl#1{\selecttenue{#1}\i@tenl}%
\def\minternote{-\internote}%
\def\ilegl#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
\i@tenl{#2}}}%
\def\rtenl#1{\selecttenue{#1}\ri@tenl}%
\def\ri@tenl#1{\i@tenl{#1}\global\advance\t@x by \wn@width}%
\def\i@tenl#1{\global\t@p=-1\relax % sens= -1
  \global\t@s=1\relax % actif
  \global\t@x=\locx@skip
  \global\advance\t@x by \qd@skip
 \inhgetn@i{#1}\pl@base\global\t@z=\y@i\global\advance\t@z by \altportee
  \global\advance\t@z by -4.5pt
}%
%\check
\def\tten#1{\selecttenue{#1}\t@ten}%
\def\tleg#1{\selecttenue{#1}{\advance\locx@skip by 1.5\qn@width\kern
 1.5\qn@width\t@ten\kern -1.5\qn@width}}%
\def\t@ten{\y@i=\t@z\advance\y@i by -\altportee
\y@ii=\locx@skip\advance\y@ii by -\t@x
\ifnum\t@p>0\relax
  \ifnum\t@s=2\relax
    \raise\y@i\llap{\uprleg{\y@ii}}%
  \else
    \raise\y@i\llap{\upleg{\y@ii}}%
  \fi
\else
  \ifnum\t@s=2\relax
    \raise\y@i\llap{\lorleg{\y@ii}}%
  \else
    \raise\y@i\llap{\loleg{\y@ii}}%
  \fi
\fi
\global\t@s=0\relax}%
%
%\check
\def\c@ten{\y@ii=\x@skip\advance\y@ii by -\t@x
\ifnum\t@s=1\relax
  \ifnum\t@p>0\relax
    \raise\t@z\llap{\uples{\y@ii}}\else
    \raise\t@z\llap{\loles{\y@ii}}\fi
\else\ifnum\t@s=2\relax
    \raise\t@z\llap{\leg@vrule width \y@ii}\fi
\fi
\global\t@x=-\y@ii
\global\t@s=2\relax}%
%
%\check
\def\r@tenu#1{\selecttenue{#1}\r@ten}%
\def\r@ten{\ifnum\t@s=2\relax
    \y@ii=-\t@x
    \global\advance\y@ii by-\brace@w
    \raise\t@z\llap{\leg@vrule width \y@ii}\relax
\fi
\ifdim\t@x<-4\Interligne\global\t@x=-4\Interligne\fi
}%
%
%\check
%
%********************** ponctuations speciales ****************************
%
\def\breath{\raise 3\Interligne\hbox{\enorme'}}%
\def\uptext#1{\resetstem\raise 5\Interligne\rlap{#1}}%
\def\Uptext#1{\resetstem\raise 7\Interligne\rlap{#1}}%
\def\text@sp{\vrule width \z@ height 8.5pt depth 3.5pt}
\def\m@idcomp{\y@v=\interportee\advance\y@v by 4\Interligne\divide\y@v by
 2\relax
\raise\y@v\vbox to \z@}%
%
\def\midtwotext#1{{\m@idcomp
{\vss\hbox to \noteskip{\hss\text@sp #1\hss}\vss}}}%
\def\rmidtwotext#1{{\m@idcomp
{\vss\hbox to \noteskip{\text@sp #1\hss}\vss}}}%
\def\zmidtwotext#1{{\m@idcomp
{\vss\rlap{\text@sp #1}\vss}}}%
\def\lmidtwotext#1{{\m@idcomp
{\vss\hbox to \noteskip{\hss\text@sp #1}\vss}}}%
%\check
\def\metron#1#2{{\noteskip 10pt #1 1\ = #2}}%
%\check
%
%**************************************************************************
% definition standard, modifiables par l'usager
%**************************************************************************
%
\def\resetfacteurs{\topmargin=\z@\bottommargin=\z@\nullthick=\z@
\def\interfacteur{9}%
\def\bottomfacteur{3}%
\def\topfacteur{3}%
\elemskip=10pt\relax
\def\gluemaxskip{0.1\line@width}%
}%
\resetfacteurs
%\check
\def\normal{\ifdim\Interligne<0.1pt\computewidths\fi
\elemskip=2\Interligne
\def\notes{\vnotes 1.0\elemskip }%  double croches
\def\Notes{\vnotes 1.4\elemskip }%  croches
\def\NOtes{\vnotes 2.0\elemskip }%  croches pointees
\def\NOTes{\vnotes 2.8\elemskip }%  noires
\def\NOTEs{\vnotes 4.0\elemskip }%
\def\NOTES{\vnotes 5.6\elemskip }%
}%
\def\large{\normal\elemskip=2.4\Interligne}%
\def\etroit{\normal
\def\Notes{\vnotes 1.3\elemskip }%  croches
\def\NOtes{\vnotes 1.8\elemskip }%  croches pointees
\def\NOTes{\vnotes 2.6\elemskip }%  noires
\def\NOTEs{\vnotes 3.6\elemskip }%
\def\NOTES{\vnotes 5.2\elemskip }%
}%
%\check
\normal
\def\testseq{}%
\def\nspace{\vnotes 0.2\elemskip\sk\enotes}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\barfill{\leaders\hbox{ --}\hfill}%
\def\octnvrule{\vrule width \z@ height 3pt depth 3pt}%
\def\octvrule{\vrule width \lthick height 3pt depth 3pt}%
\def\octsup#1#2{\zcharnote{#1}{\hbox to #2\noteskip
{\llap{\rm 8}\barfill\octnvrule}}}%
\def\Octsup#1#2{\zcharnote{#1}{\hbox to #2{\rm 8\barfill\octnvrule}}}%
%\check
\def\octfin#1#2{\zcharnote{#1}{\hbox to #2\noteskip{\llap{\rm 8}\barfill
--\octvrule}}}%
\def\Octfin#1#2{\zcharnote{#1}{\hbox to #2{\rm 8\barfill
--\octvrule}}}%
\def\octline#1{\zcharnote{#1}{\hbox to \line@width{\llap{\rm 8}\barfill
\octnvrule\hskip 12\internote}}}%
\def\Octline#1{\zcharnote{#1}{\hbox to \line@width{\rm 8\barfill
\octnvrule\hskip 8\internote}}}%
%\check
\def\xtuplet#1#2{\global\n@l=#1\relax\global\advance\n@l by -1\relax
{\divide\noteskip by \n@l\relax\zcharnote{#2}{\kern\n@l\noteskip
 \hbox to\z@{\hss\it #1\hss}}}}%
\def\triolet{\xtuplet3}%
%\check
%
\let\wlog=\@plainwlog
%
 


% adjustable beam slopes
% #1: beam number, #2: starting pitch, #3: ending pitch, #4: extension (number
%                                                            of \noteskip's)
\def\Ibu#1{\selectpoutre{#1}\I@bu{\i@bu}}%
\def\Ibbu#1{\selectpoutre{#1}\I@bu{\i@bbu}}%
\def\Ibbbu#1{\selectpoutre{#1}\I@bu{\i@bbbu}}%
\def\Ibbbbu#1{\selectpoutre{#1}\I@bu{\i@bbbbu}}%
\def\Ibl#1{\selectpoutre{#1}\I@bl{\i@bl}}%
\def\Ibbl#1{\selectpoutre{#1}\I@bl{\i@bbl}}%
\def\Ibbbl#1{\selectpoutre{#1}\I@bl{\i@bbbl}}%
\def\Ibbbbl#1{\selectpoutre{#1}\I@bl{\i@bbbbl}}%
%
\newcount\s@lopenum
\newcount\the@pitch
\newdimen\b@eamlength
%
% compute altitude difference of tried beam in \y@iv
% and compare with notes altitude difference
%
\def\I@buuchk{\y@iv=0.05\b@eamlength\multiply \y@iv by \s@lopenum\relax
\ifdim \y@iv>\n@ii\internote\relax
  \advance\s@lopenum by -1\relax\I@buuchk
\fi
\ifnum \s@lopenum>9\relax  \advance\n@i by 1\relax
  \advance\n@ii by -1\relax\I@buuchk
\fi}%
%
\def\I@budchk{\y@iv=0.05\b@eamlength\multiply \y@iv by \s@lopenum\relax
\ifdim \y@iv<\n@ii\internote\relax
  \advance\s@lopenum by 1\relax\I@budchk
\fi}%
%
\def\I@bu#1#2#3#4{{\inhgetn@i{#3}\n@ii=\n@i\relax
\inhgetn@i{#2}\advance\n@ii by -\n@i\relax
\b@eamlength=\noteskip
\multiply\b@eamlength by #4\relax
\ifnum\n@ii=0\relax
   \edef\I@boper{\noexpand #1}\I@boper{#2}0\relax
\else\ifnum\n@ii>0\relax\s@lopenum=10\relax \I@buuchk
      \else \s@lopenum=-10\relax \I@budchk
      \fi
   \edef\I@boper{\noexpand #1{\the\n@i}{\the\s@lopenum}\relax}\I@boper
\fi}}%
%
%\check
%
\def\I@bldchk{\y@iv=0.05\b@eamlength\multiply \y@iv by \s@lopenum\relax
\ifdim \y@iv<\n@ii\internote\relax
  \advance\s@lopenum by 1\relax\I@bldchk
\fi
\ifnum \s@lopenum<-9\relax  \advance\n@i by -1\relax
  \advance\n@ii by 1\relax\I@bldchk
\fi}%
%
\def\I@bluchk{\y@iv=0.05\b@eamlength\multiply \y@iv by \s@lopenum\relax
\ifdim \y@iv>\n@ii\internote\relax
  \advance\s@lopenum by -1\relax\I@bluchk
\fi}%
%
\def\I@bl#1#2#3#4{{\inhgetn@i{#3}\n@ii=\n@i\relax
\inhgetn@i{#2}\advance\n@ii by -\n@i\relax
\b@eamlength=\noteskip
\multiply\b@eamlength by #4\relax
\ifnum\n@ii=0\relax
   \edef\I@boper{\noexpand #1}\I@boper{#2}0\relax
\else\ifnum\n@ii>0\relax\s@lopenum=10\relax \I@bluchk
      \else \s@lopenum=-10\relax \I@bldchk
      \fi
   \edef\I@boper{\noexpand #1{\the\n@i}{\the\s@lopenum}\relax}\I@boper
\fi}}%
%
%\check
% sets of double notes with computed slopes
\def\Dqbbl#1#2{\Ibbl0{#1}{#2}1\qb0{#1}\tqb0{#2}}%
\def\Dqbbu#1#2{\Ibbu0{#1}{#2}1\qh0{#1}\tqh0{#2}}%
\def\Dqbl#1#2{\Ibl0{#1}{#2}1\qb0{#1}\tqb0{#2}}%
\def\Dqbu#1#2{\Ibu0{#1}{#2}1\qh0{#1}\tqh0{#2}}%
%\check
% sets of triple notes with computed slopes
\def\Tqbbl#1#2#3{\Ibbl0{#1}{#3}2\qb0{#1}\qb0{#2}\tqb0{#3}}%
\def\Tqbbu#1#2#3{\Ibbu0{#1}{#3}2\qh0{#1}\qh0{#2}\tqh0{#3}}%
\def\Tqbl#1#2#3{\Ibl0{#1}{#3}2\qb0{#1}\qb0{#2}\tqb0{#3}}%
\def\Tqbu#1#2#3{\Ibu0{#1}{#3}2\qh0{#1}\qh0{#2}\tqh0{#3}}%
%\check
% sets of quadruple notes with computed slopes
\def\Qqbbl#1#2#3#4{\Ibbl0{#1}{#4}3\qb0{#1}\qb0{#2}\qb0{#3}\tqb0{#4}}%
\def\Qqbbu#1#2#3#4{\Ibbu0{#1}{#4}3\qh0{#1}\qh0{#2}\qh0{#3}\tqh0{#4}}%
\def\Qqbl#1#2#3#4{\Ibl0{#1}{#4}3\qb0{#1}\qb0{#2}\qb0{#3}\tqb0{#4}}%
\def\Qqbu#1#2#3#4{\Ibu0{#1}{#4}3\qh0{#1}\qh0{#2}\qh0{#3}\tqh0{#4}}%
%\check
% posmusic.tex Version 0.1 decembre 1991 N. Brouard
\def\catcodemusic{
\catcode`\&=13
\catcode`\|=13
}
\def\nocatcodemusic{
\catcode`\&=4
\catcode`\|=12
}
\nocatcodemusic
\newenvironment{music}{\catcodemusic}{\nocatcodemusic}
%-% End of musictex.sty
