| [ << 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 > ] |