[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < Déplacement d'objets ] | [Plus haut: Collisions d'objets ] | [ La propriété padding > ] |
5.6.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.
[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < Correction des collisions d'objets ] | [Plus haut: Correction des collisions d'objets ] | [ La propriété right-padding > ] |
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.
c'2\fermata \override Script.padding = #3 b2\fermata
% This will not work, see below: \override MetronomeMark.padding = #3 \tempo 4=120 c'1 | % This works: \override Score.MetronomeMark.padding = #3 \tempo 4=80 d'1 |
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.
[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < La propriété padding ] | [Plus haut: Correction des collisions d'objets ] | [ La propriété staff-padding > ] |
La propriété 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’espacement par défaut peut se révéler inadéquat avec
certaines altérations ou certains glyphes utilisés en musique
microtonale. Le stencil de l’altération devra alors être construit sous
la forme d’un markup
qui contiendra le ou les symboles requis,
comme ceci :
sesquisharp = \markup { \sesquisharp } \relative { c''4 % This prints a sesquisharp but the spacing is too small \once \override Accidental.stencil = #ly:text-interface::print \once \override Accidental.text = #sesquisharp cis4 c % This improves the spacing \once \override Score.AccidentalPlacement.right-padding = #0.6 \once \override Accidental.stencil = #ly:text-interface::print \once \override Accidental.text = #sesquisharp cis4 | }
Cette méthode utilise, pour le stencil des altérations, une retouche
qui ne sera pas 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 sesqui-dièse. Celui-ci est ensuite repoussé devant la tête de
note par la retouche de right-padding
.
[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < La propriété right-padding ] | [Plus haut: Correction des collisions d'objets ] | [ La propriété self-alignment-X > ] |
La propriété staff-padding
staff-padding
sert à aligner des objets tels que des nuances
sur une ligne fictive à une distance donnée par rapport à la portée en
l’absence d’autre élément de notation qui les repousserait. 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 nuance, comme dans
cet exemple repris de la section précédente :
\override DynamicLineSpanner.staff-padding = #3 \relative { a'4\f b\mf a\p b\mp }
[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < La propriété staff-padding ] | [Plus haut: Correction des collisions d'objets ] | [ La propriété staff-position > ] |
La propriété self-alignment-X
L’exemple suivant montre comment ajuster le positionnement d’une indication de corde relativement à une hampe, 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>
[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < La propriété self-alignment-X ] | [Plus haut: Correction des collisions d'objets ] | [ La propriété extra-offset > ] |
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 collision 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 :
<< \relative { c'4 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 -6
pour les
MultiMeasureRest
; nous avons donc besoin de la déplacer, disons,
de quatre demi-intervalles vers le bas, ce qui donne -10
.
<< \relative { c'4 c c c } \\ \override MultiMeasureRest.staff-position = #-10 { 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.
Voir dessin à main levée de liaisons de tenue pour ce qui différencie des valeurs exactes des valeurs inexactes.
[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < La propriété staff-position ] | [Plus haut: Correction des collisions d'objets ] | [ La propriété positions > ] |
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 :
f'4-5 \once \override Fingering.extra-offset = #'(-0.3 . -1.8) f'4-5
[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < La propriété extra-offset ] | [Plus haut: Correction des collisions d'objets ] | [ La propriété force-hshift > ] |
La propriété positions
La propriété positions
permet de contrôler manuellement la
position et l’inclinaison des n-olets, coulés, liaisons de phrasé et
barres de ligature.
Voici un exemple où la liaison de phrasé recouvre la liaison d’articulation :
\relative { a'8 \( ( a'16 ) a \) }
Nous pourrions envisager de remonter quelque peu les extrémités de la liaison de phrasé. Commençons par repositionner l’extrémité gauche à 2,5 espaces de portée au-dessus de la ligne médiane, et la droite à 4,5 ; LilyPond choisira la courbe dont les extrémités seront les plus approchantes de celle déterminées :
\once \override PhrasingSlur.positions = #'(2.5 . 4.5) a'8 \( ( a''16 ) a'' \)
C’est déjà mieux, mais ne pourrait-on pas maintenant abaisser un
peu l’extrémité droite de la liaison d’articulation ? Vous
constaterez qu’il n’est pas possible d’y arriver, tout simplement
parce qu’il n’y a pas de meilleur candidat ; la propriété
positions
n’est alors d’aucune utilité. Les liaisons,
aussi bien de tenue que d’articulation ou de phrasé, peuvent se
positionner et se dessiner tout en finesse lorsque nécessaire –
voir à ce sujet
Modification des liaisons.
Voici un autre exemple. Comme nous pouvons le constater, les barres de ligature chevauchent les liaisons de tenue :
{ \time 4/2 << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g } >> << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g } >> }
On peut y remédier en déplaçant manuellement vers le haut les deux extrémités des ligatures de croches, non plus à 1,81 intervalle au-dessous de la ligne médiane mais, disons, à 1 :
{ \time 4/2 << \relative { c'1~ 2. e8 f } \\ \relative { \override Beam.positions = #'(-1 . -1) e''8 e e e e e e e f2 g } >> << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g \revert Beam.positions } >> }
Vous remarquerez que la retouche continue de s’appliquer au second bloc de croches de la deuxième voix mais qu’il ne s’applique à aucune des ligatures de la première voix, même dans la seconde mesure. Dès que la dérogation ne doit plus s’appliquer, il suffit de l’annuler comme indiqué ici.
[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < La propriété positions ] | [Plus haut: Correction des collisions d'objets ] | [ Exemple concret > ] |
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 { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ \\ { aes'2 f4 fes } >> | <c ees aes c>1 | }
La note intermédiaire du premier accord, le la bémol à la quatrième
voix, doit rester dans le même empilement que la note haute, ce
pourquoi nous utilisons un \shiftOff
Quant au second accord, il serait préférable que le fa s’aligne avec le
la et que la note la plus basse se positionne un peu plus sur la droite
pour éviter que les hampes se chevauchent. Pour cela, nous réglons le
force-hshift
au niveau du NoteColumn
du ré bémol de telle
sorte qu’il se déplace de la moitié d’un espace de portée vers la
droite et le force-hshift
du fa sur zéro. Vous noterez la
présence du \once
qui évite la propagation de ces réglages
au-delà de cet instant musical particulier – bien que la présence du
\once
et du second \override
de la quatrième voix ne
soient pas indispensables dans ce court extrait, ce ne serait pas
montrer l’exemple que de les omettre.
Et voici le résultat final :
\new Staff \relative { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 \once \override NoteColumn.force-hshift = #0.5 des } \\ \\ { \once \shiftOff aes'2 \once \shiftOff f4 fes } >> | <c ees aes c>1 | }
[ << Retouche de partition ] | [Racine][Table des matières][Index] | [ Modèles >> ] |
[ < La propriété positions ] | [Plus haut: Correction des collisions d'objets ] | [ Exemple concret > ] |