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
\applyOutputest 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…