[ << Retouche de partition ] | [Top][Contents][Index] | [ Modèles >> ] |
[ < Autres sources de documentation ] | [ Up : Autres retouches ] | [ Modèles > ] |
5.8.5 Retouches avancées avec Scheme
Nous avons vu à quel point le résultat obtenu avec LilyPond peut être
largement personnalisé à l’aide de commandes comme \override
et
\tweak
. Et pourtant l’utilisation de Scheme ouvre des
possibilités encore plus grandes. Le code écrit dans le langage de
programmation Scheme peut être intégré directement dans le processus
interne de LilyPond. Bien sûr, il faut pour cela connaître un minimum de
programmation en langage Scheme. Pour des explications complètes
là-dessus, consultez le Tutoriel Scheme.
En guise d’illustration – et ce n’est qu’une possibilité parmi tant d’autres – nous allons attribuer à une propriété non pas une valeur préétablie mais une procédure Scheme qui sera lancée à chaque utilisation de la propriété par LilyPond. De cette façon, nous obtenons un réglage dynamique de la propriété par le simple fait d’invoquer la procédure. Dans cet exemple, nous colorons les têtes de notes en fonction de leur position sur la portée.
#(define (color-notehead grob) "Color the notehead according to its position on the staff." (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7))) (case mod-position ;; Return rainbow colors ((1) (x11-color 'red )) ; for C ((2) (x11-color 'orange )) ; for D ((3) (x11-color 'yellow )) ; for E ((4) (x11-color 'green )) ; for F ((5) (x11-color 'blue )) ; for G ((6) (x11-color 'purple )) ; for A ((0) (x11-color 'violet )) ; for B ))) \relative { % Arrange to obtain color from color-notehead procedure \override NoteHead.color = #color-notehead a2 b | c2 d | e2 f | g2 a | }
Vous trouverez dans Fonctions de rappel d’autres exemples d’utilisation de ces interfaces programmables.
[ << Retouche de partition ] | [Top][Contents][Index] | [ Modèles >> ] |
[ < Autres sources de documentation ] | [ Up : Autres retouches ] | [ Modèles > ] |