[ << Ajustament de la sortida ] | [Top][Contents][Index] | [ Plantilles >> ] |
[ < Altres fonts d’informació ] | [ Up : Ajustaments addicionals ] | [ Plantilles > ] |
5.7.5 Ajustaments avançats amb l’Scheme
Tot i que és possible fer moltes coses amb les ordres
\override
i \tweak
, tenim una forma encara més
poderosa de modificar el funcionament del LilyPond, mitjançant una
interfície programable cap a les operacions internes del
LilyPond. Es pot incorporar codi escrit en el llenguatge de
programació Scheme, directament en el mecanisme de funcionament
del LilyPond. Per descomptat, per fer això calen almenys uns
coneixements bàsics de programació de l’Scheme, i proveïm una
introducció al Tutorial de l’Scheme.
Com exemple que il·lustra una de les moltes possibilitats, en lloc de donar a una propietat un valor constant, es pot establir al resultat d’una procediment de l’Scheme que s’invoca cada cop que el LilyPond accedeix a aquesta propietat. La propietat es pot establir dinàmicament a un valor determinat pel procediment al moment que s’invoca. En aquest exemple donem als caps de les notes un color que depèn de la seva posició dins del pentagrama.
#(define (color-notehead grob) "Pinta el cap de la nota d'acord amb la seva posició a la partitura." (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7))) (case mod-position ;; Retorna els colors de l'arc de Sant Martí ((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 { % Disposa per obtenir el color del procediment color-notehead \override NoteHead.color = #color-notehead a2 b | c2 d | e2 f | g2 a | }
Es poden trobar exemples addicionals que mostren la utilització d’aquestes interfícies programables, a Funcions de callback.
[ << Ajustament de la sortida ] | [Top][Contents][Index] | [ Plantilles >> ] |
[ < Altres fonts d’informació ] | [ Up : Ajustaments addicionals ] | [ Plantilles > ] |