B.6.2 Ejecutar una función sobre todos los objetos de la presentación

La manera más versátil de realizar el ajuste fino de un objeto es \applyOutput, que funciona insertando un evento dentro del contexto especificado ( ApplyOutputEvent). Su sintaxis es o bien

\applyOutput Contexto proc

o bien

\applyOutput Context.Grob proc

donde proc es una función de Scheme que toma tres argumentos.

Al interpretarse, la función proc se llama para cada objeto de presentación (con el nombre del grob Grob si se especifica) que se encuentra en el contexto Contexto en el tiempo actual, con los siguientes argumentos:

Además, la causa del objeto de presentación, es decir el objeto o expresión musical que es responsable de haberlo creado, está en la propiedad cause del objeto. Por ejemplo, para la cabeza de una nota, éste es un evento NoteHead, y para un objeto plica, éste es un objeto Stem.

He aquí una función que usar para \applyOutput; borra las cabezas de las notas que están sobre la línea central y junto a ella:

#(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
}

[image of music]

Para que función se interprete en los niveles de Score o de Staff utilice estas formas:

\applyOutput Score…
\applyOutput Staff…

LilyPond — Extender v2.21.82 (rama de desarrollo).