| [ << Tutorial de l’Scheme ] | [Top][Contents][Index] | [ Interfícies per a programadors >> ] |
| [ < Construcció de funcions complicades ] | [ Up: Construcció de funcions complicades ] | [ Propietats musicals > ] |
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.
| [ << Tutorial de l’Scheme ] | [Top][Contents][Index] | [ Interfícies per a programadors >> ] |
| [ < Construcció de funcions complicades ] | [ Up: Construcció de funcions complicades ] | [ Propietats musicals > ] |