Subject: PianoStaff, croisements et collisions

From: Frédéric Moinard <[email-masked]>
Date: Tue, 20 May 2008 11:18:10 +0400

Bonjour,

Dans un style assez courant au clavier:

Comment forcer la position d'un doigté (dessus / dessous) pour une note?

Ci-dessous, un exemple (pas très joli, il s'agit initialement d'un petit 
exercice de croisement de mains) dont le rendu n'est pas très heureux... 
les doigtés de main gauche sont dans les hampes, et les deux solutions 
utilisées sont lassantes:
- mettre une note dans un accord rend la lecture fastidieuse (pour la 
frappe, on peut jouer sur les macros, je sais) ;
- utiliser un markup ne donne pas un alignement cohérent.

On peut reprendre chaque position avec \once \override Fingering 
#'minimum-space = #2 par exemple, mais cela demande une 
relecture/correction excessive.

%%%%%%%%%%%% début %%%%%%%%%%%%
\version "2.11.45"

amgauche  = { \stemDown \tieDown \slurDown \set fingeringOrientations = 
#'(down) }
amdroite  = { \stemUp \tieUp \slurUp  \set fingeringOrientations = #'(up) }
amneutral = { \stemNeutral \tieNeutral \slurNeutral }
enbas     = { \change Staff = "mgauche" }
enhaut    = { \change Staff = "mdroite" }

droite = \relative c' { \time 2/4
   c16-3 b-2 a-1
   \enbas \amgauche <g-1>[ <f-2> <e-3>]
   \amdroite g-4[ f-3 e-2]
   \amgauche d-1[_\markup {\finger"1"} <c-2> b_\markup {\finger"3"} <a-4>]
   \amdroite  g-5 f-4 e-3 d-2
   \set tieWaitForNote = ##t
   \tieNeutral
   c-1 ~ g'-3 ~ c-5 ~ <c, g' c>4 \fermata \laissezVibrer
}

gauche = \relative c' { \clef bass
   s2*2 s4  \enhaut \amgauche
   % \set fingeringOrientations = #'(left) %% pire: gros paquet !
   <e-4 fis-3 g-2> \fermata \laissezVibrer
}

\score {
   \new PianoStaff <<
   \new Staff = "mdroite" << \droite >>
   \new Staff = "mgauche" << \gauche >>
}
%%%%%%%%%%%%  fin  %%%%%%%%%%%%

--
Cordialement,
   Frédéric Moinard