Diseñar software de notación musical: cómo no hacerlo

Sería agradable si al software de notación musical no se le tuviera que llevar de la mano para que produjera un resultado aceptable. Nuestra meta con LilyPond fue la de escribir tal sistema: un programa que produzca bella música ("grabado") de forma automática.

A primera vista, la notación musical sigue un patrón jerárquico bastante sencillo. Considere el ejemplo que aparece abajo, con dos sistemas de dos compases cada uno.

¿No consiste la escritura de software en encontrar las jerarquías y modelar el mundo real en términos de árboles? Desde el punto de vista de un programador ingenuo, el fragmento de arriba se puede abstraer fácilmente a una serie de cajas anidadas:

Es fácil seguir este modelo cuando se escribe software. Es bastante obvia la manera en que se podría guardar esta información en memoria, y cuán sencillo el guardarla en un fichero en el disco duro. En un fichero de tipo XML podría escribir algo como:
  <partitura>
    <pentagrama>
      <compás número="1">
         <acorde longitud="1/2">
	   <nota nombre="c">
         </acorde>
         <acorde>
	 
	 ....
      </compás>
    </pentagrama>
  </partitura>

En resumen, este modelo es obvio, simple y nítido. Éste es el formato seguido por muchos programas. Desafortunadamente, es erróneo. La representación jerárquica funciona para mucha de la música más sencilla, pero fracasará con un uso más avanzado. Considere el ejemplo siguiente:

En este ejemplo se violan varios supuestos del modelo anterior: los pentagramas inician y acaban a voluntad, las voces brincan entre los pentagramas y a veces abarcan dos de ellos.

La notación musical es completamente diferente de la música en sí. La notación es un lenguaje intrincado de diagramas simbólicos para visualizar un concepto musical, a menudo mucho más simple. Por lo tanto, el software debe reflejar tal separación.

Siguiente: Divide y vencerás, líneas maestras de la notación automatizada


Inicio > Acerca de > Ensayo

Otros idiomas: English, Deutsch, Français
Acerca de la selección automática de idioma.