]> Git — Sourcephile - julm/violon-tex.git/commitdiff
Réécriture : organise et passe par une représentation des données sans état. master
authorJulien Moutinho <julm@autogeree.net>
Wed, 2 Oct 2013 06:21:59 +0000 (08:21 +0200)
committerJulien Moutinho <julm@autogeree.net>
Sun, 13 Oct 2013 04:36:35 +0000 (06:36 +0200)
violon.sty

index 8b2d9a9587ea2a6b2f39ffde3e8c67d67ac16e69..d9f056193115997bf4993e3a4239d3f5df2b9ca0 100644 (file)
-% This file is part of Violon, a violin score engine.
-% Copyright (C) 2009-2012  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 <http://www.gnu.org/licenses/>.
-
-% Any comment or contribution is welcome
-% at julm&autogeree.net.
-
-% Déclaration
+% 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 <http://www.gnu.org/licenses/>.
+       %
+       % Any comment or contribution is welcome
+       % at julm+tex+violon&autogeree.net.
+% Package
        \def\fileversion{1.0}%
-       \def\filedate{2009/10/11}%
+       \def\filedate{2013/10/02}%
        \NeedsTeXFormat{LaTeX2e}%
        \ProvidesPackage{violon}[\filedate\space\fileversion\space%
                Violin score library (Julien Moutinho)]%
-% Bibliothèques
+% \usepackage
        \usepackage{ifthen}%
        \usepackage{color}%
        \usepackage{verbatim}%
-% Polices
-       \gdef\ssssmall{%
-               \@setfontsize\sssmall{5pt}{5pt}}%
-       \gdef\sssmall{%
-               \@setfontsize\sssmall{6pt}{6pt}}%
-       \gdef\ssmall{%
-               \@setfontsize\ssmall\@viiipt\@ixpt}%
-       \gdef\vlnfingerfont{%
-               \expandafter\color{colVlnBowFingerCord\vlncurrcord}%
-               \fontfamily{pnc}\bfseries\sssmall}%
-       \gdef\vlncordfont{%
-               \color{colVlnBowCord}%
-               \fontfamily{pnc}\bfseries\sssmall}%
-       \gdef\vlnnamefont{%
-               \expandafter\color{colVlnBowNameOctave\the\vlncurroctave}%
-               \fontfamily{pnc}\scshape\ssssmall}%
-       \gdef\vlnpartfont{%
-               \color{colVlnPart}%
-               \fontfamily{pnc}\bfseries\sssmall}%
-       \gdef\vlntimefont{%
-               \fontfamily{pnc}\bfseries\ssssmall}%
-% Algèbre
-       \newcount\@calc@mod@cnt%
-       \def\modulo#1#2{%
-               \@calc@mod@cnt=#1\relax%
-               \divide\@calc@mod@cnt by#2\relax%
-               \multiply\@calc@mod@cnt by#2\relax%
-               \advance#1 by-\@calc@mod@cnt%
+% 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%
         }%
-% Convertisseurs
-       \def\romannumeralz#1{%
-               \ifnum#1>\z@\romannumeral#1\else\number#1\fi%
+       % \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%
+               }%
         }%
-% Moteur
-       % Constantes
-               % Couleurs
-                       %\definecolor{colVlnBowU}{rgb}{0.24,0.92,0.24}%
-                       %\definecolor{colVlnBowD}{rgb}{0.80,0,0}%
-                       %\definecolor{colVlnBowU}{rgb}{0.30,0.75,0.75}%
+       \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}%
-                       \definecolor{colVlnBowCord}{rgb}{0,1,0}%
-                       \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}%
-                       \definecolor{colVlnBowName}{rgb}{1,0,0}%
-                       \definecolor{colVlnBowNameOctave0}{rgb}{0,0,0}%
-                       \definecolor{colVlnBowNameOctave1}{rgb}{0,0.66,0}%
-                       \definecolor{colVlnBowNameOctave2}{rgb}{0,0,1}%
-                       \definecolor{colVlnBowNameOctave3}{rgb}{1,0,0}%
-                       \definecolor{colVlnBowNameOctave4}{rgb}{1,1,0}%
-                       \definecolor{colVlnLineHalfToneEven}{gray}{0.98}%
-                       \definecolor{colVlnLineHalfToneOdd}{gray}{1}%
-                       \definecolor{colVlnLineHalfToneFifth}{gray}{0.92}%
-                       \definecolor{colVlnPart}{gray}{0}%
-                       \definecolor{colVlnBar}{gray}{.85}%
+               \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}%
-       % Portée
-               % Déclarations
-                       \newdimen\vlnstaffhalftonelinevdim%
-                       \newskip\vlnstaffvdim%
-                       \def\vlnstaffvdimpre{0pt}%
-                       \newskip\vlnstaffintervskip%
-                       \newskip\vlnstaffvskip%
-               % Initialisations
-                       \def\vlnstaffhsize{\hsize}%
-                       \def\vlnstaffmaxvsize{\textheight}%
-                       \vlnstaffhalftonelinevdim=3pt%
-                       \vlnstaffvdim=0pt\relax%
-                       \vlnstaffvskip=0pt\relax%
-                       \vlnstaffintervskip=\vlnstaffhalftonelinevdim\relax%
-                       \multiply\vlnstaffintervskip by 2\relax%
-               \def\vlnstaffhalftoneline#1{%
-                       {\color{colVlnLineHalfTone#1}\hrule depth 0pt height \vlnstaffhalftonelinevdim width \vlnstaffhsize }}%
-               \def\vlnstafftoneskip{%
-                       \advance\vlnstaffvdim by\vlnstaffhalftonelinevdim%
-                       \nobreak%
-                }%
-               \def\vlnstafffivehalftonelines{%
-                       \vlnstaffhalftoneline{Odd}\vlnstafftoneskip%
-                       \vlnstaffhalftoneline{Even}\vlnstafftoneskip%
-                       \vlnstaffhalftoneline{Odd}\vlnstafftoneskip%
-                       \vlnstaffhalftoneline{Even}\vlnstafftoneskip%
-                       \vlnstaffhalftoneline{Fifth}\vlnstafftoneskip%
-                }%
-               \def\vlnstaffallhalftonelines{%
-                       \vlnstaffhalftoneline{Fifth}\vlnstafftoneskip%
-                       \vlnstafffivehalftonelines%
-                       \vlnstafffivehalftonelines%
-                       \vlnstafffivehalftonelines%
-                       \vlnstafffivehalftonelines%
-                       \vlnstafffivehalftonelines%
-                }%
-               \def\vlnstaff{%
-                       \nobreak\vskip\vlnstaffvdimpre%
-                       \nobreak\vskip\vlnstaffvdim%
-                       \advance\vlnstaffvskip by\vlnstaffvdim\relax%
-                       \count@\vlnstaffvskip\relax%
-                       \advance\count@ by\vlnstaffvdim\relax%
-                       \ifnum\count@>\vlnstaffmaxvsize%
-                               \vlnstaffvskip=0pt\relax%
-                               \break%
-                        \else%
-                               \advance\vlnstaffvskip by\vlnstaffintervskip\relax%
-                               \nobreak\vskip\vlnstaffintervskip%
-                        \fi%
-                       \vlnnotehskip=0pt\relax%
-                       \vlnstaffvdim=0pt\relax%
-                       \vlnstaffallhalftonelines%
-                       \advance\vlnstaffvdim by\vlnstaffhalftonelinevdim%
-                       \nobreak\vskip-\vlnstaffvdim%
-                }%
-       % Notes
-               % Déclarations
-                       % Variables
-                               \newskip\vlnnotevskip%
-                               \newskip\vlnnotehskip%
-                               \newdimen\dimen@%
-                               \newdimen\dimen@@%
-                               \newdimen\vlnnotevdim%
-                               \newdimen\vlnnotevdimmore%
-                               \newdimen\vlnnotehdim%
-                               \newdimen\vlnnotehdimbase%
-                               \newcount\vlncurrfinger%
-                               \newcount\vlncurrposbase%
-                               \newcount\vlncurrposunit%
-                               \newcount\vlncurroctave%
-                               \def\vlncurrletter{}%
-                               \def\vlncurrshift{}%
-                               \newcount\vlnnotepos%
-                               \newcount\vlncurrpos%
-                               \newcount\vlncurrpitch%
-                               \newcount\vlnlastpitch%
-                               \newcount\vlnnote%
-                               \newcount\vlncurrtimes%
-                               \newcount\vlnbow%
-                               \gdef\vlncrescleft{}%
-                               \gdef\vlncrescright{}%
-               % Initialisations
-                       \vlnnotevskip=0pt\relax%
-                       \vlnnotehskip=0pt\relax%
-                       \vlnnotevdim=\vlnstaffhalftonelinevdim%
-                       \vlnnotevdimmore=1pt\relax%
-                       \vlnnotehdimbase=2cm\relax%
-                       %\advance\vlnnotevdim by\vlnnotevdimmore%
-                       %\advance\vlnnotevdim by\vlnnotevdimmore%
-                       \def\vlncurrbow{}%
-                       \def\vlncurrrealbow{}%
-                       \def\vlncurrcord{}%
-                       \def\vlncurrtimenum{}%
-                       \def\vlncurrtimeden{}%
-                       \def\vlncurrbowwithnext{no}%
-                       \def\vlnnotehdimmodetim{yes}%
-                       \def\vlnnotehdimmodetxt{}%
-                       \parindent=0pt\relax%
-                       \parskip=0pt\relax%
-                       \parfillskip=0pt\relax%
-               \def\vlncurrposfinger{%
-                       \csname vlncurrposfinger\romannumeralz\vlncurrfinger\endcsname%
-                }%
-               \def\vlncurrfingerpos{%
-                       \csname vlncurrfingerpos\romannumeralz\vlncurrpos\endcsname%
-                }%
-               %\def\vlncurrposname{%
-               %       \csname vlncurrposname\romannumeralz\vlncurrpos\endcsname%
-               % }%
-               \def\vlntimefrac#1/#2{%
-                       \leavevmode%
-                       \hbox{#1}%
-                       \kern-.4ex\lower.3ex\hbox{\bfseries\tiny /}%
-                       \kern-.3ex\lower.6ex\hbox{#2}%
-                }%
-               % Graveur
-                       \def\vlndoatnote#1#2#3#4{%
-                               \nointerlineskip%
-                               \vlnnotevskip=0pt\relax%
-                               \advance\vlnnotevskip by\vlnstaffhalftonelinevdim\relax%
-                               \multiply\vlnnotevskip by#1\relax%
-                               \advance\vlnnotevskip by\vlnstaffhalftonelinevdim\relax%
-                               %\advance\vlnnotevskip by-\vlnnotevdimmore\relax%
-                               \nobreak\vskip\vlnnotevskip\relax%
-                               \vrule depth 0pt height 0pt width \vlnnotehskip\relax%
-                               \setbox0=#3%
-                               \advance\vlnnotevskip by \ht0\relax%
-                               #2%
-                               \box0%
-                               #4%
-                               \nobreak\vskip-\vlnnotevskip\relax%
-                               \nointerlineskip%
-                        }%
-                       \def\vlnnotedraw{%
-                               % Durée
-                                       \vlnnotehdim0pt%
-                                       \ifthenelse{\equal{\vlnnotehdimmodetim}{yes}}{%
-                                               \count@0%
-                                               \whiledo{\count@<\vlncurrtimes}{%
-                                                       \dimen@\vlnnotehdimbase%
-                                                       \multiply\dimen@ by\csname vlncurrtimenum\the\count@\endcsname\relax%
-                                                       \divide\dimen@   by\csname vlncurrtimeden\the\count@\endcsname\relax%
-                                                       \advance\vlnnotehdim by\dimen@\relax%
-                                                       \advance\count@ by 1\relax%
-                                                }%
-                                        }{%
+                       \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}{}}%
+                                        {%
                                         }%
-                                       % Automatic staff break
-                                               \count@\vlnnotehskip\relax%
-                                               \advance\count@ by\vlnnotehdim\relax%
-                                               \ifnum\count@>\vlnstaffhsize\vlnstaff\fi%
-                                       % Explicite
-                                               \def\vlnnotehdimmodetxtdo{%
-                                                       % FIXME: handle \vlncurrtimes
-                                                       \vbox to0pt{%
-                                                               \setbox0=\hbox{%
-                                                                       \ifthenelse{\equal{\vlncurrtimeden}{1}}%
-                                                                        {{\vlntimefont{\vlncurrtimenum}}}%
-                                                                        {\vlntimefrac{\vlntimefont{\vlncurrtimenum}}/{\vlntimefont{\vlncurrtimeden}}}%
-                                                                }%
-                                                               \nobreak\vskip\vlnnotevdim\relax%
-                                                               \nobreak\vskip0.2mm\relax%
-                                                               \nobreak\hskip\vlnnotehdim\relax%
-                                                               \nobreak\hskip-\wd0\relax%
-                                                               \dp0=0pt\relax%
-                                                               \box0%
-                                                        }%
-                                                }%
-                                               \ifthenelse{\equal{}{\vlnnotehdimmodetxt}}%
-                                                {\null}%
-                                                {\vlndoatnote{\vlncurrpos}%
-                                                        {}%
-                                                        {\vlnnotehdimmodetxtdo}%
-                                                        {}%
-                                                }%
-                               % Archet
-                                       \vlndoatnote{\vlncurrpos}%
-                                        {\begingroup\expandafter\color{colVlnBow\vlncurrbow}}%
                                         {%
-                                               \hbox{%
-                                                       \ifthenelse{\equal{\vlncurrbow}{N}}
-                                                        {}%
-                                                        {%
-                                                               \vrule depth 0pt height \vlnnotevdim width \vlnnotehdim\relax%
-                                                               \nobreak\hskip-\vlnnotehdim\relax%
-                                                               \dimen@\vlnnotevdim%
-                                                               \divide\dimen@ by3\relax%
-                                                               \dimen@@\vlnnotehdim%
-                                                               \divide\dimen@@ by2\relax%
-                                                               \ifthenelse{\equal{\vlncrescleft}{}}%
-                                                                {%
-                                                                       \ifthenelse{\equal{\vlncrescright}{}}%
-                                                                        {%
-                                                                        }%
-                                                                        {%
-                                                                               \vrule depth 0pt height 0pt width \dimen@@\relax%
-                                                                               \color{colVlnCresc\vlncrescright}%
-                                                                               \vrule depth 0pt height \dimen@ width \dimen@@\relax%
-                                                                        }%
-                                                                }%
-                                                                {%
-                                                                       \ifthenelse{\equal{\vlncrescright}{}}%
-                                                                        {%
-                                                                               \color{colVlnCresc\vlncrescleft}%
-                                                                               \vrule depth 0pt height \dimen@ width \dimen@@\relax%
-                                                                        }%
-                                                                        {%
-                                                                               \color{colVlnCresc\vlncrescleft}%
-                                                                               \vrule depth 0pt height \dimen@ width \dimen@@\relax%
-                                                                               \color{colVlnCresc\vlncrescright}%
-                                                                               \vrule depth 0pt height \dimen@ width \dimen@@\relax%
-                                                                        }%
-                                                                }%
-                                                               \global\let\vlncrescleft\vlncrescright%
-                                                        }%
-                                                }%
+                                               \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%
                                         }%
-                                        {\endgroup}%
-                               % Cordes
-                               % Doigts
-                                       \ifthenelse{\equal{\vlncurrbow}{N}%
-                                       %       \OR\equal{\the\vlncurrfinger}{\vlncurrfingerpos}%
-                                       %       \AND\equal{\the\vlncurrpos}{\vlncurrposfinger}%
-                                       %       \AND\equal{\the\vlncurrcord}{\thevlncurrlastcord}%
+                                        {%
+                                               \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}%
                                         {}%
                                         {%
-                                               \expandafter\edef\csname vlncurrfingerpos\romannumeralz\vlncurrpos\endcsname{\the\vlncurrfinger}%
-                                               \expandafter\edef\csname vlncurrposfinger\romannumeralz\vlncurrfinger\endcsname{\the\vlncurrpos}%
-                                               \vlndoatnote{\vlncurrpos}%
-                                                {}%
-                                                {\vbox to0pt{%
-                                                       \setbox0=\hbox{{\vlnfingerfont{\the\vlncurrfinger}}}%
-                                                       \nobreak\vskip\vlnnotevdim\relax%
+                                               \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}}%
-                                                {}%
+                                                       \box0%
+                                                }%
                                         }%
-                               % Nom
-                                       %\expandafter\edef\csname vlncurrposname\romannumeralz\vlncurrpos\endcsname{#5}%
-                                       \ifthenelse{\equal{\vlncurrbow}{N}}%
+                                        {}%
+                                }%
+                        }%
+       % \@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}%
                                         {}%
                                         {%
-                                               \vlndoatnote{\vlncurrpos}%
-                                                {}%
-                                                {\vbox to0pt{%
-                                                       \setbox0=\hbox{{\vlnnamefont{\vlncurrname}}}%
+                                               \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}}%
-                                                {}%
-                                        }%
-                               % Accord
-                                       \ifthenelse{\equal{\vlncurrbowwithnext}{yes}}%
-                                        {%
-                                        }%
-                                        {
-                                               \advance\vlnnotehskip by\vlnnotehdim\relax%
+                                                       \box0%
+                                                }%
                                         }%
-                               \nointerlineskip%
-                        }%
-               % Cordes
-                       \def\vlncordposi{0}%    G
-                       \def\vlncordposii{7}%   D
-                       \def\vlncordposiii{14}% A
-                       \def\vlncordposiv{21}%  E
-               % Demi-tons alphabétiques sans modification
-                       \expandafter\def\csname vlnnotetoneofnameG=\endcsname{0}%
-                       \expandafter\def\csname vlnnotetoneofnameG+\endcsname{1}%
-                       \expandafter\def\csname vlnnotetoneofnameA-\endcsname{1}%
-                       \expandafter\def\csname vlnnotetoneofnameA=\endcsname{2}%
-                       \expandafter\def\csname vlnnotetoneofnameA+\endcsname{3}%
-                       \expandafter\def\csname vlnnotetoneofnameB-\endcsname{3}%
-                       \expandafter\def\csname vlnnotetoneofnameB=\endcsname{4}%
-                       \expandafter\def\csname vlnnotetoneofnameB+\endcsname{5}%
-                       \expandafter\def\csname vlnnotetoneofnameC-\endcsname{4}%
-                       \expandafter\def\csname vlnnotetoneofnameC=\endcsname{5}%
-                       \expandafter\def\csname vlnnotetoneofnameC+\endcsname{6}%
-                       \expandafter\def\csname vlnnotetoneofnameD-\endcsname{6}%
-                       \expandafter\def\csname vlnnotetoneofnameD=\endcsname{7}%
-                       \expandafter\def\csname vlnnotetoneofnameD+\endcsname{8}%
-                       \expandafter\def\csname vlnnotetoneofnameE-\endcsname{8}%
-                       \expandafter\def\csname vlnnotetoneofnameE=\endcsname{9}%
-                       \expandafter\def\csname vlnnotetoneofnameE+\endcsname{10}%
-                       \expandafter\def\csname vlnnotetoneofnameF-\endcsname{9}%
-                       \expandafter\def\csname vlnnotetoneofnameF=\endcsname{10}%
-                       \expandafter\def\csname vlnnotetoneofnameF+\endcsname{11}%
-                       \expandafter\def\csname vlnnotetoneofnameG-\endcsname{11}%
-               % Modifications
-                       \expandafter\def\csname vlnshiftsymbol-\endcsname{\kern-0.7pt$\flat$}%
-                       \expandafter\def\csname vlnshiftsymbol=\endcsname{}%
-                       \expandafter\def\csname vlnshiftsymbol+\endcsname{\kern-0.7pt$\sharp$}%
-               \def\vlnnotedrawtonebyname#1#2#3#4#5#6#7#8{%
-                       % Octave
+                                        {}%
+                                }%
+                        }%
+       % \@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}{.}}%
-                                {}%
-                                {\vlncurroctave#1\relax}%
-                       % Ton dans l'octave
-                               \ifthenelse{\equal{#2}{.}}%
-                                {}%
-                                {\def\vlncurrletter{#2}}%
-                               \ifthenelse{\equal{#3}{.}}%
-                                {}%
-                                {\def\vlncurrshift{#3}}%
-                               \edef\vlncurrname{%
-                                       \vlncurrletter\csname vlnshiftsymbol\vlncurrshift\endcsname%
+                                {%
+                                       \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%
                                 }%
-                       % Position
-                               \edef\vlncurroctavepitch{\csname vlnnotetoneofname\vlncurrletter\vlncurrshift\endcsname}%
-                               \vlnlastpitch\vlncurrpitch%
-                               \vlncurrpitch\vlncurroctavepitch%
-                               \count@\vlncurroctave\relax%
-                               \multiply\count@ by12\relax%
-                               \advance\vlncurrpitch by\count@%
-                       % Corde
-                               \ifthenelse{\equal{#4}{.}}%
-                                {}%
-                                {\def\vlncurrcord{#4}%
+                                {%
+                                       \expandafter\edef\csname @vln@note@time@num@\the\@vln@note @\@vln@note@time\endcsname{#1}%
                                 }%
-                               \count@\vlncurrcord%
-                               \advance\count@ by1\relax%
-                               \vlncurrpos\vlncurrpitch%
-                               \advance\vlncurrpos by-\csname vlncordpos\romannumeralz\count@\endcsname%
-                       % Doigt
-                               \ifthenelse{\equal{#5}{.}}%
-                                {}%
-                                {\vlncurrfinger#5\relax}%
-                       % Archet
-                               \let\vlnlastlastrealbow\vlnlastrealbow%
-                               \let\vlnlastrealbow\vlncurrrealbow%
-                               \ifthenelse{\equal{#6}{C}}%
-                                {\ifthenelse{\equal{U}{\vlncurrrealbow}}%
-                                        {\def\vlncurrbow{D}}%
-                                        {\def\vlncurrbow{U}}}%
-                                {\ifthenelse{\equal{#6}{.}}%
-                                       {\def\vlncurrbow{\vlncurrrealbow}}%
-                                       {\def\vlncurrbow{#6}}}%
-                               \ifthenelse{\equal{\vlncurrbow}{N}}%
-                                {}%
-                                {\edef\vlncurrrealbow{\vlncurrbow}}%
-                       % Durée
-                               \vlncurrtimes0\relax%
-                               \def\@nexttime##1+##2##3{%
-                                       \ifthenelse{\equal{##2}{.}}%
-                                        {}%
-                                        {\def\vlncurrtimenum{##2}}%
-                                       \ifthenelse{\equal{##3}{.}}%
-                                        {}%
-                                        {\def\vlncurrtimeden{##3}}%
-                                       \expandafter\edef\csname vlncurrtimenum\the\vlncurrtimes\endcsname{\vlncurrtimenum}%
-                                       \expandafter\edef\csname vlncurrtimeden\the\vlncurrtimes\endcsname{\vlncurrtimeden}%
-                                       \advance\vlncurrtimes by 1\relax%
-                                       \@ifnextchar+{\@nexttime{##1}}{##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}%
                                 }%
-                       \def\@nextbow{%
-                               \let\vlncurrbowwithlast\vlncurrbowwithnext%
-                               \@ifnextchar&{%
-                                       \def\next&{%
-                                               \def\vlncurrbowwithnext{yes}%
-                                               \vlnnotelily%
-                                               \vlnnotedraw%
-                                               \advance\vlnnote by1\relax%
+                               \@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%
+                                                }%
                                         }%
-                                       \next%
-                                }{%
-                                       \def\vlncurrbowwithnext{no}%
-                                       \advance\vlnbow by1\relax%
-                                       \vlnnotelily%
-                                       \vlnnotedraw%
-                                       \advance\vlnnote by1\relax%
+                                        {}%
+                                \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@}%
                                 }%
                         }%
-                       \@nexttime\@nextbow+{#7}{#8}%
+                        {%
+                               \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\vlnpart#1{%
-                       \vlndoatnote{0}%
+               \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{{\vlnpartfont{#1}}}%
+                               \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\vlnpartup#1{%
-                       \vlndoatnote{0}%
+               \def\@vln@part@output{%
+                       \@vln@note@output@{0}%
                         {}%
                         {\vbox to0pt{%
-                               \setbox0=\hbox{{\vlnpartfont{#1}}}%
+                               \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\vlnbar{%
-                       \vlndoatnote{0}%
-                        {}%
-                        {\vbox to0pt{%
-                               \dimen@\vlnstaffvdim%
-                               \advance\dimen@ by -\vlnnotevdim\relax%
-                               \advance\dimen@ by -\vlnnotevdim\relax%
-                               \setbox0=\hbox{{\color{colVlnBar}\vrule depth 0pt height \dimen@ width 0.1pt\relax}}%
-                               \nobreak\vskip\vlnnotevdim\relax%
-                               \dp0=0pt\relax%
-                               \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\vlncresc#1{%
-                       \global\let\vlncrescleft\vlncrescright%
-                       \xdef\vlncrescright{#1}%
-                }%
-               % Lylipond
-                       \def\lily{}%
-                       % input time fraction -> Lilypond dotted duration
-                               \expandafter\def\csname vlnnotelilyofduration1/2\endcsname{2}%
-                               \expandafter\def\csname vlnnotelilyofduration2/2\endcsname{1}%
-                               \expandafter\def\csname vlnnotelilyofduration3/2\endcsname{2.}%
-                               \expandafter\def\csname vlnnotelilyofduration1/4\endcsname{4}%
-                               \expandafter\def\csname vlnnotelilyofduration2/4\endcsname{2}%
-                               \expandafter\def\csname vlnnotelilyofduration3/4\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration4/4\endcsname{1}%
-                               \expandafter\def\csname vlnnotelilyofduration1/8\endcsname{8}%
-                               \expandafter\def\csname vlnnotelilyofduration2/8\endcsname{4}%
-                               \expandafter\def\csname vlnnotelilyofduration3/8\endcsname{4.}%
-                               \expandafter\def\csname vlnnotelilyofduration4/8\endcsname{2}%
-                               \expandafter\def\csname vlnnotelilyofduration5/8\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration6/8\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration7/8\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration8/8\endcsname{1}%
-                               \expandafter\def\csname vlnnotelilyofduration1/12\endcsname{12}%
-                               \expandafter\def\csname vlnnotelilyofduration2/12\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration3/12\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration4/12\endcsname{3}%
-                               \expandafter\def\csname vlnnotelilyofduration5/12\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration6/12\endcsname{2}%
-                               \expandafter\def\csname vlnnotelilyofduration7/12\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration8/12\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration9/12\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration10/12\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration11/12\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration12/12\endcsname{1}%
-                               \expandafter\def\csname vlnnotelilyofduration1/16\endcsname{16}%
-                               \expandafter\def\csname vlnnotelilyofduration2/16\endcsname{8}%
-                               \expandafter\def\csname vlnnotelilyofduration3/16\endcsname{8.}%
-                               \expandafter\def\csname vlnnotelilyofduration4/16\endcsname{4}%
-                               \expandafter\def\csname vlnnotelilyofduration5/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration6/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration7/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration8/16\endcsname{2}%
-                               \expandafter\def\csname vlnnotelilyofduration9/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration10/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration11/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration12/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration13/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration14/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration15/16\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration16/16\endcsname{1}%
-                               \expandafter\def\csname vlnnotelilyofduration1/32\endcsname{32}%
-                               \expandafter\def\csname vlnnotelilyofduration2/32\endcsname{16}%
-                               \expandafter\def\csname vlnnotelilyofduration3/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration4/32\endcsname{8}%
-                               \expandafter\def\csname vlnnotelilyofduration5/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration6/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration7/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration8/32\endcsname{4}%
-                               \expandafter\def\csname vlnnotelilyofduration9/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration10/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration11/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration12/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration13/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration14/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration15/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration16/32\endcsname{2}%
-                               \expandafter\def\csname vlnnotelilyofduration17/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration18/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration19/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration20/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration21/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration22/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration23/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration24/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration25/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration26/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration27/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration28/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration29/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration30/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration31/32\endcsname{???}%
-                               \expandafter\def\csname vlnnotelilyofduration32/32\endcsname{1}%
-                       % input octave -> Lilypond octave
-                               \expandafter\def\csname vlnnotelilyofoctave0\endcsname{}%
-                               \expandafter\def\csname vlnnotelilyofoctave1\endcsname{'}%
-                               \expandafter\def\csname vlnnotelilyofoctave2\endcsname{''}%
-                               \expandafter\def\csname vlnnotelilyofoctave3\endcsname{'''}%
-                       % input name -> Lilypond name
-                               \expandafter\def\csname vlnnotelilyofnameG=\endcsname{g}%
-                               \expandafter\def\csname vlnnotelilyofnameG+\endcsname{gis}%
-                               \expandafter\def\csname vlnnotelilyofnameA-\endcsname{aes}%
-                               \expandafter\def\csname vlnnotelilyofnameA=\endcsname{a}%
-                               \expandafter\def\csname vlnnotelilyofnameA+\endcsname{ais}%
-                               \expandafter\def\csname vlnnotelilyofnameB-\endcsname{bes}%
-                               \expandafter\def\csname vlnnotelilyofnameB=\endcsname{b}%
-                               \expandafter\def\csname vlnnotelilyofnameB+\endcsname{bis}%
-                               \expandafter\def\csname vlnnotelilyofnameC-\endcsname{ces}%
-                               \expandafter\def\csname vlnnotelilyofnameC=\endcsname{c}%
-                               \expandafter\def\csname vlnnotelilyofnameC+\endcsname{cis}%
-                               \expandafter\def\csname vlnnotelilyofnameD-\endcsname{des}%
-                               \expandafter\def\csname vlnnotelilyofnameD=\endcsname{d}%
-                               \expandafter\def\csname vlnnotelilyofnameD+\endcsname{dis}%
-                               \expandafter\def\csname vlnnotelilyofnameE-\endcsname{ees}%
-                               \expandafter\def\csname vlnnotelilyofnameE=\endcsname{e}%
-                               \expandafter\def\csname vlnnotelilyofnameE+\endcsname{eis}%
-                               \expandafter\def\csname vlnnotelilyofnameF-\endcsname{fes}%
-                               \expandafter\def\csname vlnnotelilyofnameF=\endcsname{f}%
-                               \expandafter\def\csname vlnnotelilyofnameF+\endcsname{fis}%
-                               \expandafter\def\csname vlnnotelilyofnameG-\endcsname{ges}%
-                       \def\lilywrite{%
-                               \newwrite\lilyfile%
-                               \immediate\openout\lilyfile=out.ly%
-                               \immediate\write\lilyfile{\lily}%
-                               \immediate\closeout\lilyfile%
-                        }%
-                       \def\vlnlilyaddnote#1{%
-                               \expandafter\xdef\csname lilynote\the\vlnnote\endcsname{#1}%
-                        }
-                       \def\vlnlilyflush{%
-                               \count@0%
-                               \ifthenelse{\equal{\the\vlnlilyslurbegin}{0}}%
-                                {%
+               \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}}%
                                 {%
-                                       \advance\vlnlilyslurbegin by-1\relax%
-                                       \expandafter\xdef\csname lilynote\the\vlnlilyslurbegin\endcsname{\csname lilynote\the\vlnlilyslurbegin\endcsname(}%
-                                       \advance\vlnnote by-1\relax%
-                                       \expandafter\xdef\csname lilynote\the\vlnnote\endcsname{)\csname lilynote\the\vlnnote\endcsname}%
-                                       \advance\vlnnote by1\relax%
-                                       \vlnlilyslurbegin=0%
+                                       \expandafter\edef\csname @vln@lily@note@name@\the\@vln@note\endcsname{r}%
                                 }%
-                               \whiledo{\count@<\vlnnote}{%
-                                       \edef\lily{\lily\csname lilynote\the\count@\endcsname^^J}%
-                                       \advance\count@ by1\relax%
+                                {%
+                                       \expandafter\edef\csname @vln@lily@note@name@\the\@vln@note\endcsname{\@vln@lily@semitone@{\@vln@note@semitone}}%
                                 }%
                         }%
-                       \def\vlnlilywriteverbatim{%
-                               \@bsphack%
-                               \let\do\@makeother\dospecials%
-                               \catcode`\^^M\active \catcode`\^^I=12%
-                               \def\verbatim@processline{%
-                                       \xdef\lily{\lily\the\verbatim@line^^J}%
+                       \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{}%
                                 }%
-                               \verbatim@start%
-                        }%
-                       \def\endvlnlilywriteverbatim{%
-                               \@esphack%
-                        }%
-                       \newcount\vlnlilyslurbegin%
-                       \vlnlilyslurbegin=0%
-                       \def\vlnlilyslurend{}%
-                       \def\vlnnotelily{%
-                               \count@=\vlncurrpitch\relax%
-                               \advance\count@ by8%
-                               \divide\count@ by12%
-                               \edef\vlnlilyoctave{\csname vlnnotelilyofoctave\the\count@\endcsname}%
-                               \ifthenelse{\equal{\vlncurrbow}{N}}%
-                                       {%
-                                               \edef\vlnlilyname{r}%
-                                               \edef\vlnlilyoctave{}%
-                                       }%
-                                       {%
-                                               \edef\vlnlilyname{\csname vlnnotelilyofname\vlncurrletter\vlncurrshift\endcsname}%
-                                       }%
-                               \edef\text@{\csname vlncurrtimenum0\endcsname/\csname vlncurrtimeden0\endcsname}%
-                               \edef\vlnlilyduration{\csname vlnnotelilyofduration\text@\endcsname}%
-                               \count@1%
-                               \whiledo{\count@<\vlncurrtimes}{%
-                                       \edef\text@{\csname vlncurrtimenum\the\count@\endcsname/\csname vlncurrtimeden\the\count@\endcsname}%
-                                       \edef\vlnlilyduration{%
-                                               \vlnlilyduration\string~\vlnlilyname\vlnlilyoctave\csname vlnnotelilyofduration\text@\endcsname%
-                                        }%
-                                       \advance\count@ by 1\relax%
+                                {%
+                                       \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@}}%
                                 }%
-                               % Phrasé
-                                       \def\vlnlilytie{}%yes
-                                       \def\vlnlilyslurend{}%
-                                       \ifthenelse{\equal{\vlncurrrealbow}{\vlnlastrealbow}}%
+                               \@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{\vlncurrbowwithlast}{yes}}%
-                                                {%
-                                                }%
-                                                {%
-                                                       \ifthenelse{\equal{\the\vlnlilyslurbegin}{0}}%
-                                                        {%
-                                                               \vlnlilyslurbegin\vlnnote%
-                                                        }%
-                                                        {%
-                                                        }%
-                                                }%
                                         }%
                                         {%
-                                               \ifthenelse{\equal{\the\vlnlilyslurbegin}{0}}%
+                                               \ifthenelse{\equal{\@vln@lily@slur@begin}{}}%
                                                 {%
+                                                       \edef\@vln@lily@slur@begin{\the\@vln@note}%
                                                 }%
                                                 {%
-                                                       \advance\vlnlilyslurbegin by-1\relax%
-                                                       \expandafter\xdef\csname lilynote\the\vlnlilyslurbegin\endcsname{\csname lilynote\the\vlnlilyslurbegin\endcsname(}%
-                                                       \vlnlilyslurbegin=0%
-                                                       \def\vlnlilyslurend{)}%
                                                 }%
                                         }%
-                                       %\ifthenelse{\equal{\the\vlncurrpitch}{\the\vlnlastpitch}}%
-                                       %\edef\vlnlilytie{\string~ }%
-                                       %\edef\vlnlilytie{}
-                                       %\csname lilynote\the\vlnlilyslurbegin\endcsname%
-                                       %\expandafter\def\csname lilynote\the\vlnlilyslurbegin\endcsname{#1}%
-                                       %\ifthenelse{\equal{\vlnlilyslurbegin}{}}%
-                                       % {\edef\vlnlilyslurend{}}%
-                                       % {\edef\vlnlilyslurend{)}}%
-                                       %\edef\vlnlilyslurbegin{}
-                               % Accord
-                                       \ifthenelse{\equal{\vlncurrbowwithnext}{yes}}%
+                                }%
+                                {%
+                                       \ifthenelse{\equal{\@vln@lily@slur@begin}{}}%
                                         {%
-                                               \ifthenelse{\equal{\vlncurrbowwithlast}{yes}}%
-                                                {%
-                                                       \vlnlilyaddnote{%
-                                                               \space%
-                                                               \vlnlilyname%
-                                                               \vlnlilyoctave%
-                                                        }%
-                                                }%
-                                                {%
-                                                       \vlnlilyaddnote{%
-                                                               \vlnlilytie%
-                                                               \vlnlilyslurend%
-                                                               <\vlnlilyname%
-                                                               \vlnlilyoctave%
-                                                        }%
-                                                }%
                                         }%
                                         {%
-                                               \ifthenelse{\equal{\vlncurrbowwithlast}{yes}}%
-                                                {%
-                                                       \vlnlilyaddnote{%
-                                                               \space%
-                                                               \vlnlilyname%
-                                                               \vlnlilyoctave%
-                                                               >%
-                                                               \vlnlilyduration%
-                                                        }%
-                                                               %\vlncurrtimeden*\vlncurrtimenum%
-                                                }%
-                                                {%
-                                                       \vlnlilyaddnote{%
-                                                               \vlnlilyslurend%
-                                                               \vlnlilyname%
-                                                               \vlnlilyoctave%
-                                                               \vlnlilyduration%
-                                                        }%
-                                                               %\vlncurrtimeden*\vlncurrtimenum%
-                                                }%
+                                               \@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