Les commandes \tweak et \offset

Les dernières commandes disponibles avec LilyPond pour les retouches sont \tweak et \offset. Elles servent à 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.

La commande \offset peut elle aussi s’utiliser en lieu et place de \override. Elle accepte aussi d’autres formes de syntaxe. Voir La commande \offset pour plus de détails.

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.

Les commandes \tweak et \offset opèrent différemment. Elles agissent sur l’élément immédiatement suivant dans la chaîne de saisie. Dans leur forme la plus simple, elles ne fonctionnent 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]

Essayons maintenant de modifier le positionnement vertical d’un symbole \breathe. Par défaut, LilyPond calcule automatiquement un espacement vertical par rapport à la ligne médiane. Si nous voulions le remonter de deux unités, par exemple, \offset est la commande qu’il convient d’utiliser. Avec un \tweak, le positionnement correct ne ne s’obtiendrait qu’en procédant à tâtons.

\relative c'' {
  c4
  \breathe
  c4
  \offset Y-offset 2 \breathe
  c2
  \tweak Y-offset 4 \breathe
}

[image of music]

De toute évidence, \offset n’est effectif que pour traîter des valeurs de type numérique. Il existe d’autres restrictions à ce qui peut se modifier, comme mentionné dans La commande \offset.

Vous noterez que la syntaxe de \tweak et \offset 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 des commandes \tweak et \offset est donc, tout simplement :

\tweak propriété-de-rendu valeur
\offset propriété-de-rendu valeur

\tweak et \offset peuvent aussi s’utiliser quand, dans une série d’articulations, on veut n’en modifier qu’une seule. Ainsi :

a'4^"Black"
  -\tweak color "red" ^"Red"
  -\tweak color "green" _"Green"

[image of music]

Attention : les commandes \tweak et \offset doivent être précédées d’une marque d’articulation, comme si elles-même étaient des articulations. 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 des commandes \tweak ou \offset 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 des commandes \tweak et \offset correspond à :

\tweak objet-de-rendu.propriété-de-rendu valeur
\offset 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), La commande \offset.


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