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 permet de ne modifier que l’élément immédiatement 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 :

\relative {
  <c' e g>4
  \once \override NoteHead.font-size = #-3
  <c e g>4
  <c e g>4
}

[image of music]

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. Dans sa forme la plus simple, elle ne fonctionne que sur les objets créés directement à partir de l’élément suivant dans la chaîne de saisie, c’est-à-dire essentiellement des têtes de notes et des articulations.

Pour reprendre notre exemple, la taille de la note du milieu d’un accord peut être modifiée de cette manière :

\relative {
  <c' e g>4
  <c \tweak font-size #-3 e g>4
}

[image of music]

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. Il n’est pareillement pas nécessaire d’insérer un signe égal. 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'4^"Black"
  -\tweak color "red" ^"Red"
  -\tweak color "green" _"Green"

[image of music]

Attention : la commande \tweak doit être précédée d’une marque d’articulation, comme si elle-même était une articulation. Dans la cas de multiples positionnements forcés (^ ou _), celui le plus à gauche aura préséance puisqu’il sera appliqué en dernier.

Les objets tels que hampes et altérations seront créés postérieurement à l’événement qui survient. L’utilisation de la commande \tweak sur de tels objets indirectement créés peut se faire en nommant explicitement l’objet de rendu, si tant est que LilyPond puisse remonter jusqu’à l’événement originel :

<\tweak Accidental.color "red"   cis''4
 \tweak Accidental.color "green" es''
 g''>

[image of music]

Cette forme développée de la commande \tweak correspond à :

\tweak objet-de-rendu.propriété-de-rendu #valeur

Quand plusieurs n-olets 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 n-olet 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 n-olet doit être imprimé en rouge sur le premier crochet de triolet court.

\relative c'' {
  \tweak direction #up
  \tuplet 3/4 {
    \tweak color "red"
    \tuplet 3/2 { c8[ c c] }
    \tuplet 3/2 { c8[ c c] }
    \tuplet 3/2 { c8[ c c] }
  }
}

[image of music]

Si les n-olets 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 :

\relative {
  \tuplet 3/2 { c'8[ c c] }
  \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
  \tuplet 3/2 {
    c8[ c]
    c8[ c]
    \once \override TupletNumber.transparent = ##t
    \tuplet 3/2 { c8[ c c] }
    \tuplet 3/2 { c8[ c c] }
  }
}

[image of music]

Voir aussi

Manuel de notation : La commande d’affinage (tweak).


GNU LilyPond – Manuel d’initiation v2.25.12 (branche de développement).