% Licence % This file is part of Violon, a violin score engine. % Copyright (C) 2009-2013 Julien Moutinho % % This program is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published % by the Free Software Foundation, either version 3 of the License, % or any later version. % % This program 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 this program. If not, see . % % Any comment or contribution is welcome % at julm+tex+violon&autogeree.net. % Package \def\fileversion{1.0}% \def\filedate{2013/10/02}% \NeedsTeXFormat{LaTeX2e}% \ProvidesPackage{violon}[\filedate\space\fileversion\space% Violin score library (Julien Moutinho)]% % \usepackage \usepackage{ifthen}% \usepackage{color}% \usepackage{verbatim}% % Utilitaires % math \newcount\modulo@% \def\modulo#1by#2{% \modulo@=#1\relax% \divide\modulo@ by#2\relax% \multiply\modulo@ by-#2\relax% \advance\modulo@ by#1\relax% \the\modulo@% }% \def\romannumeralz#1{% \ifnum#1>\z@\romannumeral#1\else\number#1\fi% }% % \text \begingroup% \catcode`\[ = 1\relax% \catcode`\] = 2\relax% \catcode`\{ = 12\relax% \catcode`\} = 12 \relax% \gdef\textcurlybraceopen[{]% \gdef\textcurlybraceclose[}]% \endgroup% % \par \parindent=0pt\relax% \parskip=0pt\relax% \parfillskip=0pt\relax% % \new \newdimen\dimen@% \newdimen\dimen@@% \newcount\count@@% % \setfontsize \def\ssmall{% \@setfontsize\ssmall\@viiipt\@ixpt% }% \def\sssmall{% \@setfontsize\sssmall{6pt}{6pt}% }% \def\ssssmall{% \@setfontsize\sssmall{5pt}{5pt}% }% % \if \def\isundefined#1{TT\fi\ifx#1\undefined}% % @vln@trace \newif% \if@vln@trace@% \@vln@trace@false% \def\@vln@trace#1#2{% \if@vln@trace@% \message{TRACE: #1: #2^^J}% \fi% }% % @vln@debug \def\@vln@debug{% \message{^^JDEBUG: @vln@item: \the\@vln@item^^J}% \@for\@type:=\@vln@item@types\do{% \message{DEBUG: @vln@\@type\space= \the\csname @vln@\@type\endcsname^^J}% }% }% % \@vln@staff \newlength\@vln@staff@vdim@skip% \newlength% \@vln@staff@vdim% \@vln@staff@vdim=0pt\relax% \newdimen% \@vln@staff@semitone@vdim% \@vln@staff@semitone@vdim=3pt% \newlength% \@vln@staff@interv@skip% \@vln@staff@interv@skip=\@vln@staff@semitone@vdim\relax% \multiply\@vln@staff@interv@skip by 2\relax% \newlength% \@vln@staff@skip% \@vln@staff@skip=0pt\relax% \def\@vln@staff@hsize@max{\hsize}% \def\@vln@staff@vsize@max{\textheight}% \def\@vln@staff@tone@vskip{% \advance\@vln@staff@vdim by\@vln@staff@semitone@vdim% \nobreak% }% % \definecolor \definecolor{colVlnStaffSemiToneToneEven}{gray}{0.98}% \definecolor{colVlnStaffSemiToneToneOdd}{gray}{1}% \definecolor{colVlnStaffSemiToneToneFifth}{gray}{0.92}% \def\@vln@staff@semitone@line@output rank:#1{% {% \color{colVlnStaffSemiToneTone#1}% \hrule depth 0pt height \@vln@staff@semitone@vdim width \@vln@staff@hsize@max% }% }% \def\@vln@staff@semitone@five@output{% \@vln@staff@semitone@line@output rank:{Odd}% \@vln@staff@tone@vskip% \@vln@staff@semitone@line@output rank:{Even}% \@vln@staff@tone@vskip% \@vln@staff@semitone@line@output rank:{Odd}% \@vln@staff@tone@vskip% \@vln@staff@semitone@line@output rank:{Even}% \@vln@staff@tone@vskip% \@vln@staff@semitone@line@output rank:{Fifth}% \@vln@staff@tone@vskip% }% \def\@vln@staff@semitone@output{% \@vln@staff@semitone@line@output rank:{Fifth}\@vln@staff@tone@vskip% \@vln@staff@semitone@five@output% \@vln@staff@semitone@five@output% \@vln@staff@semitone@five@output% \@vln@staff@semitone@five@output% \@vln@staff@semitone@five@output% }% \newlength% \@vln@staff@note@hskip% \@vln@staff@note@hskip=0pt\relax% \newlength% \@vln@staff@note@vskip% \@vln@staff@note@vskip=0pt\relax% \gdef\@vln@staff@output{% \nobreak\vskip\@vln@staff@vdim@skip% \nobreak\vskip\@vln@staff@vdim% \advance\@vln@staff@skip by\@vln@staff@vdim\relax% \dimen@=\@vln@staff@skip\relax% \advance\dimen@ by\@vln@staff@vdim\relax% \ifnum\dimen@>\@vln@staff@vsize@max% \@vln@staff@skip=0pt\relax% \break% \else% \advance\@vln@staff@skip by\@vln@staff@interv@skip\relax% \nobreak\vskip\@vln@staff@interv@skip% \fi% \@vln@staff@note@hskip=0pt\relax% \@vln@staff@vdim=0pt\relax% \@vln@staff@semitone@output% \advance\@vln@staff@vdim by\@vln@staff@semitone@vdim% \nobreak\vskip-\@vln@staff@vdim% }% \def\@vln@staff@output@automatic{% \dimen@=\@vln@staff@note@hskip% \advance\dimen@ by\@vln@note@hdim\relax% \ifnum\dimen@>\@vln@staff@hsize@max% \@vln@staff@output% \fi% }% % \@vln@cord@pitch \def\@vln@cord@pitch@def#1=#2{% \expandafter\edef\csname @vln@cord@pitch@#1\endcsname{#2}% }% \@vln@cord@pitch@def{0}={0}% G \@vln@cord@pitch@def{1}={7}% D \@vln@cord@pitch@def{2}={14}% A \@vln@cord@pitch@def{3}={21}% E \def\@vln@cord@pitch@#1{% \csname @vln@cord@pitch@#1\endcsname% }% % \@vln@octave@pitch \def\@vln@octave@pitch@def#1=#2{% \expandafter\edef\csname @vln@octave@pitch@#1\endcsname{#2}% }% \@vln@octave@pitch@def{G=}={0}% \@vln@octave@pitch@def{G+}={1}% \@vln@octave@pitch@def{A-}={1}% \@vln@octave@pitch@def{A=}={2}% \@vln@octave@pitch@def{A+}={3}% \@vln@octave@pitch@def{B-}={3}% \@vln@octave@pitch@def{B=}={4}% \@vln@octave@pitch@def{B+}={5}% \@vln@octave@pitch@def{C-}={4}% \@vln@octave@pitch@def{C=}={5}% \@vln@octave@pitch@def{C+}={6}% \@vln@octave@pitch@def{D-}={6}% \@vln@octave@pitch@def{D=}={7}% \@vln@octave@pitch@def{D+}={8}% \@vln@octave@pitch@def{E-}={8}% \@vln@octave@pitch@def{E=}={9}% \@vln@octave@pitch@def{E+}={10}% \@vln@octave@pitch@def{F-}={9}% \@vln@octave@pitch@def{F=}={10}% \@vln@octave@pitch@def{F+}={11}% \@vln@octave@pitch@def{G-}={11}% \def\@vln@octave@pitch@#1{% \csname @vln@octave@pitch@#1\endcsname% }% % \@vln@bar % \@vln@bar@output \definecolor{colVlnBar}{gray}{.85}% \def\@vln@bar@font{% \color{colVlnBar}% }% \def\@vln@bar@output{% \@vln@note@output@{0}% {}% {\vbox to0pt{% \dimen@\@vln@staff@vdim% \advance\dimen@ by -\@vln@note@vdim\relax% \advance\dimen@ by -\@vln@note@vdim\relax% \setbox0=\hbox{{\@vln@bar@font\vrule depth 0pt height \dimen@ width 0.1pt\relax}}% \nobreak\vskip\@vln@note@vdim\relax% \dp0=0pt\relax% \box0}}% {}% }% \def\@vln@bar@def{% \@vln@item@def{bar}% }% % \@vln@cresc % \@vln@cresc@left \def\@vln@cresc@left{}% \def\@vln@cresc@left@def#1{% \expandafter\edef\csname @vln@cresc@left\endcsname{#1}% }% % \@vln@cresc@right \def\@vln@cresc@right{}% \def\@vln@cresc@right@def#1{% \expandafter\edef\csname @vln@cresc@right\endcsname{#1}% }% \def\@vln@cresc@def way:#1{% \@vln@cresc@left@def{\@vln@cresc@right}% \@vln@cresc@right@def{#1}% }% % \@vln@note % \@vln@note@accidental \def\@vln@note@accidental@def#1{% \ifthenelse{\equal{#1}{.}}% {% \count@=\@vln@note% \advance\count@ by -1\relax% \expandafter\edef\csname @vln@note@accidental@\the\@vln@note\endcsname{% \@vln@note@accidental@{\the\count@}% }% }% {% \expandafter\edef\csname @vln@note@accidental@\the\@vln@note\endcsname{#1}% }% \@vln@trace{@vln@note@accidental@def}{@vln@note=\the\@vln@note: @vln@note@accidental=\@vln@note@accidental}% }% \def\@vln@note@accidental@#1{% \csname @vln@note@accidental@#1\endcsname% }% \def\@vln@note@accidental{% \csname @vln@note@accidental@\the\@vln@note\endcsname% }% % \@vln@note@accidental@output \def\@vln@note@accidental@output@def #1=#2{% \expandafter\edef\csname @vln@note@accidental@output@#1\endcsname{#2}% }% \@vln@note@accidental@output@def{-}={\kern-0.7pt$\flat$}% \@vln@note@accidental@output@def{=}={}% \@vln@note@accidental@output@def{+}={\kern-0.7pt$\sharp$}% \def\@vln@note@accidental@output{% \csname @vln@note@accidental@output@\the\@vln@note\endcsname% }% % \@vln@note@bow % \definecolor \definecolor{colVlnBowU}{gray}{0.50}% \definecolor{colVlnBowD}{gray}{0}% \definecolor{colVlnBowN}{gray}{1}% \def\@vln@note@bow@def#1{% \ifthenelse{\equal{#1}{C}}% {% \count@=\@vln@note% \advance\count@ by -1\relax% \ifthenelse{\equal{\@vln@note@bow@{\the\count@}}{U}}% {\expandafter\def\csname @vln@note@bow@\the\@vln@note\endcsname{D}}% {\expandafter\def\csname @vln@note@bow@\the\@vln@note\endcsname{U}}% }% {% \ifthenelse{\equal{#1}{.}}% {% \count@=\@vln@note% \advance\count@ by -1\relax% \expandafter\edef\csname @vln@note@bow@\the\@vln@note\endcsname% {\@vln@note@bow@{\the\count@}}% }% {% \expandafter\def\csname @vln@note@bow@\the\@vln@note\endcsname{#1}% }% }% \@vln@trace{@vln@note@bow@def}{@vln@note=\the\@vln@note: @vln@note@bow=\@vln@note@bow}% }% \def\@vln@note@bow@#1{% \csname @vln@note@bow@#1\endcsname% }% \def\@vln@note@bow{% \csname @vln@note@bow@\the\@vln@note\endcsname% }% % \@vln@note@bow@output \def\@vln@note@bow@output{% \@vln@trace{@vln@note@bow@output}{@vln@note=\the\@vln@note:}% \@vln@note@output@{\@vln@note@pos}% {\begingroup\expandafter\color{colVlnBow\@vln@note@bow}}% {% \hbox{% \ifthenelse{\equal{\@vln@note@bow}{N}}% {}% {% \vrule depth 0pt height \@vln@note@vdim width \@vln@note@hdim\relax% \nobreak\hskip-\@vln@note@hdim\relax% \@vln@note@cresc@output% }% }% }% {\endgroup}% }% % \@vln@note@chord \def\@vln@note@chord@def#1{% \expandafter\edef\csname @vln@note@chord@\the\@vln@note\endcsname{#1}% }% \def\@vln@note@chord@#1{% \csname @vln@note@chord@#1\endcsname% }% \def\@vln@note@chord{% \csname @vln@note@chord@\the\@vln@note\endcsname% }% % \@vln@note@chord@output \def\@vln@note@chord@output{% \ifthenelse{\equal{\@vln@note@chord}{true}}% {% }% {% \advance\@vln@staff@note@hskip by\@vln@note@hdim\relax% }% }% % \@vln@note@cord \def\@vln@note@cord@def#1{% \ifthenelse{\equal{#1}{.}}% {% \count@=\@vln@note% \advance\count@ by -1\relax% \expandafter\edef\csname @vln@note@cord@\the\@vln@note\endcsname{% \@vln@note@cord@{\the\count@}% }% }% {% \expandafter\edef\csname @vln@note@cord@\the\@vln@note\endcsname{#1}% }% \@vln@trace{@vln@note@cord@def}{@vln@note=\the\@vln@note: @vln@note@cord=\@vln@note@cord}% }% \def\@vln@note@cord@#1{% \csname @vln@note@cord@#1\endcsname% }% \def\@vln@note@cord{% \csname @vln@note@cord@\the\@vln@note\endcsname% }% \def\@vln@note@cord@pitch{% \@vln@cord@pitch@{\@vln@note@cord}% }% % \@vln@note@cresc % \@vln@note@cresc@left \def\@vln@note@cresc@left@def#1{% \expandafter\edef\csname @vln@note@cresc@left@\the\@vln@note\endcsname{#1}% }% \def\@vln@note@cresc@left@#1{% \csname @vln@note@cresc@left@#1\endcsname% }% \def\@vln@note@cresc@left{% \csname @vln@note@cresc@left@\the\@vln@note\endcsname% }% % \@vln@note@cresc@right \def\@vln@note@cresc@right@def#1{% \expandafter\edef\csname @vln@note@cresc@right@\the\@vln@note\endcsname{#1}% }% \def\@vln@note@cresc@right@#1{% \csname @vln@note@cresc@right@#1\endcsname% }% \def\@vln@note@cresc@right{% \csname @vln@note@cresc@right@\the\@vln@note\endcsname% }% \def\@vln@note@cresc@def{% \@vln@note@cresc@left@def{\@vln@cresc@left}% \@vln@note@cresc@right@def{\@vln@cresc@right}% }% % \@vln@note@cresc@output \definecolor{colVlnCrescD}{rgb}{0,0.66,0}% \definecolor{colVlnCrescU}{rgb}{1,0,0}% \def\@vln@note@cresc@output{% \dimen@=\@vln@note@vdim% \divide\dimen@ by 3\relax% \dimen@@=\@vln@note@hdim% \divide\dimen@@ by 2\relax% \ifthenelse{\equal{\@vln@note@cresc@left}{}}% {% \ifthenelse{\equal{\@vln@note@cresc@right}{}}% {% }% {% \vrule depth 0pt height 0pt width \dimen@@\relax% \color{colVlnCresc\@vln@note@cresc@right}% \vrule depth 0pt height \dimen@ width \dimen@@\relax% }% }% {% \ifthenelse{\equal{\@vln@note@cresc@right}{}}% {% \color{colVlnCresc\@vln@note@cresc@left}% \vrule depth 0pt height \dimen@ width \dimen@@\relax% }% {% \color{colVlnCresc\@vln@note@cresc@left}% \vrule depth 0pt height \dimen@ width \dimen@@\relax% \color{colVlnCresc\@vln@note@cresc@right}% \vrule depth 0pt height \dimen@ width \dimen@@\relax% }% }% }% % \@vln@note@finger \def\@vln@note@finger@def#1{% \ifthenelse{\equal{#1}{.}}% {% \count@=\@vln@note% \advance\count@ by -1\relax% \expandafter\edef\csname @vln@note@finger@\the\@vln@note\endcsname{% \@vln@note@finger@{\the\count@}% }% }% {% \expandafter\edef\csname @vln@note@finger@\the\@vln@note\endcsname{#1}% }% \@vln@trace{@vln@note@finger@def}{@vln@note=\the\@vln@note: @vln@note@finger=\@vln@note@finger}% }% \def\@vln@note@finger@#1{% \csname @vln@note@finger@#1\endcsname% }% \def\@vln@note@finger{% \csname @vln@note@finger@\the\@vln@note\endcsname% }% % \@vln@note@finger@output %\definecolor{colVlnBowFinger}{rgb}{0,0,0}% \definecolor{colVlnBowFingerCord0}{rgb}{0,0,0}% \definecolor{colVlnBowFingerCord1}{rgb}{0,0.66,0}% \definecolor{colVlnBowFingerCord2}{rgb}{0,0,1}% \definecolor{colVlnBowFingerCord3}{rgb}{1,0,0}% \def\@vln@finger@font{% \expandafter\color{colVlnBowFingerCord\@vln@note@cord}% \fontfamily{pnc}\bfseries\sssmall% }% \def\@vln@note@finger@output{% \ifthenelse{\equal{\@vln@note@bow}{N}}% {}% {% \@vln@note@output@{\@vln@note@pos}% {}% {% \vbox to0pt{% \setbox0=\hbox{{\@vln@finger@font{\@vln@note@finger}}}% \nobreak\vskip\@vln@note@vdim\relax% \nobreak\vskip0.2mm\relax% \dp0=0pt\relax% NOTE: to prevent fonts like pnc to mess up the vertical alignment \box0% }% }% {}% }% }% % \@vln@note@octave \def\@vln@note@octave@def#1{% \ifthenelse{\equal{#1}{.}}% {% \count@=\@vln@note% \advance\count@ by -1\relax% \expandafter\edef\csname @vln@note@octave@\the\@vln@note\endcsname{% \@vln@note@octave@{\the\count@}% }% }% {% \expandafter\edef\csname @vln@note@octave@\the\@vln@note\endcsname{#1}% }% \@vln@trace{@vln@note@octave@def}{@vln@note=\the\@vln@note: @vln@note@octave=\@vln@note@octave}% }% \def\@vln@note@octave@#1{% \csname @vln@note@octave@#1\endcsname% }% \def\@vln@note@octave{% \csname @vln@note@octave@\the\@vln@note\endcsname% }% \def\@vln@note@octave@pitch{% \expandafter\@vln@octave@pitch@{\@vln@note@semitone}% }% % \@vln@note@pitch \newcount\@vln@note@pitch@count% \def\@vln@note@pitch@def{% \@vln@note@pitch@count=\@vln@note@octave% \multiply\@vln@note@pitch@count by 12\relax% \advance\@vln@note@pitch@count by\@vln@note@octave@pitch% \expandafter\edef\csname @vln@note@pitch@\the\@vln@note\endcsname{\the\@vln@note@pitch@count}% \@vln@trace{@vln@note@pitch@def}{@vln@note=\the\@vln@note: @vln@note@pitch=\@vln@note@pitch}% }% \def\@vln@note@pitch@#1{% \csname @vln@note@pitch@#1\endcsname% }% \def\@vln@note@pitch{% \csname @vln@note@pitch@\the\@vln@note\endcsname% }% % \@vln@note@pos \newcount\@vln@note@pos@count% \def\@vln@note@pos@def{% \@vln@note@pos@count=\@vln@note@pitch% \advance\@vln@note@pos@count by -\@vln@note@cord@pitch% \expandafter\edef\csname @vln@note@pos@\the\@vln@note\endcsname{\the\@vln@note@pos@count}% \@vln@trace{@vln@note@pos@def}{@vln@note=\the\@vln@note: @vln@note@pos=\@vln@note@pos}% }% \def\@vln@note@pos@#1{% \csname @vln@note@pos@#1\endcsname% }% \def\@vln@note@pos{% \csname @vln@note@pos@\the\@vln@note\endcsname% }% % \@vln@note@semitone \def\@vln@note@semitone{% \@vln@note@tone% \@vln@note@accidental% }% % \@vln@note@semitone@output \definecolor{colVlnOctave0}{rgb}{0,0,0}% \definecolor{colVlnOctave1}{rgb}{0,0.66,0}% \definecolor{colVlnOctave2}{rgb}{0,0,1}% \definecolor{colVlnOctave3}{rgb}{1,0,0}% \definecolor{colVlnOctave4}{rgb}{1,1,0}% \def\@vln@note@semitone@font{% \expandafter\color{colVlnOctave\@vln@note@octave}% \fontfamily{pnc}\scshape\ssssmall% }% \def\@vln@note@semitone@output{% \ifthenelse{\equal{\@vln@note@bow}{N}}% {}% {% \@vln@note@output@{\@vln@note@pos}% {}% {% \vbox to0pt{% \setbox0=\hbox{{\@vln@note@semitone@font{\@vln@note@tone\@vln@note@accidental@output}}}% \nobreak\vskip-0.275mm\relax% \nobreak\vskip-\ht0\relax% %\vskip-\dp0\relax% \dp0=0pt\relax% NOTE: to prevent fonts like pnc to mess up the vertical alignment \box0% }% }% {}% }% }% % \@vln@note@time \def\@vln@note@time@def#1{% \expandafter\edef\csname @vln@note@time@\the\@vln@note\endcsname{#1}% \@vln@trace{@vln@note@time@def}{@vln@note=\the\@vln@note: @vln@note@time=\@vln@note@time}% }% \def\@vln@note@time@#1{% \csname @vln@note@time@#1\endcsname% }% \def\@vln@note@time{% \@vln@note@time@{\the\@vln@note}% }% % \@vln@note@time@num \def\@vln@note@time@num@def#1{% \ifthenelse{\equal{#1}{.}}% {% \ifnum\@vln@note@time=\z@% \count@=\@vln@note% \advance\count@ by -1\relax% \count@@=\@vln@note@time@{\the\count@}% \advance\count@@ by -1\relax% \expandafter\edef\csname @vln@note@time@num@\the\@vln@note @\@vln@note@time\endcsname{% \@vln@note@time@num@@{\the\count@}{\the\count@@}% }% \else% \count@=\@vln@note@time% \advance\count@ by -1\relax% \expandafter\edef\csname @vln@note@time@num@\the\@vln@note @\@vln@note@time\endcsname{% \@vln@note@time@num@{\the\count@}% }% \fi% }% {% \expandafter\edef\csname @vln@note@time@num@\the\@vln@note @\@vln@note@time\endcsname{#1}% }% \@vln@trace{@vln@note@time@num@def}{@vln@note=\the\@vln@note: @vln@note@time@num@=\@vln@note@time@num@{\@vln@note@time}}% }% \def\@vln@note@time@num@@#1#2{% \csname @vln@note@time@num@#1@#2\endcsname% }% \def\@vln@note@time@num@#1{% \csname @vln@note@time@num@\the\@vln@note @#1\endcsname% }% % \@vln@note@time@den \def\@vln@note@time@den@def#1{% \ifthenelse{\equal{#1}{.}}% {% \ifnum\@vln@note@time=\z@% \count@=\@vln@note% \advance\count@ by -1\relax% \count@@=\@vln@note@time@{\the\count@}% \advance\count@@ by -1\relax% \expandafter\edef\csname @vln@note@time@den@\the\@vln@note @\@vln@note@time\endcsname{% \@vln@note@time@den@@{\the\count@}{\the\count@@}% }% \else% \count@=\@vln@note@time% \advance\count@ by -1\relax% \expandafter\edef\csname @vln@note@time@den@\the\@vln@note @\the\count@\endcsname{% \@vln@note@time@den@{\the\count@}% }% \fi% }% {% \expandafter\edef\csname @vln@note@time@den@\the\@vln@note @\@vln@note@time\endcsname{#1}% }% \@vln@trace{@vln@note@time@den@def}{@vln@note=\the\@vln@note: @vln@note@time@den@=\@vln@note@time@den@{\@vln@note@time}}% }% \def\@vln@note@time@den@@#1#2{% \csname @vln@note@time@den@#1@#2\endcsname% }% \def\@vln@note@time@den@#1{% \csname @vln@note@time@den@\the\@vln@note @#1\endcsname% }% % \@vln@note@hdim \def\@vln@note@hdim@unit{2cm}% \newif% \if@vln@note@time@hdim@% \@vln@note@time@hdim@true% \newcount\@vln@note@hdim@def@loop% \def\@vln@note@hdim@def{% \if@vln@note@time@hdim@% \expandafter\def\csname @vln@note@hdim@\the\@vln@note\endcsname{0pt}% \@vln@note@hdim@def@loop=0% \whiledo{\@vln@note@hdim@def@loop<\@vln@note@time}{% \dimen@=\@vln@note@hdim@unit% \multiply\dimen@ by\@vln@note@time@num@{\the\@vln@note@hdim@def@loop}\relax% \divide\dimen@ by\@vln@note@time@den@{\the\@vln@note@hdim@def@loop}\relax% \advance\dimen@ by\@vln@note@hdim\relax% \expandafter\edef\csname @vln@note@hdim@\the\@vln@note\endcsname{\the\dimen@}% \advance\@vln@note@hdim@def@loop by 1\relax% }% \else% \expandafter\edef\csname @vln@note@hdim@\the\@vln@note\endcsname{\@vln@note@hdim@unit}% \fi% \@vln@trace{@vln@note@hdim@def}{@vln@note=\the\@vln@note: @vln@note@hdim=\@vln@note@hdim}% }% \def\@vln@note@hdim{% \csname @vln@note@hdim@\the\@vln@note\endcsname% }% % \@vln@note@time@output \newdimen% \@vln@note@vdim% \@vln@note@vdim=\@vln@staff@semitone@vdim% \newif% \if@vln@note@time@output@% \@vln@note@time@output@false% \def\@vln@note@time@font{% \fontfamily{pnc}\bfseries\ssssmall% }% \def\@vln@note@time@frac@output#1/#2{% \leavevmode% \hbox{#1}% \kern-.4ex\lower.3ex\hbox{\bfseries\tiny /}% \kern-.3ex\lower.6ex\hbox{#2}% }% \def\@vln@note@time@output{% \@vln@trace{@vln@note@time@output}{@vln@note=\the\@vln@note:}% \if@vln@note@time@output@% \null% \else% \@vln@note@output@{\@vln@note@pos}% {}% {% % FIXME: handle \@vln@note@time \vbox to0pt{% \setbox0=\hbox{% \ifthenelse{\equal{\@vln@note@time@den@0}{1}}% {{\@vln@note@time@font{\@vln@note@time@num@0}}}% {\@vln@note@time@frac@output% {\@vln@note@time@font{\@vln@note@time@num@0}}/% {\@vln@note@time@font{\@vln@note@time@den@0}}}% }% \nobreak\vskip\@vln@note@vdim\relax% \nobreak\vskip0.2mm\relax% \nobreak\hskip\@vln@note@hdim\relax% \nobreak\hskip-\wd0\relax% \dp0=0pt\relax% \box0% }% }% {}% \fi% }% % \@vln@note@tone \def\@vln@note@tone@def#1{% \ifthenelse{\equal{#1}{.}}% {% \count@=\@vln@note% \advance\count@ by -1\relax% \expandafter\edef\csname @vln@note@tone@\the\@vln@note\endcsname{% \@vln@note@tone@{\the\count@}% }% }% {% \expandafter\edef\csname @vln@note@tone@\the\@vln@note\endcsname{#1}% }% \@vln@trace{@vln@note@tone@def}{@vln@note=\the\@vln@note: @vln@note@tone=\@vln@note@tone}% }% \def\@vln@note@tone@#1{% \csname @vln@note@tone@#1\endcsname% }% \def\@vln@note@tone{% \csname @vln@note@tone@\the\@vln@note\endcsname% }% % \@vln@note@output \def\@vln@note@output@#1#2#3#4{% \count@=#1% \@vln@trace{@vln@note@output@}{@vln@note=\the\@vln@note: pos=\the\count@}% \nointerlineskip% \@vln@staff@note@vskip=0pt\relax% \advance\@vln@staff@note@vskip by\@vln@staff@semitone@vdim\relax% \multiply\@vln@staff@note@vskip by#1\relax% \advance\@vln@staff@note@vskip by\@vln@staff@semitone@vdim\relax% \nobreak\vskip\@vln@staff@note@vskip\relax% \vrule depth 0pt height 0pt width \@vln@staff@note@hskip\relax% \setbox0=#3% \advance\@vln@staff@note@vskip by\ht0\relax% #2% \box0% #4% \nobreak\vskip-\@vln@staff@note@vskip\relax% \nointerlineskip% }% \def\@vln@note@output{% \@vln@trace{@vln@note@output}{[ @vln@note=\the\@vln@note:}% \@vln@note@hdim@def% \@vln@staff@output@automatic% %\@vln@note@time@output% \@vln@note@bow@output% \@vln@note@finger@output% \@vln@note@semitone@output% \@vln@note@chord@output% \nointerlineskip% \@vln@trace{@vln@note@output}{] @vln@note=\the\@vln@note:}% }% \def\@vln@note@def@chord@{% \@ifnextchar&{% \@vln@trace{@vln@note@def@chord@}{| @vln@note=\the\@vln@note: chord=yes}% \def\next&{% \@vln@note@chord@def{yes}% \@vln@lily@note@def% \@vln@item@def type:{note}% }% \next% }{% \@vln@trace{@vln@note@def@chord@}{| @vln@note=\the\@vln@note: chord=false}% \@vln@note@chord@def{false}% \@vln@lily@note@def% \@vln@item@def type:{note}% }% }% \def\@vln@note@def@time@ tie:#1+#2#3{% \@vln@trace{@vln@note@def@time@}{| @vln@note=\the\@vln@note: tie=#1+#2#3}% \@vln@note@time@def{#1}% \@vln@note@time@num@def{#2}% \@vln@note@time@den@def{#3}% \count@=#1\relax% \advance\count@ by 1\relax% \@vln@note@time@def{\the\count@}% \@ifnextchar+% {\@vln@note@def@time@ tie:\@vln@note@time}% \@vln@note@def@chord@% }% \def\@vln@note@def octave:#1tone:#2accidental:#3cord:#4finger:#5bow:#6time:{% \@vln@trace{@vln@note@def}{octave=#1 tone=#2 accidental=#3 cord=#4 finger=#5 bow=#6}% \@vln@note@cresc@def% \@vln@note@octave@def{#1}% \@vln@note@tone@def{#2}% \@vln@trace{@vln@note@def}{BEGIN}% \@vln@note@accidental@def{#3}% \@vln@trace{@vln@note@def}{END}% \@vln@note@cord@def{#4}% \@vln@note@finger@def{#5}% \@vln@note@bow@def{#6}% \@vln@note@pitch@def% \@vln@note@pos@def% \@vln@note@def@time@ tie:{0}+% }% % \@vln@part % \@vln@part@text \def\@vln@part@text@def#1{% \expandafter\edef\csname @vln@part@text@\the\@vln@part\endcsname{#1}% }% \def\@vln@part@text@#1{% \csname @vln@part@text@#1\endcsname% }% \def\@vln@part@text{% \@vln@part@text@{\the\@vln@part}% }% % \@vln@part@output \definecolor{colVlnPart}{gray}{0}% \def\@vln@part@font{% \color{colVlnPart}% \fontfamily{pnc}\bfseries\sssmall% }% \def\@vln@part@up@output{% \@vln@note@output@{0}% {}% {\vbox to0pt{% \setbox0=\hbox{{\@vln@part@font{\@vln@part@text}}}% \nobreak\vskip-0.3mm\relax% \nobreak\vskip-\ht0\relax% \nobreak\vskip-\ht0\relax% \dp0=0pt\relax% NOTE: to prevent fonts like pnc to mess up the vertical alignment \box0}}% {}% }% \def\@vln@part@output{% \@vln@note@output@{0}% {}% {\vbox to0pt{% \setbox0=\hbox{{\@vln@part@font{\@vln@part@text}}}% \nobreak\vskip-0.3mm\relax% \nobreak\vskip-\ht0\relax% \dp0=0pt\relax% NOTE: to prevent fonts like pnc to mess up the vertical alignment \box0}}% {}% }% \def\@vln@part@def text:#1{% \@vln@part@text@def {#1}% \@vln@item@def type:{part}% }% % \@vln@item \newcount\@vln@item% % \@vln@item@type \def\@vln@item@type@def#1{% \expandafter\edef\csname @vln@item@type@\the\@vln@item\endcsname{#1}% }% \def\@vln@item@type@#1{% \csname @vln@item@type@#1\endcsname% }% \def\@vln@item@type{% \csname @vln@item@type@\the\@vln@item\endcsname% }% \def\@vln@item@types{% bar,% note,% part% }% \def\@vln@item@def type:#1{% \@vln@trace{@vln@item@def}{[ type=#1}% \@vln@item@type@def{#1}% \@vln@trace{@vln@item@def}{| @vln@item@type@{\the\@vln@item} = \@vln@item@type@{\the\@vln@item}}% \expandafter\advance% \csname @vln@\@vln@item@type@{\the\@vln@item}\endcsname% by 1\relax% \@vln@trace{@vln@item@def}{| @vln@\@vln@item@type@{\the\@vln@item} = \the\csname @vln@\@vln@item@type@{\the\@vln@item}\endcsname}% \advance\@vln@item by 1\relax% \@vln@trace{@vln@item@def}{]}% }% \@for\@type:=\@vln@item@types\do{% \expandafter\newcount\csname @vln@\@type\endcsname% }% \newcount\@vln@item@output@loop% \def\@vln@item@output{% \@vln@item@output@loop=0% \@for\@type:=\@vln@item@types\do{% \csname @vln@\@type\endcsname=0% }% \whiledo{\@vln@item@output@loop<\@vln@item}{% \csname @vln@\@vln@item@type@{\the\@vln@item@output@loop}@output\endcsname% \expandafter\advance% \csname @vln@\@vln@item@type@{\the\@vln@item@output@loop}\endcsname% by 1\relax% \advance\@vln@item@output@loop by 1\relax% }% }% % \@vln@lily % \@vln@lily@output \def\@vln@lily@output{}% \newcount\@vln@lily@output@loop% \def\@vln@lily@output@flush{% \@vln@trace{@vln@lily@output@flush}{}% %\ifthenelse{\equal{\@vln@lily@slur@begin}{}}% % {% % }% % {% % \@vln@lily@note@def@{\@vln@lily@slur@begin}={\@vln@lily@note@{\@vln@lily@slur@begin}(}% % \count@=\@vln@note% % \advance\count@ by -1\relax% % \@vln@lily@note@def@{\the\count@}={)\@vln@lily@note@{\the\count@}}% % \def\@vln@lily@slur@begin{}% % }% %\ifthenelse{\equal{\@vln@lily@note@time}{}}% % {% % }% % {% % \count@=\@vln@note% % \advance\count@ by -1\relax% % \@vln@lily@note@def@{\the\count@}={\@vln@lily@note\textcurlybraceclose}% % }% \@vln@lily@output@loop=0% \whiledo{\@vln@lily@output@loop<\@vln@note}{% \edef\@vln@lily@output{% \@vln@lily@output% \@vln@lily@note@output@{\the\@vln@lily@output@loop}% ^^J% }% \advance\@vln@lily@output@loop by 1\relax% }% }% \def\@vln@lily@output@write{% \newwrite\@vln@lily@output@file% \immediate\openout\@vln@lily@output@file=out.ly% \immediate\write\@vln@lily@output@file{\@vln@lily@output}% \immediate\closeout\@vln@lily@output@file% }% \def\@vln@lily@output@write@verbatim{% \@bsphack% \let\do\@makeother\dospecials% \catcode`\^^M\active \catcode`\^^I=12% \def\verbatim@processline{% \xdef\@vln@lily@output{\@vln@lily@output\the\verbatim@line^^J}% }% \verbatim@start% }% \def\end@vln@lily@output@write@verbatim{% \@esphack% }% % \@vln@lily@time \def\@vln@lily@time@def#1/#2=#3#4{% \expandafter\def\csname @vln@lily@time@times@#1/#2\endcsname{#3}% \expandafter\def\csname @vln@lily@time@wholedotted@#1/#2\endcsname{#4}% }% % FIXME: à compléter.. \@vln@lily@time@def 1/2={}{2}% \@vln@lily@time@def 2/2={}{1}% \@vln@lily@time@def 3/2={}{2.}% \@vln@lily@time@def 1/4={}{4}% \@vln@lily@time@def 2/4={}{2}% \@vln@lily@time@def 3/4={}{???}% \@vln@lily@time@def 4/4={}{1}% \@vln@lily@time@def 1/8={}{8}% \@vln@lily@time@def 2/8={}{4}% \@vln@lily@time@def 3/8={}{4.}% \@vln@lily@time@def 4/8={}{2}% \@vln@lily@time@def 5/8={}{???}% \@vln@lily@time@def 6/8={}{2.}% \@vln@lily@time@def 7/8={}{???}% \@vln@lily@time@def 8/8={}{1}% \@vln@lily@time@def 1/12={2/3}{8}% \@vln@lily@time@def 2/12={}{???}% \@vln@lily@time@def 3/12={}{???}% \@vln@lily@time@def 4/12={}{3}% \@vln@lily@time@def 5/12={}{???}% \@vln@lily@time@def 6/12={}{2}% \@vln@lily@time@def 7/12={}{???}% \@vln@lily@time@def 8/12={}{???}% \@vln@lily@time@def 9/12={}{???}% \@vln@lily@time@def 10/12={}{???}% \@vln@lily@time@def 11/12={}{???}% \@vln@lily@time@def 12/12={}{1}% \@vln@lily@time@def 1/16={}{16}% \@vln@lily@time@def 2/16={}{8}% \@vln@lily@time@def 3/16={}{8.}% \@vln@lily@time@def 4/16={}{4}% \@vln@lily@time@def 5/16={}{???}% \@vln@lily@time@def 6/16={}{???}% \@vln@lily@time@def 7/16={}{???}% \@vln@lily@time@def 8/16={}{2}% \@vln@lily@time@def 9/16={}{???}% \@vln@lily@time@def 10/16={}{???}% \@vln@lily@time@def 11/16={}{???}% \@vln@lily@time@def 12/16={}{???}% \@vln@lily@time@def 13/16={}{???}% \@vln@lily@time@def 14/16={}{???}% \@vln@lily@time@def 15/16={}{???}% \@vln@lily@time@def 16/16={}{1}% \@vln@lily@time@def 1/32={}{32}% \@vln@lily@time@def 2/32={}{16}% \@vln@lily@time@def 3/32={}{???}% \@vln@lily@time@def 4/32={}{8}% \@vln@lily@time@def 5/32={}{???}% \@vln@lily@time@def 6/32={}{???}% \@vln@lily@time@def 7/32={}{???}% \@vln@lily@time@def 8/32={}{4}% \@vln@lily@time@def 9/32={}{???}% \@vln@lily@time@def 10/32={}{???}% \@vln@lily@time@def 11/32={}{???}% \@vln@lily@time@def 12/32={}{???}% \@vln@lily@time@def 13/32={}{???}% \@vln@lily@time@def 14/32={}{???}% \@vln@lily@time@def 15/32={}{???}% \@vln@lily@time@def 16/32={}{2}% \@vln@lily@time@def 17/32={}{???}% \@vln@lily@time@def 18/32={}{???}% \@vln@lily@time@def 19/32={}{???}% \@vln@lily@time@def 20/32={}{???}% \@vln@lily@time@def 21/32={}{???}% \@vln@lily@time@def 22/32={}{???}% \@vln@lily@time@def 23/32={}{???}% \@vln@lily@time@def 24/32={}{???}% \@vln@lily@time@def 25/32={}{???}% \@vln@lily@time@def 26/32={}{???}% \@vln@lily@time@def 27/32={}{???}% \@vln@lily@time@def 28/32={}{???}% \@vln@lily@time@def 29/32={}{???}% \@vln@lily@time@def 30/32={}{???}% \@vln@lily@time@def 31/32={}{???}% \@vln@lily@time@def 32/32={}{1}% \def\@vln@lily@time@times@#1/#2{% \csname @vln@lily@time@times@#1/#2\endcsname% }% \def\@vln@lily@time@wholedotted@#1/#2{% \csname @vln@lily@time@wholedotted@#1/#2\endcsname% }% \def\@vln@lily@time@#1/#2{% \ifthenelse{\equal{\@vln@lily@time@times@#1/#2}{}}% {% % }% {% % }% }% % \@vln@lily@octave \def\@vln@lily@octave@def#1=#2{% \expandafter\def\csname @vln@lily@octave@#1\endcsname{#2}% }% \def\@vln@lily@octave@#1{% \csname @vln@lily@octave@#1\endcsname% }% \@vln@lily@octave@def{0}={}% \@vln@lily@octave@def{1}={'}% \@vln@lily@octave@def{2}={''}% \@vln@lily@octave@def{3}={'''}% % \@vln@lily@semitone \def\@vln@lily@semitone@def#1=#2{% \expandafter\def\csname @vln@lily@semitone@#1\endcsname{#2}% }% \@vln@lily@semitone@def{G=}={g}% \@vln@lily@semitone@def{G+}={gis}% \@vln@lily@semitone@def{A-}={aes}% \@vln@lily@semitone@def{A=}={a}% \@vln@lily@semitone@def{A+}={ais}% \@vln@lily@semitone@def{B-}={bes}% \@vln@lily@semitone@def{B=}={b}% \@vln@lily@semitone@def{B+}={bis}% \@vln@lily@semitone@def{C-}={ces}% \@vln@lily@semitone@def{C=}={c}% \@vln@lily@semitone@def{C+}={cis}% \@vln@lily@semitone@def{D-}={des}% \@vln@lily@semitone@def{D=}={d}% \@vln@lily@semitone@def{D+}={dis}% \@vln@lily@semitone@def{E-}={ees}% \@vln@lily@semitone@def{E=}={e}% \@vln@lily@semitone@def{E+}={eis}% \@vln@lily@semitone@def{F-}={fes}% \@vln@lily@semitone@def{F=}={f}% \@vln@lily@semitone@def{F+}={fis}% \@vln@lily@semitone@def{G-}={ges}% \def\@vln@lily@semitone@#1{% \csname @vln@lily@semitone@#1\endcsname% }% % \@vln@lily@note % \@vln@lily@note@name \def\@vln@lily@note@name@def{% \ifthenelse{\equal{\@vln@note@bow}{N}}% {% \expandafter\edef\csname @vln@lily@note@name@\the\@vln@note\endcsname{r}% }% {% \expandafter\edef\csname @vln@lily@note@name@\the\@vln@note\endcsname{\@vln@lily@semitone@{\@vln@note@semitone}}% }% }% \def\@vln@lily@note@name@#1{% \csname @vln@lily@note@name@#1\endcsname% }% \def\@vln@lily@note@name{% \csname @vln@lily@note@name@\the\@vln@note\endcsname% }% % \@vln@lily@note@octave \def\@vln@lily@note@octave@def{% \ifthenelse{\equal{\@vln@note@bow}{N}}% {% \expandafter\edef\csname @vln@lily@note@octave@\the\@vln@note\endcsname{}% }% {% \count@=\@vln@note@pitch\relax% \advance\count@ by 7\relax% \divide\count@ by 12\relax% \expandafter\edef\csname @vln@lily@note@octave@\the\@vln@note\endcsname{\@vln@lily@octave@{\the\count@}}% }% \@vln@trace{@vln@lily@note@octave@def}{@vln@note=\the\@vln@note: @vln@lily@note@octave=\@vln@lily@note@octave}% }% \def\@vln@lily@note@octave@#1{% \csname @vln@lily@note@octave@#1\endcsname% }% \def\@vln@lily@note@octave{% \csname @vln@lily@note@octave@\the\@vln@note\endcsname% }% % \@vln@lily@note@slur \def\@vln@lily@slur@begin{}% \def\@vln@lily@slur@end{}% \def\@vln@lily@note@slur@def{% \def\@vln@lily@slur@end{}% \count@=\@vln@note% \advance\count@ by -1\relax% \ifthenelse{\equal{\@vln@note@bow}{\@vln@note@bow@{\the\count@}}}% {% \count@=\@vln@note% \advance\count@ by -1\relax% \ifthenelse{\equal{\@vln@note@chord@{\the\count@}}{true}}% {% }% {% \ifthenelse{\equal{\@vln@lily@slur@begin}{}}% {% \edef\@vln@lily@slur@begin{\the\@vln@note}% }% {% }% }% }% {% \ifthenelse{\equal{\@vln@lily@slur@begin}{}}% {% }% {% \@vln@lily@note@def@{\@vln@lily@note@slur@begin}=% {\@vln@lily@note@{\@vln@lily@note@slur@begin}(}% ) \edef\@vln@lily@slur@begin{0}% \def\@vln@lily@slur@end{}% }% }% }% % \@vln@lily@note@time \newcount\@vln@lily@note@time@loop% \def\@vln@lily@note@time@def{% \expandafter\edef\csname @vln@lily@time@begin@\the\@vln@note\endcsname{% % }% \@vln@lily@note@time@loop=0% \expandafter\edef\csname @vln@lily@time@end@\the\@vln@note\endcsname{}% \whiledo{\@vln@lily@note@time@loop<\@vln@note@time}{% \edef\text@{% \@vln@note@time@num@{\the\@vln@lily@note@time@loop}% /% \@vln@note@time@den@{\the\@vln@lily@note@time@loop}% }% \expandafter\edef\csname @vln@lily@time@end@\the\@vln@note\endcsname{% \string~\csname @vln@lily@time@end@\the\@vln@note\endcsname% %\expandafter\@vln@lily@time@times@\text@% \@vln@lily@note@name\@vln@lily@note@octave% \expandafter\@vln@lily@time@wholedotted@\text@% }% \advance\@vln@lily@note@time@loop by 1\relax% }% }% \def\@vln@lily@note@def{% \@vln@trace{@vln@lily@note@def}{}% \@vln@lily@note@name@def% \@vln@lily@note@octave@def% \@vln@lily@note@time@def% %\@vln@lily@note@slur@def% \@vln@lily@note@output@def% }% % \@vln@lily@note@output \def\@vln@lily@note@output@def{% \ifthenelse{\equal{\@vln@note@chord}{true}}% {% \count@=\@vln@note% \advance\count@ by -1\relax% \ifthenelse{\equal{\@vln@note@chord@{\the\count@}}{true}}% {% \expandafter\edef\csname @vln@lily@note@output@\the\@vln@note\endcsname{% \space% \@vln@lily@note@name% \@vln@lily@note@octave% }% }% {% \expandafter\edef\csname @vln@lily@note@output@\the\@vln@note\endcsname{% %\@vln@lily@slur@end% %\@vln@lily@note@time@begin% <\@vln@lily@note@name% \@vln@lily@note@octave% }% }% }% {% \count@=\@vln@note% \advance\count@ by -1\relax% \ifthenelse{\equal{\@vln@note@chord@{\the\count@}}{true}}% {% \expandafter\edef\csname @vln@lily@note@output@\the\@vln@note\endcsname{% \space% \@vln@lily@note@name% \@vln@lily@note@octave% >% %\@vln@lily@note@time@end% }% }% {% \expandafter\edef\csname @vln@lily@note@output@\the\@vln@note\endcsname{% %\@vln@lily@slur@end% %\@vln@lily@note@time@begin% \@vln@lily@note@name% \@vln@lily@note@octave% %\@vln@lily@note@time@end% }% }% }% \@vln@trace{@vln@lily@note@output@def}{\@vln@lily@note@output}% }% \def\@vln@lily@note@output@#1{% \csname @vln@lily@note@output@#1\endcsname% }% \def\@vln@lily@note@output{% \csname @vln@lily@note@output@\the\@vln@note\endcsname% }% % Aliases \def\n#1#2#3#4#5#6{% \@vln@note@def octave:{#1}tone:{#2}accidental:{#3}cord:{#4}finger:{#5}bow:{#6}time:% }% \def\bar{% \@vln@bar@def% }% \def\c#1{% \@vln@cresc@def way:{#1}% }% \def\p#1{% \@vln@part@def text:{#1}% }% \def\lilyflush{\@vln@lily@output@flush}% \def\lilywrite{\@vln@lily@output@write}% %\edef\text@{\csname vlncurrtimenum0\endcsname/\csname vlncurrtimeden0\endcsname}% %\@latex@info{TRACE: vlnlilyduration: text@=\text@}% %% @begin % \let\vlnlilyduration@times@last\vlnlilyduration@times% % \edef\vlnlilyduration@times{% % \csname vlnlilyduration\text@ @times\endcsname% % }% % \ifthenelse{\equal{\vlnlilyduration@times}{}}% % {% % \ifthenelse{\equal{\vlnlilyduration@times@last}{}}% % {% % \edef\vlnlilyduration@begin{% % }% % }% % {% % \edef\vlnlilyduration@begin{% % \textcurlybraceclose% % }% % }% % }% % {% % \ifthenelse{\equal{\vlnlilyduration@times}{\vlnlilyduration@times@last}}% % {% % \edef\vlnlilyduration@begin{% % }% % }% % {% % \ifthenelse{\equal{\vlnlilyduration@times@last}{}}% % {% % \edef\vlnlilyduration@begin{% % \times \vlnlilyduration@times \textcurlybraceopen% % }% % }% % {% % \edef\vlnlilyduration@begin{% % \textcurlybraceclose \times \vlnlilydurationtimes \textcurlybraceopen% % }% % }% % }% % }% %% @end % \let\vlnlilyduration@wholedotted@last\vlnlilyduration@wholedotted% % \edef\vlnlilyduration@wholedotted{% % \csname vlnlilyduration\text@ @wholedotted\endcsname% % }% % \ifthenelse{\equal{\vlnlilyduration@wholedotted}{\vlnlilyduration@wholedotted@last}}% % {% % \edef\vlnlilyduration@end{% % }% % }% % {% % \edef\vlnlilyduration@end{% % \vlnlilyduration@wholedotted% % }% % }% %\@latex@info{TRACE: vlnlilyduration: @times=\vlnlilyduration@times}% %\@latex@info{TRACE: vlnlilyduration: @wholedotted=\vlnlilyduration@wholedotted}% %\@latex@info{TRACE: vlnlilyduration: @begin=\vlnlilyduration@begin}% %\@latex@info{TRACE: vlnlilyduration: @end=\vlnlilyduration@end}% % Phrasé % Accord