6.7 Utilisation de code Scheme au lieu de \tweak

L’inconvénient principal de la commande \tweak est la rigidité de sa syntaxe. Par exemple, le code suivant produit une erreur.

F = \tweak #'font-size #-3 -\flageolet

\relative c'' {
  c4^\F c4_\F
}

En d’autres termes, \tweak ne se comporte pas comme une articulation : il ne peut notamment pas être accolé avec les symboles ‘^’ ou ‘_’.

C’est en se servant du langage Scheme que l’on peut résoudre ce problème. Dans cet exemple, on a recours aux méthodes décrites dans Exemple : ajouter une articulation à plusieurs notes, en particulier quant à l’emploi de \displayMusic.

F = #(let ((m (make-music 'ArticulationEvent
                          'articulation-type "flageolet")))
       (set! (ly:music-property m 'tweaks)
             (acons 'font-size -3
                    (ly:music-property m 'tweaks)))
       m)

\relative c'' {
  c4^\F c4_\F
}

Ici les propriétés tweak de l’objet flageolet nommé ‘m’ (créé au moyen de make-music) sont extraites par ly:music-property, une nouvelle valeur de la taille de fonte est ajoutée à la liste de ses propriétés (grâce à la fonction Scheme acons), et le résultat de cette opération est renvoyé par set!. Le dernier élément, dans ce bloc let, est la valeur finale de ‘m’ lui-même.


Manuel de notation