# LilyPond

GNU LilyPond es un programa de software libre para edición de partituras para todos los sistemas operativos usuales; utiliza una sencilla notación de texto como entrada, y produce una salida en el formato predeterminado PDF (a través de PostScript) y también en SVG, PNG y MIDI. A diferencia de algunos programas comerciales de edición de partituras, LilyPond no incluye su propia interfaz gráfica para la confección de partituras; en lugar de ser un programa interactivo, funciona por línea de comandos invocando a un archivo fuente como argumento, como un compilador. Sin embargo tiene el propósito de producir una salida de la misma calidad que las partituras elaboradas profesionalmente y mejor que muchas partituras comerciales hechas con otros programas de ordenador. La orden de consola o terminal para producir una partitura en formato PDF a partir del documento partitura.ly que contiene el código fuente, sería el siguiente:
o hacer doble clic sobre el icono del documento, en un sistema Windows.
La mayoría de los usuarios utilizan LilyPond interactuando de forma visual con la partitura a través de algún tipo de entorno amigable como el editor Frescobaldi, que resalta la sintaxis, llama al ejecutable lilypond sobre el documento actual al pulsar una sola tecla y presenta el resultado en PDF sobre un panel de vista previa con funcionalidad de apuntar y pulsar directa e inversa. El equipo de desarrollo de LilyPond recomienda que todos los nuevos usuarios instalen el programa Frescobaldi u otro similar para utilizar LilyPond a través del mismo.
Una de las metas principales de LilyPond es la producción de partituras de una calidad inusualmente alta que se componen tipográficamente según las reglas de disposición tradicionales de la época en que las partituras se grababan a mano. Frecuentemente se considera que produce una salida de mejor calidad que los principales programas comerciales, y en los últimos años no ha cesado de mejorar.
El proyecto Mutopia, que distribuye partituras gratuitas, utiliza LilyPond para componer tipográficamente la música, igual que Musipedia, una enciclopedia colaborativa de música. WikiTeX, una interfaz de MediaWiki, posibilita la edición de notación de LilyPond directamente en los artículos del wiki.

## Excelencia en tipografía musical

LilyPond está diseñado como un sistema de grabado musical automatizado; las mejores disposiciones para la música se obtienen a partir del código de entrada siguiendo un algoritmo en el que un amplio abanico de posibilidades de disposición de la música compiten entre sí siguiendo un sistema de puntuaciones como en un concurso de belleza.
Algunos de los criterios que colocan a LilyPond en una situación distinguida de otras soluciones para la confección de partituras musicales, son los siguientes:
* Escalado óptico de la fuente tipográfica: dependiendo del tamaño de la fuente, se altera ligeramente el diseño de la fuente (lo que es una funcionalidad por la que la fuente Computer Modern de D. Knuth es bien conocida): las cabezas de las notas se hacen más redondeadas, y las líneas relativamente más gruesas.
* Espaciado óptico (véase el ensayo), en que las direcciones de las plicas se tienen en cuenta para el espaciado de las notas subsiguientes. Debe observarse que esto es algo distinto a la posibilidad de Sibelius incorrectamente denominada Optical (tm) Spacing.
* Espaciado proporcional, en que la extensión horizontal de una figura es exactamente igual a su duración, lo que es un requisito para muchas partituras de música contemporánea. Ningún otro programa contempla esto de serie.
* Las líneas adicionales nunca colisionan y en situaciones de estrechez se acortan para dejar espacio a las alteraciones accidentales.
* Las direcciones de las plicas en las notas centrales siguen a las de las notas circundantes.
Otras características de LilyPond son:
* Espaciado y saltos automáticos de línea y de página.
* Manejo de la separación entre pentagramas mediante una línea de horizonte (skyline) ajustada a los objetos visibles.
* Manejo de colisiones polifónicas para las notas, puntillos y silencios.
* Colocación automática de alteraciones accidentales, barras, ligaduras de expresión y de unión.
* Los usuarios no requieren experiencia tipográfica para producir una excelente notación.
* No se requiere interacción por parte del usuario durante la ejecución. Se puede automatizar la ejecución del programa, lo que es conveniente para la conversión en masa de bases de datos de música digitalizada y para la impresión de composiciones algorítmicas.
* Las fuentes tipográficas Feta, Parmesan y Emmentaler han sido preparadas especialmente para LilyPond, y se diseñaron cuidadosamente para que emularan las mejores partituras grabadas a mano. Está disponible como una fuente tipográfica escalable en formato OTF, y también como una Metafont.

## Características de arquitectura interna

GNU LilyPond está escrito en C++ y construido mediante una biblioteca de Scheme (GNU Guile) que también permite la personalización y extensión por parte del usuario.

## Interacción con otros programas

Uno de los entornos más completos para trabajar con LilyPond es Frescobaldi, de Wilbert Berendsen.
El plug-in OOoLilyPond para OpenOffice.org y LibreOffice permite insertar fragmentos de música elaborados con LilyPond dentro de los documentos del procesador de texto Write, muy fácilmente.
El plug-in LilyPondTool, de Bertalan Fodor, para el editor jEdit, era otra posibilidad hasta que su desarrollo se detuvo definitivamente en la versión 2.14.
Existen programas como Denemo, que se integran como interfaz gráfica para LilyPond. Denemo incluye a LilyPond de forma empotrada.
El secuenciador MIDI Rosegarden y los programas gráficos de notación musical MuseScore, NoteEdit y NtEd pueden exportar archivos directamente al formato de LilyPond. MuseScore anunció que la exportación a LilyPond sería eliminada en la próxima versión para concentrar los esfuerzos en la entrada y salida en formato MusicXML, que LilyPond puede importar.

## Usuarios destacados de LilyPond

Algunos de los usuarios del programa LilyPond que es significativo mencionar son:
* Valentin Villenave, compositor, quien estrenó en febrero de 2009, en la Opéra Comédie de Montpellier, su ópera "Affaire étrangère" junto al dibujante de cómic Lewis Trondheim y la licenció como si fuese un programa bajo copyleft, publicando su código en un repositorio git de control de versiones para su descarga pública.
* Nicolas Sceaux, quien mantiene un repositorio git con versiones de referencia de óperas y oratorios barrocos de autores como Haendel, Charpentier, Lully o Rameau.
* Laura Conrad mantiene una editorial, Serpent Publications, de partituras de música del renacimiento elaboradas con LilyPond.
* El director de orquesta Aurélien Bello hace grandes proyectos como las reorquestaciones de los Cuadros de una exposición, de Modest Músorgski, y una versión para niños de El anillo del nibelungo de Richard Wagner.
* Reinhold Kainhofer es el editor de la empresa Edition Kainhofer. que utiliza exclusivamente este programa.
* Wilbert Berendsen, compositor y organista holandés, mantiene una amplia colección de música vocal y para órgano.

## Origen del nombre

LilyPond (del inglés "lily pond" que significa "estanque de nenúfares") debe su nombre a Suzanne, una chica compañera de Han-Wen Nienhuys en una orquesta sinfónica de aficionados, que tocaba la flauta y el violonchelo y con la que salía. Susan (Suzanne) en hebreo significa "nenúfar".
Por su parte, Jan Nieuwenhuizen salía con otra chica llamada Roos que también tocaba el violonchelo. Roos es "rosa" en holandés, y el programa Rosegarden (en inglés "jardín de rosas") es un secuenciador MIDI que exporta las partituras en el formato de LilyPond.
El nombre de la fuente tipográfica Feta, que contiene la mayor parte de los glifos musicales, es un guiño privado proveniente de Font-Ent-Tja, el nombre de otra chica que los autores originales conocían. Parmesan es un queso madurado que dio nombre a la fuente utilizada para música antigua. Cuando se creó el tipo OTF Emmentaler que incluía a las dos fuentes anteriores junto con el alfabeto, el tipo recibió el nombre de un queso grande y lleno de agujeros, pues muchos códigos de la codificación personalizada de la tabla de glifos estaban vacíos.

## Ejemplo de un archivo de entrada de LilyPond

LilyPond es un sistema que consta de un programa procesador de los archivos de entrada, y un lenguaje de marcado en que se escriben estos archivos de entrada. Este es un ejemplo completo que define una partitura sencilla con dos pentagramas y un compás.
A continuación aparece la imagen de música que LilyPond produce a partir de este código. La imagen está producida por la extensión Score de MediaWiki, que acepta código de LilyPond directamente.

## Características del lenguaje de tipografía musical LilyPond

Dentro de las categorías de programas de ordenador, puede considerarse a LilyPond dentro de la clase de los compiladores especializados en tipografía, al estilo de LaTeX. La única función del programa es procesar el archivo de entrada, por lo que no incorpora ninguna interfaz distinto a este archivo de entrada. Ello lo caracteriza a veces erróneamente como un programa "en modo texto", cuando en realidad no es más que un compilador.
La sintaxis del lenguaje LilyPond desciende directamente de la de PovRay, con la diferencia de que las palabras clave están precedidas de barra invertida. La similitud en la sintaxis tiene su origen en el hecho de que heredó directamente el código de Bison para la definición de la gramática, que fue posteriormente modificada.
El texto después de un signo de porcentaje (%) es un comentario. Los signos dobles de porcentaje se utilizan aquí para mejorar la legibilidad.
La estructura de un partitura escrita en el lenguaje LilyPond sigue la misma jerarquía de expresiones que la música que pretende tipografiar. Una partitura es una sola expresión musical compuesta, que consiste en un bloque entre llaves { } precedido opcionalmente de una función o palabra clave con barra invertida. Las expresiones compuestas pueden comprender en su interior otras expresiones en secuencia, o disponerse entre ángulos dobles << >> para indicar que las expresiones son simultáneas. De esta forma se refleja el aspecto bidimensional de la música, en que al mismo tiempo existe una secuencia temporal "horizontal" y una polifonía "vertical" en los acordes o en la simultaneidad de las voces o partes instrumentales. Estas propiedades hacen que el lenguaje LilyPond tenga un potencial que no se limita a la tipografía musical, sino que sirve para representar la música con su propia semántica y así poderlo analizar mecánicamente como música o producir fácilmente archivos MIDI.
Las propiedades de los objetos jerárquicos de la música están representados en el lenguaje LilyPond mediante "contextos" que son trazados gráficamente por un plug-in (complemento) llamado "grabador". Así, tenemos un contexto predeterminado "Score" (partitura) dentro del que se insertan contextos de "Staff" (pentagrama) y en ellos se alojan contextos "Voice" o de voz. Para la letra de las canciones tenemos los contextos "Lyrics". Los contextos se crean explícitamente mediante la instrucción \new y pueden recibir un nombre en el momento de su creación. Se crea automáticamente un contexto Score si no se invoca explícitamente \new Score, así como dentro de los pentagramas se crean automáticamente contextos Voice para alojar las notas. La polifonía explícita en un solo pentagrama se puede implementar creando más de un contexto Voice dentro de un contexto Staff.
En LilyPond, las notas se introducen en un formato que especifica nota, altura y duración; la altura se representa mediante el nombre de las notas en idioma inglés como en c d e f g a b o, en otros idiomas como el español, mediante:
Las octavas de la altura se representan mediante series de apóstrofos o comas, que representan una octava hacia arriba o hacia abajo a partir de la base, respectivamente. Por ejemplo, a' es un La, una octava hacia arriba a partir de la base.
Los valores o duraciones de las notas se añaden a la altura de la nota como un número que sigue el denominador de la fracción que divide a la redonda. Así tenemos el 1 para la propia redonda y el 2, 4, 8, 16 para la blanca, negra, corchea y semicorchea respectivamente. No existe un límite artificial a las duraciones, aunque se dispone de glifos para representar solamente hasta la garrapatea (1/128 de redonda).
El empleo de paréntesis y corchetes no tiene el significado habitual de encerrar o agrupar notas, sino que el paréntesis de apertura se coloca después de una nota para marcarla como la primera de una ligadura de expresión, como en a( b c d e). De igual forma, las barras de corchea dan comienzo en la nota que está marcada por su derecha con un corchete de apertura, como en a8[ b c d].
LilyPond tiene dos modos de introducir las alturas de las notas: absoluto y relativo. En el modo absoluto siempre se especifican las alturas, nota por nota, relativo a la base. En el modo relativo, cuando la melodía se mantiene dentro de ciertos límites, se supone que las notas con una altura no especificada se encuentran “cerca” de la última nota y los especificadores de octava se utilizan solamente cuando el intervalo desde la nota precedente es mayor de una cuarta.
Los archivos de entrada de LilyPond deben escribirse en la codificación UTF-8. Ello hace posible la combinación de cualquier conjunto de idiomas en el mismo archivo.

## Comparación con otros programas de edición de partituras

En las comparaciones con otros paquetes de composición tipográfica de partituras musicales como Sibelius o Finale, el programa LilyPond acusa puntos fuertes y no pocas objeciones. La mayor objeción que se le suele achacar es su paradigma "no visual" de manejo a través de un código calificado a veces como "difícil". También se ha tildado de "no apto para músicos" y de "poco intuitivo". Los autores del programa y sus usuarios habituales replican exponiendo una serie de puntos clave en defensa del paradigma orientado a texto:
* El amplio parque de usuarios está formado por músicos, no por programadores.
* El usuario novato debe leerse la documentación, comenzando por el tutorial.
* Como compilador, sabemos por LaTeX, C o cualquier otro lenguaje de programación, que la potencia de un código expresivo y flexible supera a la del engorroso manejo del ratón para representar exactamente lo que queremos, sin ambigüedades.
* La calidad del resultado es muy elevada porque incorpora de forma predeterminada reglas que evitan colisiones entre objetos, correcciones ópticas en función del espacio disponible y del tamaño de la tipografía, entre otras. Además, para conseguir cualquier funcionalidad avanzada no se requiere nada más que copiar el fragmento de código donde esta funcionalidad se invoque, procedente de los manuales, de las listas de correo de usuarios o de los repositorios de fragmentos de código existentes.
En cuanto a la velocidad de introducción de la música, algunos estudios informales como el de Andrew Hawryluk señalan que en LilyPond es más lenta la introducción de las notas pero más rápida la obtención de un resultado final de alta calidad, mientras que en los programas visuales gráficos la introducción de las notas representa un pequeño porcentaje del tiempo total destinado a completar una partitura con un aspecto decente.