4.1.4 Méthodes de retouche
La commande \override
Dans Modification des propriétés d’un contexte et dans
Ajout et suppression de graveurs, nous avons déjà rencontré les
commandes \set
et \with
, qui servent à changer les
propriétés des contextes et à supprimer ou ajouter des
graveurs. Voici maintenant d’autres commandes plus
importantes.
La commande pour changer les propriétés des objets de rendu
est \override
. Du fait que cette commande modifie en profondeur
les propriétés internes de LilyPond, sa syntaxe n’est pas aussi simple que
pour les commandes vues précédemment. Elle a besoin de savoir avec
précision quelle est la propriété à modifier, pour quel objet et dans
quel contexte, et quelle doit être sa nouvelle valeur. Voyons de quoi
il retourne.
La syntaxe générale de cette commande est :
\override Contexte.ObjetDeRendu #'propriété-rendu = #valeur
Elle attribue à la propriété appelée propriété-rendu, associée à l’objet ObjetDeRendu, appartenant lui-même au contexte Contexte, une valeur valeur.
Le contexte Contexte peut être omis (c’est généralement
le cas) quand il n’y a pas d’ambiguïté et qu’il s’agit d’un contexte
de très bas niveau, comme Voice
, ChordNames
ou Lyrics
. Dans les exemples qui suivent, le contexte sera
très souvent omis. Nous verrons plus tard dans quelles
circonstances il doit impérativement être indiqué.
Les sections ci-dessous traitent largement des propriétés et de leurs valeurs mais, pour illustrer la mise en forme et l’utilisation de ces commandes, nous nous limiterons à n’employer que quelques propriétés et valeurs simples, facilement compréhensibles.
Nous ne parlerons dans l’immédiat ni du #'
, qui précède
toujours la propriété, ni du #
, qui précède toujours la
valeur. Ces deux éléments doivent obligatoirement être
présents sous cette forme. Voici la commande la plus fréquente
pour faire des retouches, et pratiquement tout le reste de ce
chapitre aura pour but montrer, à travers des exemples, comment
l’utiliser. L’exemple ci-dessous change la couleur des têtes de
notes :
c d \override NoteHead #'color = #red e f g \override NoteHead #'color = #green a b c
La commande \revert
Une fois qu’elle a été modifiée, la propriété conserve sa nouvelle valeur
jusqu’à ce qu’elle soit à nouveau modifiée ou qu’elle rencontre la
commande \revert
. La commande \revert
obéit à
la syntaxe ci-dessous et ramène la valeur de la propriété à sa valeur
d’origine. Attention : dans le cas où plusieurs \override
ont
été employés, il ne s’agit pas de la valeur précédente mais bien de la
valeur par défaut.
\revert Contexte.ObjetDeRendu #'propriété-de-rendu
Tout comme pour la commande \override
, la mention du
Contexte est souvent facultative. Elle sera omise dans de
nombreux exemples ci-dessous. Voici un exemple qui ramène la
couleur des deux dernières notes à leur valeur par défaut :
c d \override NoteHead #'color = #red e f g \override NoteHead #'color = #green a \revert NoteHead #'color b c
Le préfixe \once
Les commandes \override
et \set
peuvent supporter
toutes les deux le préfixe \once
. Celui-ci a pour fonction de
n’appliquer la commande \override
ou \set
qu’à
l’instant musical en cours, avant que la propriété ne reprenne
sa valeur par défaut. Toujours à partir du même exemple, il est
possible de ne changer la couleur que d’une seule note :
c d \once \override NoteHead #'color = #red e f g \once \override NoteHead #'color = #green a b c
La commande \overrideProperty
Il existe une autre forme de commande \override
,
\overrideProperty
, qui est parfois utile. Nous la mentionnons
ici par souci d’exhaustivité ; pour le détail, voir
Retouches complexes.
La commande \tweak
La dernière commande disponible pour les retouches est
\tweak
. Elle sert à changer les propriétés d’objets qui
surviennent simultanément dans la musique, comme par exemple les
notes d’un accord. La commande \override
modifierait toutes
les notes de l’accord, tandis que \tweak
ne modifie que
l’élément suivant dans la chaîne de saisie.
Voici un exemple. Supposons que nous voulions changer la taille de
la tête de note du milieu (le mi) dans un accord de do majeur. Voyons
d’abord ce que donnerait \once \override
:
<c e g>4 \once \override NoteHead #'font-size = #-3 <c e g> <c e g>
Nous voyons que \override
modifie toutes les têtes
de notes de l’accord, car toutes les notes de l’accord surviennent au
même instant musical et que la fonction de \once
est de faire porter la modification sur tous les objets du type spécifié
qui surviennent au même instant musical, comme le fait la commande
\override
elle-même.
La commande \tweak
opère différemment. Elle agit
sur l’élément immédiatement suivant dans la chaîne de saisie. Elle ne
fonctionne toutefois que sur des objets créés directement à partir de
la chaîne de saisie, c’est-à-dire essentiellement des têtes de notes et
des articulations ; des objets comme les hampes ou les
altérations accidentelles sont créés ultérieurement et ne peuvent
être retouchés de cette manière. En outre, quand la retouche porte
sur une tête de note, celle-ci doit appartenir à un accord,
c’est-à-dire être comprise à l’intérieur de chevrons gauche/droite. Pour
retoucher une note isolée, il faut donc placer la commande
\tweak
avec la note à l’intérieur des chevrons gauche/droite.
Pour reprendre notre exemple, la taille de la note du milieu d’un accord peut être modifiée de cette manière :
<c e g>4 <c \tweak #'font-size #-3 e g>4
Vous noterez que la syntaxe de \tweak
est différente de
celle de la commande \override
. Ni le contexte,
ni l’objet n’ont besoin d’être spécifiés ; au contraire, cela
produirait une erreur si on le faisait. Tous deux sont sous-entendus
par l’élément suivant dans la chaîne de saisie. La syntaxe générale
de la commande \tweak
est donc, tout simplement :
\tweak #'propriété-de-rendu = #valeur
La commande \tweak
est aussi utilisée quand on veut, dans
une série d’articulations, n’en modifier qu’une seule. Ainsi :
a ^Black -\tweak #'color #red ^Red -\tweak #'color #green _Green
Attention : la commande \tweak
doit être précédée d’une
marque d’articulation, comme si elle-même était une articulation.
Quand plusieurs nolets sont imbriqués et commencent au même instant
musical, c’est encore la commande \tweak
qui est utilisée pour
changer l’apparence de l’un d’entre eux. Dans l’exemple suivant, le
long crochet de nolet et le premier des trois crochets courts commencent
au même instant musical ; une commande \override
s’appliquerait
donc à la fois aux deux. En revanche, \tweak
permet
de les dissocier. La première commande \tweak
indique que
le long crochet doit être placé au-dessus des notes, et la seconde
indique que le coefficient de nolet doit être imprimé en rouge sur le
premier crochet de triolet court.
\tweak #'direction #up \times 4/3 { \tweak #'color #red \times 2/3 { c8[ c8 c8] } \times 2/3 { c8[ c8 c8] } \times 2/3 { c8[ c8 c8] } }
Si les nolets imbriqués ne commencent pas au même moment,
leur apparence peut alors être modifiée de la façon habituelle,
avec la commande \override
:
\times 2/3 { c8[ c c]} \once \override TupletNumber #'text = #tuplet-number::calc-fraction-text \times 2/3 { c[ c] c[ c] \once \override TupletNumber #'transparent = ##t \times 2/3 { c8[ c c] } \times 2/3 { c8[ c c]} }
Voir aussi
Manuel de notation : La commande tweak.