2.8 Code Scheme intégré

À REVOIR : l’exemple de cette rubrique n’est pas des plus judicieux puisque

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

(notez le ‘-’ qui qualifie d’événement postérieur) fonctionne correctement dans ce cas d’espèce. En attendant un remaniement de cette section, faisons comme si nous l’ignorions.

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 Ajout d’articulation à des notes (exemple), 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.


Autres langues : English, deutsch, español.
About automatic language selection.

LilyPond — Extension des fonctionnalités