Suivant : , Précédent : Utilisation de procédures Scheme comme propriétés, Haut : Interfaces pour les programmeurs


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.