A.3.1 Presentación de las expresiones musicales
Si se está escribiendo una función musical, puede ser muy instructivo
examinar cómo se almacena internamente una expresión musical. Esto se
puede hacer con la función musical \displayMusic
{
\displayMusic { c'4\f }
}
imprime lo siguiente:
(make-music
'SequentialMusic
'elements
(list (make-music
'EventChord
'elements
(list (make-music
'NoteEvent
'duration
(ly:make-duration 2 0 1 1)
'pitch
(ly:make-pitch 0 0 0))
(make-music
'AbsoluteDynamicEvent
'text
"f")))))
De forma predeterminada, LilyPond imprime estos mensajes sobre la
consola junto al resto de los mensajes. Para separar estos mensajes y
guardar el resultado de \display{LOQUESEA}, redirija la
salida a un archivo.
lilypond archivo.ly >salida.txt
Con un poco de magia combinada de LilyPond y Scheme, podemos realmente hacer que LilyPond dirija solamente esta salida a su propio archivo:
{
$(with-output-to-file "display.txt"
(lambda () #{ \displayMusic { c'4\f } #}))
}
Un poco de reformateo hace a la información anterior más fácil de leer:
(make-music 'SequentialMusic
'elements (list (make-music 'EventChord
'elements (list (make-music 'NoteEvent
'duration (ly:make-duration 2 0 1 1)
'pitch (ly:make-pitch 0 0 0))
(make-music 'AbsoluteDynamicEvent
'text "f")))))
Una secuencia musical { ... } tiene el nombre
SequentialMusic, y sus expresiones internas se almacenan coma
una lista dentro de su propiedad 'elements. Una nota se
representa como una expresión EventChord que contiene un objeto
NoteEvent (que almacena las propiedades de duración y altura) y
cualquier información adicional (en este caso, un evento
AbsoluteDynamicEvent con una propiedad "f" de texto.
\displayMusic devuelve la música que imprime en la consola, y
por ello se interpretará al tiempo que se imprime en la consola. Para
evitar la interpretación, escriba \void antes de
\displayMusic.