“La obsesión de poner tinta en el papel”
¿Qué hay detrás de LilyPond?
LilyPond no es único en la producción de notación musical:
hay muchos otros programas que imprimen música, y actualmente
la mayoría de la música de nueva impresión se hace por ordenador.
Lamentablemente, esto se nota: sólo pregunte a cualquier músico que
toque música clásica: las partituras más nuevas no se ven tan bien como las antiguas.
¿Cuál es la diferencia entre el trabajo a mano y el trabajo mecanizado, y qué la ha causado? ¿Cómo podemos mejorar la situación? Este ensayo explica los problemas existentes en la notación musical (software), y nuestro enfoque para resolverlos.
Índice
- Introducción: qué falla en la notación musical por ordenador.
- Qué falla en el software, o por qué Finale no es la panacea del software de notación musical.
- Cómo no diseñar software, o: modelar la notación musical.
- Divide y vencerás, plan maestro para la notación automatizada.
- Impresionante, pero ¿también funciona en la práctica? Un enfoque práctico para la captura de notación.
- Grabado musical, el arte de imprimir música.
- Implementar la tipografía: los hackers atacan el problema de grabado.
- Una arquitectura de programa flexible nos permite escribir software de grabado.
- La belleza de los números: cómo LilyPond participa en los concursos de Miss Mundo.
- Banco de pruebas de notación: ¿es suficiente una arquitectura flexible?
- Características tipográficas únicas de LilyPond.
- El formato de la entrada: cómo escribir la música.
- Conclusión
¿Qué es lo que falla en la notación musical por ordenador?
Nos gusta llamar a LilyPond un "sistema automatizado de grabado". Dará un bello formato a la notación musical sin requerir experiencia tipográfica de sus usuarios.LilyPond no es único en la notación musical: hay otros muchos programas que imprimen música, y actualmente la mayoría de las partituras de nueva impresión se hace con ordenadores. Lamentablemente, esto se nota: sólo pregunte a cualquier músico que toque música clásica: las partituras nuevas no se ven tan bien como las antiguas (digamos, de antes de 1970): las más recientes tienen una apariencia más sosa y mecánica. No es nada agradable tocar a partir de ellas.
Para ilustrar esto, observe los siguientes ejemplos. Ambos son ediciones de la suite para violoncello número 1 de J.S. Bach. La de la izquierda es una edición hermosísimamente grabada a mano de 1950; la de la derecha es un típico producto contemporáneo de ordenador. Tómese unos segundos para mirar la apariencia profunda de ambas páginas. ¿Cuál le gusta más, y por qué?
|
|
| Bärenreiter (BA 320, (c) 1950) | Henle (nr. 666 (c) 2000) |
La página de la izquierda se ve bien: tiene líneas fluidas y movimiento. Es música, y está viva. Ahora bien, la imagen a la derecha muestra la misma música, y fue escrita por Bach. Su música seguramente tiene viveza y líneas fluidas... excepto que la partitura no lo muestra: se ve rígida y mecánica. Para comprender mejor por qué ocurre esto, ampliemos un fragmento de ambas piezas:
Hecho a mano
Hecho por ordenador
La localización de las líneas de compás inmediatamente lo revela. En la nueva edición, ambas líneas de compás están exactamente en la misma ubicación horizontal. Además, las cabezas de las notas están también exactamente en la misma posición horizontal. Si observamos la página completa, podemos verificar que casi todos los compases están en la misma ubicación, a la vez que la mayoría de las cabezas de las notas también. La cosa por entero está espaciada como si estuviera alineada a una gran cuadrícula, que es lo que causa la impresión mecánica.
Éste no es el único error en este ejemplo, y aún más, esta pieza no es la única con errores tipográficos. Tristemente, casi toda la música impresa actualmente está llena de errores tipográficos básicos.
Los músicos están normalmente más absortos en la ejecución de la música que en estudiar su apariencia, por lo que estas minucias sobre los detalles tipográficos podrían parecer meramente académicas. Esto no es justificable. La pieza tiene un ritmo monótono. Si todas las líneas se ven igual, se convierten en un laberinto. Si el músico deja de mirar la partitura, o pierde momentáneamente la concentración, perderá su lugar en la página.
En general, ésta es una característica común de la tipografía. La disposición debería ser bonita, no sólo por sí misma, sino especialmente porque ayuda al músico lector a realizar su tarea. Para el material de ejecución como las partituras, esto es doblemente importante: los músicos tienen una cantidad de atención limitada. Cuanta menos atención necesiten para la lectura, mayor atención pueden poner en la interpretación propiamente dicha. En otras palabras, una mejor tipografía lleva a mejores ejecuciones.
Siguiente: Qué hay de malo en el software, o cómo Finale no es la panacea de la notación musical.
Qué es lo que falla en el software de notación musical
Los ordenadores han logrado que la impresión de notación musical esté al alcance de las masas, pero han tendido a aportar una tipografía mediocre. Aparentemente, los programadores han estado haciendo un trabajo pobre en los programas de notación musical. Para ilustrar esto, le pedimos a un músico aficionado que capturara una pieza de música en uno de los programas de notación ‘profesional’ más populares de los vendidos actualmente: Finale 2003. Se realizó con todos los parámetros predeterminados. La música es de la Sarabanda de la Suite para violoncello número 2 de J.S. Bach.
(Finale es una marca registrada de MakeMusic! Inc.)
Este ejemplo sobrepasa en mucho al anterior en cuanto a errores de formateo se refiere: hay errores serios en literalmente cada compás. Los errores vienen en todos tamaños: uno de los más notorios es el e x t r a ñ o e s p a c i a d o de la última línea. Otro más pequeño es el bemol en el compás 13, que está cubierto por la nota que le precede. Aquí hay una ampliación de ese compás:
Los errores continúan hasta los más mínimos detalles: abajo se muestra una ampliación de ese compás. Por supuesto, en una tipografía apropiada, la barra no debería salirse a la derecha de la plica, y los ribetes que aparecen dan un atisbo revelador de la aptitud (o de la falta de ella) de los programadores de Coda Music Technology con respecto a la tecnología PostScript subyacente.
Ahora bien: uno podría refutar que Finale tiene una interfase gráfica, y le deja mover los elementos para corregir los errores, o usar «plugins» para hacerlo. En efecto, esto es cierto: de hecho, la mayoría de los grabadores profesionales que usan Finale, invierten normalmente la mayor parte de su tiempo corrigiendo los errores que Finale hace rutinariamente. Pero ¿realmente desea gastar su tiempo corrigiendo errores evidentes? Para la línea excesivamente espaciada esto es fácil de lograr, pero imagínese que tiene que corregir cada barra de cada nota que sobresale de la plica... ¿a mano?
Existe una razón menos obvia por la cual corregir las cosas a mano es mala idea. Considere de nuevo el compás 13 que se muestra arriba. El bemol mal colocado es bastante obvio, pero ¿se ha fijado en la barra de repetición? Sus líneas están demasiado separadas entre sí. ¿Notó que el silencio de corchea está demasiado abajo? ¿Se percató de que la plica de la última corchea es demasiado larga?
A menos que sea un experto, los errores tipográficos le molestarán sin ser obvios. Muchos de ellos pasarán sin ser corregidos y permanecerán en la impresión final.
Este ejemplo podrá parecer forzado, pero de hecho no lo es. Los mayores productores de software de notación musical alegan que siguen los estándares de notación, pero no hemos visto ninguno que siga las normas básicas correctamente; todos cometen errores de forma sistemática. Si desea evaluar la salida de su programa favorito, entonces compre una edición hecha a mano de un editor respetable, y trate de reproducir una página. Luego haga la comparación:
- ¿Qué diferencia hay en la disposición de la página? Típicamente, las impresiones hechas por ordenador están espaciadas más ampliamente por lo que ocupan más páginas, lo que lleva a más vueltas de página.
- ¿Qué diferencia hay en el espaciado? ¿Es tan vivaz y fluido como en una partitura hecha a mano? Si tiene dudas, mida ambos con una regla.
- Ponga las dos partituras en un atril a un metro de distancia; esto es bastante común cuando se está tocando. ¿Puede leer ambas páginas? Casi todas las ediciones de ordenador tienen una apariencia anémica: usan líneas que son demasiado delgadas, y símbolos demasiado ligeros. Esto las hace difíciles de leer a distancia. Si tiene dudas, mida la diferencia con una lente de aumento.
Siguiente: Cómo no diseñar software, o: modelizar la notación musical.
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:
<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
Plan de campaña
Debido a que el contenido y la forma de una partitura están separados, tenemos que reflejarlo en el diseño del software. De aquí que el proyecto básico de nuestro programa siga el siguiente esquema:
|
← | { c'4 d'8 } |
| 1. forma | 2. traducción | 3. contenido |
- Tipografía: dónde colocar los símbolos
- Notación: qué símbolos producir
- Representación: cómo codificar la música
- Arquitectura: juntarlo todo
Siguiente: Impresionante, pero ¿también funciona en la práctica? Un enfoque práctico para capturar la notación.
Notación musical
La notación musical común abarca cerca de 500 años de música. Sus aplicaciones van desde melodías monofónicas hasta monstruosos contrapuntos para gran orquesta. ¿Cómo vamos a dominar a una bestia de tantas cabezas? Nuestra solución es hacer una estricta distinción entre la notación, qué símbolos usar, y el grabado, dónde colocarlos. Para atacar el problema de la notación, lo hemos dividido en bloques más pequeños y fáciles de programar: cada tipo de símbolo se maneja por un «plugin» o añadido separado. Todos los plugins cooperan a través de la arquitectura de LilyPond. Los plugins son completamente modulares e independientes, por lo que cada uno puede ser desarrollado y mejorado por separado.
- El plugin más básico crea las cabezas de las notas:
Este plugin crea objetos gráficos a partir de eventos musicales. A las personas que crean imágenes gráficas a partir de ideas musicales se les llama copistas o grabadores, así que, por analogía, este plugin se llama Note_head_engraver (grabador de las cabezas de nota).
- El Staff_symbol_engraver genera el objeto que representa
las líneas del pentagrama.
-
El Clef_engraver o grabador de la clave le dice al Note_head_engraver qué
tan aguda o grave debe colocarse cada cabeza.
-
Para los corchetes y las plicas añadimos un Stem_engraver (grabador de las plicas):
Este grabador recibe un aviso por cada cabeza de nota que llega. Cada vez que se ve una cabeza (o más, en el caso de un acorde), se crea un objeto de plica que se anexa a la cabeza de la nota.
-
Las barras, ligaduras y acentos se manejan por parte de grabadores
distintos. Como el Stem_engraver o grabador de las plicas, crean objetos y los
conectan a plicas, cabezas de notas, etc.:
-
Las alteraciones accidentales, las líneas divisorias y las indicaciones de compás y de armadura de la tonalidad, tienen cada uno
un grabador distinto.
El Accidental_engraver, o grabador de las alteraciones, es el plugin más complejo: tiene que examinar la armadura, la altura de las notas, las ligaduras y las barras de compás para decidir cuándo imprimir las alteraciones accidentales.
Notación polifónica
El sistema que se ha mostrado en la sección anterior funciona bien para música monofónica, pero ¿qué pasa cuando se trata de polifonía? En la notación polifónica, muchas voces pueden compartir un pentagrama:
En esta situación, los accidentes y el pentagrama se comparten, pero las plicas, ligaduras, barras, etc., son exclusivas de cada voz. Por lo tanto, los grabadores se tienen que agrupar. Los grabadores de las cabezas, plicas, ligaduras, etc., van en un grupo llamado "Voice Context" (contexto de voz), mientras que los grabadores de la armadura, accidentes, compás, etc. van en un grupo llamado "Staff Context" (contexto de pentagrama). En el caso de la polifonía, un solo contexto de Pentagrama contiene más de un contexto de Voz; asimismo, un solo "Score Context" (contexto de partitura) puede contener muchos contextos de pentagrama:
Siguiente: el arte del estampado:
¿Cómo hacían la música grabada a mano?
Grabado de música
Cuando sabemos qué símbolos imprimir, debemos decidir dónde ponerlos para que el resultado tenga un aspecto satisfactorio. Este arte se llama grabado musical. El término deriva del proceso tradicional de la impresión musical. Hace sólo unas décadas, las partituras se hacían cortando y estampando la música en placas de zinc o estaño en una imagen invertida como en un espejo. La placa se entintaba y las depresiones causadas por los cortes y estampados retendrían la tinta. Se formaba una imagen al prensar un papel contra la placa. El estampado y corte se hacía completamente a mano. Hacer correcciones era muy complicado, por lo que el grabado debía hacerse correctamente a la primera. Por supuesto, ésta era una habilidad muy especializada:- El grabado de música es una artesanía, y se aprendía con la práctica. Para convertirse en maestro se debían completar cerca de 10 años de entrenamiento.
- La mayor parte del conocimiento se pasaba de maestro a aprendiz durante el entrenamiento práctico. En consecuencia, se ha escrito poco acerca de las reglas de un grabado elegante.
- Finalmente, el grabado consiste en la selección de la distancia y
negrura apropiadas de las partituras.
La calidad del resultado final se debe juzgar de manera visual.
Por eso es prácticamente imposible capturar
estos elementos en reglas formales.
Siguiente: ¿Estampado en pantallas de ordenador?. Hackers informáticos toman por asalto el negocio del grabado.
Implementación de la tipografía
¿Cómo hacemos para implementar la tipografía? Resolver el "problema de la notación musical" nos ha dejado con una gran cantidad de objetos gráficos que representan las cabezas de las notas, el pentagrama, las plicas, etc.
Si los artesanos requieren más de diez años para convertirse en verdaderos maestros, ¿cómo vamos a poder nosotros, simples hackers, desarrollar un programa que les quite el trabajo?
La respuesta es: ¡no podemos! Puesto que la tipografía se fundamenta en el jucio humano sobre la apariencia, no se puede sustituir a las personas. Sin embargo, gran parte de su duro y repetitivo trabajo se puede automatizar: si LilyPond resuelve la mayoría de las situaciones más comunes de forma correcta, entonces esto ya será una gran mejoría sobre el software existente. El resto de los casos se pueden afinar a mano. Con el curso de los años, el software se podrá ir refinando para que haga cada vez más cosas de forma automática, de manera que las alteraciones forzadas a mano serán cada vez menos.
¿Cómo podemos construir tal sistema? Cuando iniciamos, escribimos el programa en C++. En esencia esto significa que la funcionalidad del programa quedaría grabada en piedra por nosotros, los desarrolladores. Esto demostró no ser satisfactorio:
- Si las cosas se tienen que afinar a mano, entonces el usuario debe poder acceder al motor de formateo. Por lo tanto, las reglas y parámetros no se pueden fijar en el momento de la compilación, sino que deben ser accesibles en el momento de la ejecución.
- El grabado es un asunto de juicio visual y por lo tanto de gusto personal. A pesar de ser tan conocedores como creemos ser, los usuarios podrían no estar de acuerdo con nuestra decisión estética. Por lo tanto, las definiciones sobre el estilo tipográfico también deben ser accesibles para el usuario.
- Por último, refinamos continuamente los algoritmos de formateo, por lo que necesitamos un enfoque flexible respecto de las reglas. El lenguaje C++ nos obliga a usar un método determinado de reglas de agrupación que no concuerda con la manera en que funciona la notación musical.
Siguiente: La arquitectura del programa, su amiga flexible: afinar, modificar y desarrollar las reglas de tipografía.
Una arquitectura de formateo flexible
¿Recuerda el problema de la notación musical? Su solución nos dejó una gran cantidad de objetos. La arquitectura de formateo se construye sobre estos objetos. Cada objeto conlleva unas variables o atributos:
- Las variables controlan decisiones sobre la diposición. Por
ejemplo, muchos objetos tienen una variable de dirección que
determina la elección entre arriba y abajo (o izquierda y
derecha). Aquí puede ver dos acordes con acentos y un arpegio. En el
primer acorde, todos los objetos tienen la dirección hacia abajo (o hacia la
izquierda). El segundo acorde tiene todas las direcciones hacia arriba
(o hacia la derecha).
El proceso de formatear una partitura consiste en leer y escribir las variables de los objetos.
- Algunas variables tienen un valor predefinido. Por ejemplo, el grosor
de muchas líneas –una característica tipográfica de
estilo– son atributos que ya están predispuestos. Al cambiarlos
se obtendrá una impresión tipográfica distinta:
- Las reglas de formateo también son variables que están predefinidas:
cada objeto tiene variables que contienen procedimientos. Estos
procedimientos son los que realizan la operación de formateo, y al
sustituirlos por otros podemos cambiar su comportamiento. En el
siguiente ejemplo, la regla que usan los objetos de cabeza de nota
para dibujar su símbolo, se cambia en el transcurso del fragmento:
Siguiente: La belleza de los números: cómo LilyPond participa en los concursos de Miss Mundo.
La belleza de los números
¿De qué forma concreta se toman las decisiones sobre formateo? En otras palabras, ¿cuál de las tres configuraciones debemos escoger para la siguiente ligadura?
Se pueden encontrar algunos libros sobre el arte de grabar notación musical. Por desgracia, contienen reglas prácticas sencillas y algún que otro ejemplo. Tales reglas pueden ser instructivas, pero están lejos de constituir un algortimo que se pueda implementar en un ordenador. Seguir las instrucciones a partir de la literatura lleva a la construcción de algoritmos con demasiadas excepciones manuales. Llevar a cabo todo este análisis de casos es mucho trabajo, y generalmente no se cubren todos los casos completamente.

Reglas de formato definidas mediante ejemplos. Imagen extraída de «The Art of Music Engraving», de Ted Ross
Hemos desarrollado un método mucho más sencillo y robusto para determinar la mejor solución de formateo: formateo basado en puntuaciones. El principio es el mismo que se usa en los concursos de belleza: para cada configuración posible, se calcula una puntuación de «fealdad». Entonces se procede a seleccionar la configuración menos fea.
Por ejemplo, en la configuración que se muestra arriba, la ligadura conecta estéticamente a la primera y última notas de la figura, una característica deseable. Sin embargo, casi alcanza a rozar la cabeza de una de las notas, mientras que se mantiene lejos de las demás. Por lo tanto, para esta configuración, se le deducirá una puntuación de «discrepancia» de 15.39.
En esta configuración la ligadura mantiene una distancia uniforme con respecto a las notas, pero tenemos que deducir algunos puntos porque la ligadura no inicia y termina en las cabezas de las notas. Por el extremo izquierdo deduciremos 1.71, y por el extremo derecho (que está más lejano a la cabeza), restaremos 9.37 puntos. Además, la ligadura tiende hacia arriba, mientras que la melodía es descendente; esto causará una penalización de 2.00 puntos.
Por último, en esta configuración, sólo el final de la ligadura está alejado de la última nota, lo que da una puntuación de 10.04 puntos de fealdad.
Al sumar todos los puntos, notamos que la tercera opción es la menos fea, o la más bella; por lo tanto, escogemos ésta.
Esta es una técnica general que se usa en muchas situaciones. Por ejemplo:
- determinar la pendiente de las barras
- formateo de acordes ligados
- formateo de acordes con puntillo
- cortes de línea
- cortes de página
Esta técnica evalúa muchas posibilidades, que se tardan algo de tiempo en calcular. Sin embargo, es un gasto que vale la pena, porque el resultado final es mucho mejor, y también porque nos hace la vida más fácil.
Siguiente: El hombre es la medida de todas las cosas: ¿es suficiente una arquitectura flexible?
Banco de pruebas de la notación
Para conseguir un buen formateo se necesita una arquitectura flexible. Desgraciadamente, esto no es suficiente. Sólo una cuidadosa emulación del material impreso proporciona un buen resultado. En la introducción propusimos la comparación de una partitura generada por ordenador con otra original hecha a mano. Ésta es exactamente la técnica que usamos para mejorar los resultados de LilyPond. En cierta manera, ésta es una forma de realizar bancos de prueba: el desempeño del programa, en términos de calidad, se mide en relación a una cantidad conocida.Aquí puede ver partes del banco de pruebas de una pieza. Arriba la edición de referencia (Bärenreiter BA 320) y abajo la salida de LilyPond 1.4:
Bärenreiter (haga clic para ampliar la imagen)
LilyPond 1.4
La salida de LilyPond es legible, ciertamente, y para muchas personas sería aceptable. Sin embargo, bajo una inspección más profunda, la comparación muestra muchos errores en los detalles de formateo:
- Gran cantidad de los símbolos estaban desequilibrados. En particular, el símbolo del trino era demasiado grande.
- Las plicas y las barras estaban mal: las plicas eran demasiado largas y la barra debería estar inclinada para cubir exactamente las líneas del pentagrama. La barra también era demasiado delgada.
- El espaciado era irregular: algunos compases estaban muy apretados y otros eran demasiado anchos.
Mediante el desarrollo de los algoritmos, configuraciones y diseño de tipografía adecuados, pudimos mejorar el resultado. Debajo mostramos la salida para LilyPond 1.8. Aún cuando no es un duplicado exacto de la edición de referencia, este resultado está muy cerca de una calidad de publicación.
LilyPond 1.8
Bärenreiter
Otro ejemplo de bancos de prueba es nuestro proyecto para la serie 2.1, un lied de Schubert.
Siguiente: Características notables, los aros circenses tipográficos por los que hicimos pasar a LilyPond.
Diseño de la fuente tipográfica
Un factor importante que hace que la salida de LilyPond tenga un aspecto tradicional recae en la negrura de la página. Al usar líneas más pesadas en el pentagrama y un diseño de fuente acorde con esto, la impresión general es mucho más fuerte. Esto es más evidente a partir de las siguientes imágenes ampliadas:
![]() |
![]() |
![]() |
| Henle (2000) | Bärenreiter (1950) | LilyPond (2003) |
Otro aspecto típico de las partituras grabadas a mano es la apariencia general de los símbolos. Casi nunca tendrán esquinas agudas. Esto es porque las puntas agudas de los cinceles de grabación son frágiles y se desgastan con rapidez cuando se está estampando metal. La forma en general redondeada de los símbolos musicales está presente en todos los glifos de nuestra fuente tipográfica "Feta".
Espaciado
Uno de los problemas que esta pieza de Bach nos inspiró a resolver, fue el motor de espaciado. Una de sus características es el espaciado óptico. Se demuestra en el fragmento que aparece abajo.
Este fragmento sólo usa negras: las notas se tocan a un ritmo constante. El espaciado debería reflejar esto. Desafortunadamente, el ojo a veces nos engaña un poco: no sólo nota la distancia entre las cabezas de las notas, también toma en consideración la distancia entre plicas sucesivas. Como resultado, las notas de una combinación de notas plica-arriba/plica-abajo deberían estár más distanciadas, y las notas de una combinación de notas plica-abajo/plica-arriba deberían estar más cercanas, todo dependiendo de la posición vertical combinada de las notas. El fragmento superior se imprime con esta corrección; el de abajo, sin ella. El el último caso, las combinaciones plica-abajo/plica-arriba forman racimos de notas.
Líneas adicionales
Las líneas adicionales son tipográficamente difíciles. Con mucha facilidad pueden emborronar o manchar otros signos, tales como líneas adicionales o alteraciones accidentales. Otros programas evitan estas colisiones espaciando las líneas adicionales más ampliamente (por lo tanto ocupando más espacio), o acortando las líneas adicionales (lo que dificulta la lectura).
|
|
![]() |
| Henle (2000) | Bärenreiter (1950) | LilyPond (2004) |
Siguiente: Usa la Fuente, Luke, o: qué ocurre dentro de LilyPond.
El formato de la entrada
Como se discutió anteriormente, el formato de entrada ideal para un sistema de grabado musical es el contenido: la propia música. Esto plantea un problema formidable: ¿cómo definimos qué es la música realmente? Nuestra salida de este problema es darle la vuelta. En lugar de definir lo que es la música, nuestro programa sirve de definición: escribimos un programa capaz de producir música impresa y ajustamos el formato para que sea tan escueto como sea posible. Cuando el formato no se puede recortar más, por definición nos quedamos con el contenido en sí.
La sintaxis es también la interfase de usuario de LilyPond, por lo tanto es fácil escribir, por ejemplo:
c'4 d'8Son un Do central negra y un Re corchea, como en este ejemplo:
A una escala microscópica, tal sintaxis es fácil de usar. En una escala mayor, la sintaxis también necesita una estructura. ¿De qué otra manera podemos escribir piezas complejas como sinfonías u óperas? La estructura se forma mediante el concepto de expresiones musicales: al combinar pequeños fragmentos en segmentos de mayor tamaño, se puede expresar música de mayor complejidad. Por ejemplo:
| c4 |
|
Combine esto simultáneamente con otras dos notas al encerrarlo entre << y >>.
<<c4 d4 e4>> |
|
{ <<c4 d4 e4>> f4 }
|
|
<< { <<c4 d4 e4>> f4 } g2 >>
|
|
Estructuras recursivas como ésta se pueden especificar formalmente y de manera clara en una gramática independiente del contexto. El código de análisis también se genera a partir de esta gramática. En otras palabras, la sintaxis de LilyPond está definida claramente y sin ambigüedades.
Las interfases de usuario y la sintaxis son con lo que la gente tiene que tratar la mayor parte del tiempo. Son en parte una cuestión de gusto, y también un tema sujeto a mucha discusión. Aún cuando las discusiones sobre el gusto tienen su mérito, no son muy productivas. En el contexto mayor de LilyPond, la importancia de la sintaxis de entrada es pequeña: inventar una sintaxis nítida es sencillo, pero escribir un código decente para formatear es mucho más complicado. Esto se puede ilustrar por el número de líneas de los componentes respectivos del software: el análisis sintáctico y la representación se llevan menos de 10% del código.
| Análisis y representación | Total |
|---|---|
| 6000 líneas de código C++ | 61500 líneas de código C++ |
Siguiente: resumiendo, la conclusión.
Conclusión
Le hemos mostrado el aspecto que debería tener la música grabada, y cómo hemos desarrollado nuestro software para emular dicho aspecto. Hemos dedicado mucho esfuerzo a su construcción. Gracias a todo ese duro trabajo, puede usar el programa para imprimir maravillosas partituras también.
Ir de regreso al índice.



