[ << Interfaces pour programmeurs ] | [Top][Contents][Index] | [ Interfaces LilyPond Scheme >> ] |
[ < Évaluation d’un contexte ] | [ Up : Contextes pour programmeurs ] | [ Fonctions de rappel > ] |
2.6.2 Application d’une fonction à tous les objets de mise en forme
La manière la plus souple d’affiner un objet consiste à utiliser la
commande \applyOutput
. Celle-ci va insérer un événement
(ApplyOutputEvent) dans le contexte spécifié. Elle répond
aussi bien à la syntaxe
\applyOutput Contexte procédure
que
\applyOutput Contexte.Grob procédure
où procédure
est une fonction Scheme à trois arguments.
Lors de l’interprétation de cette commande, la fonction
procédure
est appelée pout tout objet de rendu (nommé
Grob si celui-ci est spécifié) appartenant au contexte
Contexte
à cet instant précis, avec les arguments
suivants :
- l’objet de rendu en lui-même,
- le contexte au sein duquel cet objet est créé,
- le contexte dans lequel
\applyOutput
est effectué.
De plus, ce qui est à l’origine de l’objet de rendu – l’expression
musicale ou l’objet qui l’a générée – se retrouve en tant que propriété
d’objet cause
. Il s’agit, pour une tête de note, d’un événement
NoteHead, et d’un objet Stem pour une hampe.
Voici une fonction utilisable avec la commande
\applyOutput
: elle « blanchit » la tête des notes se trouvant
sur la ligne médiane ou bien directement à son contact.
#(define (blanker grob grob-origin context) (if (< (abs (ly:grob-property grob 'staff-position)) 2) (set! (ly:grob-property grob 'transparent) #t))) \relative { a'4 e8 <<\applyOutput Voice.NoteHead #blanker a c d>> b2 }
La procédure sera interprétée au niveau Score
(partition)
ou Staff
(portée) dès lors que vous utiliserez l’une des syntaxes
\applyOutput Score… \applyOutput Staff…
[ << Interfaces pour programmeurs ] | [Top][Contents][Index] | [ Interfaces LilyPond Scheme >> ] |
[ < Évaluation d’un contexte ] | [ Up : Contextes pour programmeurs ] | [ Fonctions de rappel > ] |