[ << Retouche de partition ] | [Racine][Table des matières][Index][ ? ] | [ Travail sur des projets LilyPond >> ] | ||
[ < Déplacement d’objets ] | [ Plus haut: Collisions d’objets ] | [ Exemple concret > ] |
4.5.2 Correction des collisions d’objets
Voyons maintenant comment les propriétés décrites dans la section précédente peuvent nous aider à résoudre les collisions.
la propriété padding
En jouant sur la propriété padding
(littéralement
‘rembourrage’), on augmente (ou on diminue) la distance entre
des symboles qui sont imprimés au-dessus ou en dessous des notes.
c2\fermata \override Script #'padding = #3 b2\fermata
% This will not work, see below: \override MetronomeMark #'padding = #3 \tempo 4=120 c1 % This works: \override Score.MetronomeMark #'padding = #3 \tempo 4=80 d1
Vous remarquerez dans le second exemple à quel point il est important de
préciser le nom du contexte qui contient l’objet. Puisque l’objet
MetronomeMark
appartient au contexte Score
, le fait de
modifier la propriété dans le contexte Voice
passera inaperçu.
Pour plus de détails, voir
Modification de propriétés.
Si on augmente la propriété padding
d’un objet alors que celui-ci
fait partie d’un ensemble d’objets positionnés en fonction de leur
outside-staff-priority
, cet objet sera déplacé, ainsi que tous les
autres objets du groupe.
left-padding et right-padding
La propriété right-padding
joue sur l’espacement entre une
altération et la note sur laquelle elle porte. On ne l’utilise pas souvent,
mais l’exemple ci-dessous montre une situation où elle est nécessaire.
Imaginons que nous voulions faire apparaître un accord qui contienne
à la fois un si bécarre et un si bémol. Pour qu’il n’y ait pas de doute,
nous chercherions à précéder la note d’un signe bécarre et d’un signe
bémol. Voici différentes tentatives pour y parvenir :
<b bes> <b! bes> <b? bes>
Pas une ne convient, et la seconde se solde même par une collision entre les deux signes.
Une solution pour arriver à nos fins consiste à retoucher le stencil des altérations grâce à un markup qui contient les symboles bécarre et bémol, dans l’ordre que nous souhaitons, comme ceci :
naturalplusflat = \markup { \natural \flat } \relative c'' { \once \override Accidental #'stencil = #ly:text-interface::print \once \override Accidental #'text = #naturalplusflat \once \override Score.AccidentalPlacement #'right-padding = #1.5 <b bes> }
Cette méthode utilise, pour le stencil des altérations, une retouche
qui ne sera par reprise par la suite. Le type de stencil est obligatoirement
une procédure, qui consiste ici à imprimer le contenu de la propriété
text
de Accidental
, déclaré comme étant un signe
bécarre suivi d’un signe bémol. Celui-ci est ensuite repoussé devant la
tête de note par la retouche de right-padding
.
la propriété staff-padding
staff-padding
sert à aligner des objets tels que des nuances
sur une ligne fictive à une hauteur donnée par rapport à la portée, plutôt
qu’à une hauteur qui varie en fonction de la position de la note sur laquelle
porte l’objet. Ce n’est pas une propriété de DynamicText
mais de
DynamicLineSpanner
. Car la ligne fictive est destinée à s’appliquer
autant à toutes les nuances, notamment celles qui sont créées
comme des bandeaux en longueur (en anglais ‘Spanners’). Tel est donc
le moyen d’aligner les indications de nuances, comme dans cet exemple
repris de la section précédente :
\dynamicUp % Extend width by 1 unit \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5) % Align dynamics to a base line 2 units above staff \override DynamicLineSpanner #'staff-padding = #2 a4\f b\mf c\mp b\p
la propriété self-alignment-X
L’exemple suivant montre comment résoudre une collision entre une indication de corde et une queue de note, en alignant le coin droit sur le point de référence de la note parente :
\voiceOne < a \2 > \once \override StringNumber #'self-alignment-X = #RIGHT < a \2 >
la propriété staff-position
Dans une voix, un silence valant une mesure entière peut chevaucher les notes d’une autre voix. Vu que ces silences sont centrés entre les deux barres de mesure, il serait très compliqué de programmer LilyPond pour repérer ces risques de collisions, dans la mesure où, normalement, toutes les collisions entre notes ou entre notes et silences se produisent sur des notes et silences simultanés. Voici un exemple de collision de ce type :
<< {c c c c} \\ {R1} >>
Ici, la meilleure solution consiste à déplacer le symbole de pause vers
le bas – puisque cette pause appartient à la voix deux. Par défaut, dans la
\voiceTwo
(c’est-à-dire dans la seconde voix d’une construction
<<{...} \\ {...}>>
), la propriété staff-position
est
réglée sur -4 pour les MultiMeasureRest ; nous avons donc besoin de la
déplacer, disons, de quatre demi-intervalles vers le bas, ce qui donne
-8
.
<< {c c c c} \\ \override MultiMeasureRest #'staff-position = #-8 {R1} >>
C’est mieux que d’utiliser, par exemple, extra-offset
,
car la ligne supplémentaire au-dessus du silence est insérée
automatiquement.
la propriété extra-offset
La propriété extra-offset
La propriété extra-offset
offre la possibilité de contrôler
entièrement le placement d’un objet, aussi bien horizontalement que
verticalement.
Dans l’exemple suivant, la seconde indication de doigté est déplacée légèrement vers la gauche et de 1.8 intervalle de lignes vers le bas :
\stemUp f-5 \once \override Fingering #'extra-offset = #'(-0.3 . -1.8) f-5
la propriété positions
La propriété positions
permet de contrôler manuellement la
position et l’inclinaison des nolets, coulés, liaisons de phrasé et barres
de croches. Voici un exemple avec une horrible liaison de phrasé –
horrible pour avoir tenté de contourner la liaison de l’acciaccature.
r4 \acciaccatura e8\( d8 c ~c d c d\)
Nous pourrions tout simplement déplacer la liaison de phrasé au-dessus des notes, et ce serait la meilleure solution :
r4 \phrasingSlurUp \acciaccatura e8\( d8 c ~c d c d\)
Mais si, pour une quelconque raison, cette solution n’était pas
envisageable, l’autre solution consiste à déplacer légèrement vers le
bas l’extrémité gauche de la liaison de phrasé, grâce à la propriété
positions
. Cela corrige en même temps la forme plutôt
disgracieuse de la liaison.
r4 \once \override PhrasingSlur #'positions = #'(-4 . -3) \acciaccatura e8\( d8 c ~c d c d\)
Voici un autre exemple, tiré du début de la partie de main gauche du Prélude de Chopin, Op. 28, No 2. Comme nous pouvons le constater, les barres de croches chevauchent les notes les plus hautes :
{ \clef "bass" << {b,8 ais, b, g,} \\ {e, g e, g} >> << {b,8 ais, b, g,} \\ {e, g e, g} >> }
On peut y remédier en déplaçant manuellement vers le haut les deux extrémités des barres de croches, non plus à 2 intervalles au-dessus de la ligne médiane mais, disons, à 3 :
{ \clef "bass" << \override Beam #'positions = #'(3 . 3) {b,8 ais, b, g,} \\ {e, g e, g} >> << {b,8 ais, b, g,} \\ {e, g e, g} >> }
Vous remarquerez que la retouche continue à s’appliquer au second bloc de croches de la première voix mais qu’il ne s’applique à aucune barre de la deuxième voix.
la propriété force-hshift
Maintenant, nous sommes prêts à appliquer les dernières corrections à l’exemple de Chopin présenté à la fin de J’entends des Voix, que nous avions laissé dans cet état :
\new Staff \relative c'' { \key aes \major << { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { \voiceFour <ees c>2 des2 } >> | <c ees aes c>1 | }
Les deux plus basses notes du premier accord (c’est-à-dire celles de la
troisième voix) ne devraient pas être décalées de la colonne des deux
plus hautes notes. Pour y remédier, nous réglons le force-hshift
– qui est une propriété de NoteColumn
– de ces notes sur zéro.
Ensuite, la note la plus basse du second accord serait mieux à droite des
notes plus hautes. Pour cela, nous réglons le force-hshift
de cette
note sur 0.5 – c’est-à-dire la moitié de la largeur d’une tête de note vers la
droite de la colonne des notes plus hautes.
Et voici le résultat final :
\new Staff \relative c'' { \key aes \major << { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { \voiceFour \once \override NoteColumn #'force-hshift = #0 <ees c>2 \once \override NoteColumn #'force-hshift = #0.5 des2 } >> | <c ees aes c>1 | }
[ << Retouche de partition ] | [Racine][Table des matières][Index][ ? ] | [ Travail sur des projets LilyPond >> ] | ||
[ < Déplacement d’objets ] | [ Plus haut: Collisions d’objets ] | [ Exemple concret > ] |