A.3.1 Presentació de les expressions musicals

Si s’està escrivint una funció musical, pot ser molt instructiu examinar com s’emmagatzema internament una expressió musical. Això es pot fer amb la funció musical \displayMusic.

{
  \displayMusic { c'4\f }
}

imprimeix el següent:

(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 manera predeterminada, el LilyPond imprimeix aquests missatges sobre la consola junt a la resta dels missatges. Per separar aquests missatge i desar el resultat de \display{ELQUESIGUI}, podeu especificar que s’usi un port de sortida opcional:

{
  \displayMusic #(open-output-file "display.txt") { c'4\f }
}

Això sobreescriu el fitxer de sortida anterior cada cop que es crida; si ens cal escriure més d’una expressió, hem d’usar una variable per al port i reutilitzar-la:

{
  port = #(open-output-file "display.txt")
  \displayMusic \port { c'4\f }
  \displayMusic \port { d'4 }
  #(close-output-port port)
}

El manual del Guile descriu els ports detalladament. Sols es realment necessari tancar el port si ens cal llegir el fitxer abans que acabi el LilyPond; en el primer exemple, no ens hem molestat de fer-ho.

Una mica d’ajustament del format fa que sigui més fàcil de llegir la informació anterior:

(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 seqüència musical { … } té el nom SequentialMusic, i les seves expressions internes s’emmagatzemen com a una llista dins de la seva propietat 'elements. Una nota es representa com un objecte NoteEvent (que emmagatzema les propietats de duració i altura) amb informació adjunta (en aquest cas, un esdeveniment NoteEvent (que emmagatzema propietats de duració i altura) com informació adjunta (en aquest cas, un esdeveniment AbsoluteDynamicEvent amb una propietat "f" de text) emmagatzemada en la seva propietat articulations.

\displayMusic retorna la música que s’imprimeix a la consola, i per això s’interpretarà al mateix moment que s’imprimeix a la consola. Per evitar la interpretació, escriviu \void antes de \displayMusic.


Extender LilyPond v2.25.32 (development-branch).