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
          'NoteEvent
          'articulations
          (list (make-music
                  'AbsoluteDynamicEvent
                  'text
                  "f"))
          'duration
          (ly:make-duration 2 0 1 1)
          'pitch
          (ly:make-pitch 0 0 0))))

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 'NoteEvent
               'articulations (list
			       (make-music 'AbsoluteDynamicEvent
				 'text
				 "f"))
	       'duration (ly:make-duration 2 0 1 1)
	       'pitch    (ly:make-pitch 0 0 0))))

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 un objeto NoteEvent (que almacena las propiedades de duración y altura) con información adjunta (en este caso, un evento AbsoluteDynamicEvent con una propiedad "f" de texto) almacenada en su propiedad articulations.

\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.


Otros idiomas: English, deutsch, français.
Acerca de la selección automática del idioma.

LilyPond — Extender