GNU LilyPond – Manuel d’initiation : 4.1.4 Tweaking methods
Description: GNU LilyPond – Manuel d'initiation: 4.1.4 Tweaking methods
Keywords: GNU LilyPond – Manuel d'initiation: 4.1.4 Tweaking methods

### 4.1.4 Tweaking methods

La commande \override

Dans Modifying context properties et dans Adding and removing engravers, 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 Difficult tweaks.

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]}
>     }

#### See also

Manuel de notation : The tweak command.

Other languages: English, español, deutsch.

#### Manuel d’initiation