[ << Tutorial de Scheme ] | [Top][Contents][Index] | [ Interfaces para programadores >> ] |
[ < Cadenas de listas-A ] | [ Up : Scheme dentro de LilyPond ] | [ Construir funciones complicadas > ] |
A.2.7 Representación interna de la música
Internamente, la música se representa como una lista de Scheme. La lista contiene varios elementos que afectan a la salida impresa. El análisis sintáctico es el proceso de convertir la música de la representación de entrada de LilyPond a la representación interna de Scheme.
Cuando se analiza una expresión musical, se convierte en un conjunto de objetos musicales de Scheme. La propiedad definitoria de un objeto musical es que ocupa un tiempo. El tiempo que ocupa se llama duración. Las duraciones se expresan como un número racional que mide la longitud del objeto musical en redondas.
Un objeto musical tiene tres clases de tipos:
- nombre musical: Cada expresión musical tiene un nombre. Por
ejemplo, una nota lleva a un NoteEvent, y
\simultaneous
lleva a una SimultaneousMusic. Hay una lista de todas las expresiones disponibles en el manual de Referencia de funcionamiento interno, bajo el epígrafe Music expressions. - ‘type’ (tipo) o interface: Cada nombre musical tiene varios
‘tipos’ o interfaces, por ejemplo, una nota es un
event
, pero también es unnote-event
, unrhythmic-event
, y unmelodic-event
. Todas las clases de música están listadas en el manual de Referencia de funcionamiento interno, bajo el epígrafe Music classes. - objeto de C++: Cada objeto musical está representado por un objeto
de la clase
Music
de C++.
La información real de una expresión musical se almacena en
propiedades. Por ejemplo, un NoteEvent tiene
propiedades pitch
y duration
que almacenan la altura
y la duración de esa nota. Hay una lista de todas la propiedades
disponibles en el manual de Referencia de funcionamiento interno,
bajo el epígrafe Music properties.
Una expresión musical compuesta es un objeto musical que contiene
otros objetos musicales dentro de sus propiedades. Se puede
almacenar una lista de objetos dentro de la propiedad
elements
de un objeto musical, o un único objeto musical
‘hijo’ dentro de la propiedad element
. Por ejemplo,
SequentialMusic tiene su hijo dentro de
elements
, y GraceMusic tiene su argumento
único dentro de element
. El cuerpo de una repetición se
almacena dentro de la propiedad element
de
VoltaRepeatedMusic, y las alternativas dentro de
elements
.
[ << Tutorial de Scheme ] | [Top][Contents][Index] | [ Interfaces para programadores >> ] |
[ < Cadenas de listas-A ] | [ Up : Scheme dentro de LilyPond ] | [ Construir funciones complicadas > ] |