Ir al contenido principal

Edición de partituras con software libre

LILYPOND

Lilypond es un sistema automatizado de impresión de partituras. Este surge a partir de la preocupación de la baja calidad de las partituras impresas a partir del uso de ordenadores para su edición.

Originalmente, la impresión de partituras era un arte consistente en realizar un
grabado mediante la elaboración de los símbolos en placas de zinc o estaño, que
retenían la tinta que sería fijada en un papel. Esto era una labor muy compleja y para alcanzar la maestría se requería cerca de 10 años de práctica. Pero las partituras resultantes eran de una gran calidad en relación a las obtenidas mediante la edición por ordenador, que suelen presentar: un espaciado mayor entre notas generando unas partituras muy extensas, solapamiento entre algunos símbolos dificultando su lectura, líneas y símbolos más delgados que impiden la lectura a distancia, apariencia mecánica pues no se realizan variaciones en la distribución de las notas y muchos otros detalles dependiendo de la partitura y software utilizado.

Lilypond ha creado su propio lenguaje para describir una partitura, y sin necesidad de tener conocimientos de tipografía se pueden obtener unas partituras con un resultado próximo al grabado tradicional. Algunas personas ven esto un inconveniente al no disponer de un interfaz gráfico y tener que aprender un nuevo lenguaje. Pero los creadores de Lilypond nos indican que una vez que se disponen de los conocimientos básicos sobre el lenguaje, el trabajo de creación y mantenimiento de partituras de una cierta complejidad es mucho más ágil desde Lilypond. Puesto que el peso pesado de perfilar los ajustes tipográficos los realiza automáticamente la aplicación y no es necesario estar horas frente a nuestra pantalla ajustando detalles, como suele ocurrir en otras aplicaciones visuales.

CARACTERÍSTICAS PRINCIPALES DE LILYPOND

Al tratarse de software libre muchos pensarán que sólo funciona sobre GNU/Linux, pero por suerte esta aplicación es multiplataforma y también funciona sobre Microsoft Windows, MacOS X y FreeBSD. Aunque realmente donde podremos lograr mejor integración y más herramientas será sobre GNU/Linux.

Además de ser software libre, lo cual implica muchas ventajas, este es gratuito. En la página web del proyecto (www.lilypond.org) se puede descargar la aplicación para todos los sistemas operativos soportados. En la mayoría de las distribuciones GNU/Linux la aplicación está disponible para ser instalada de los repositorios de software con un mínimo esfuerzo. Para el sistema operativo de Microsoft simplemente ejecutando el instalador tendremos la aplicación preparada para su utilización.

Todas las partituras que tengamos editadas con otras aplicaciones posiblemente
podremos migrarlas a Lilypond, puesto que existen muchos formatos soportados
que se pueden importar: ABC, ETF (Finale), MIDI, Music XML, Noteworthy
Composer.

El lenguaje de Lilypond tiene una especificación formal, es conciso y usa los
caracteres ASCII. Por lo que se puede editar por una persona mediante cualquier editor, generando un fichero de texto con extensión .ly que procesará Lilypond. Esto nos permite procesamiento y almacenamiento masivo de partituras.

El principal objetivo de Lilypond era la impresión de las partituras por lo que su
formato de salida principal es PDF, pudiendo también utilizarse PostScript y EPS.

En el caso que deseemos incorporar un fragmento o una partitura completa en otro documento, por ejemplo en una página web, podemos generar una salida gráfica a los formatos PNG y SVG. También se puede generar un fichero MIDI, lo cual nos permite escuchar nuestra partitura.
El proyecto de Lilypond dispone de una amplia y elaborada documentación en

varios idiomas, incluido el español 4, destacar las siguientes secciones: manual de aprendizaje, glosario musical, referencia de la notación, ejemplos, utilización del programa. Lilypond Wiki es un proyecto independiente de los creadores de
Lilypond que aglutina todo tipo de información, es muy interesante la Guía para
principiantes de Lilypond. También es de gran utilidad el proyecto LilyPond Snippet Repository consistente en la creación de una base de datos de fragmentos y pequeños ejemplos del lenguaje de Lilypond, donde consultar trucos y las diversas posibilidades de esta aplicación. Si necesitamos ayuda con Lilypond disponemos de una lista de correo en español (lilypond-es@gnu.org) donde consultar las preguntas  y respuestas de otros usuarios o realizar las nuestras propias. Para estar al día de noticias relacionadas con Lilypond podemos consultar Lilypond News.

El formateo de la partitura es automático y de alta calidad, no es necesaria la
intervención de una persona durante el proceso de formateo, pudiéndose automatizar el procesado de un gran volumen de partituras. Lilypond realiza múltiples labores automáticamente para lograr el mejor resultado, como por ejemplo: espaciado y saltos automáticos de línea y página, 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, las líneas adicionales nunca colisionan, la dirección de las plicas en notas centrales se rigen por las circundantes.

Los usuarios no requieren experiencia tipográfica, el sistema dispone de una
fuente tipográfica escalable cuidadosamente elaborada para obtener los resultados más próximos a grabados manuales de calidad.

INTRODUCCIÓN AL LENGUAJE DE LILYPOND

El lenguaje de Lilypond es sensible a mayúsculas y minúsculas, por ejemplo las
notas musicales se introducen como {c d e f g a b c} (do re mi fa sol la si do) y {r} para los silencios, en mayúscula produciría un error. Los fragmentos secuenciales de música se encierran entre {} (llaves).

Pero es insensible al número de espacios, es decir : {c d e} es igual a {c d e} .
Para introducir aclaraciones o comentarios al lenguaje de Lilypond podemos
encerrar entre %{ . . . %} el comentario o en el caso de ser una sola línea iniciarla
con %.
La estructura básica de los archivos para Lilypond es la siguiente:

\version "X.X.X" % por ejemplo la versión actual sería "2.12.3"
\header {
title = "Título"
 % Título de la obra
composer = "Compositor"
 %Compositor de la obra
}
\book {
 %crea un libro o fichero que agrupa nuestra partitura
\score {
 %un fragmento de música dentro del libro
\new Staff {
 %un nuevo pentagrama
\new Voice {
% expresión musical
}
}
\layout { }
}
}


Aunque podemos indicar directamente unas notas y Lilypond las interpreta como constituyentes de una estructura básica en clave de Sol y con un compás de 4/4. Pero es preferible indicar la estructura completa para evitar resultados inesperados. A continuación se muestra un ejemplo de una entrada abreviada y su estructura completa equivalente.


Ejemplo de entrada sin la estructura completa { a b c d e f g}










Equivalencia

\version "2.12.3"
\header {
}
\book {
\score {
\new Staff {
\new Voice {
\clef treble
\time 4/4
a b c d e f g
}
}
\layout { }
}}


Lilypond posiciona do una octava por debajo del do central, para iniciar en una
posición distinta podemos utilizar la instrucción \relative, para subir una octava
indicaremos \relative c' . Las notas sucesivas se colocan siempre lo más cerca
posible de la anterior e ignorando las alteraciones (sostenido se obtiene añadiendo is a la nota y es para el bemol). Para subir una octava a una nota le podemos añadir ' (apóstrofo) o para bajar , (coma).

\relative c''
% 1 octava por encima del do central
{
  c a aes, c' cis f, g g'' aisis,, feses
}








La duración de una nota se indica añadiendo un número después la nota, donde 1 es redonda, 2 blanca, 4 negra, etc. En ausencia del número de la duración se asume la duración de la nota anterior, la duración inicial por defecto es 4. Las líneas divisorias que indican el término de un compás y principio de otro son añadidas automáticamente, aunque las podemos indicar mediante | (una barra vertical) como sistema de control. En caso de una introducción incorrecta Lilypond nos notificará: “advertencia: la comprobación de compás ha fallado”.

Para añadir una nota con puntillo tendremos que establecer su duración y añadir un . (punto).


\relative c''
{
 c a8 a16 c cis f4. r16.
}






Para indicar la clave utilizamos la instrucción \clef  y  seguido de  treble para Sol, alto para Do en 3ª, tenor para Do en 4ª y bass para Fa. Para indicar el compás utilizamos la instrucción \time seguida de la fracción correspondiente.

\relative c'' {
\clef treble \time 3/4  a4 a a
\clef alto   \time 6/8  a4. a
}




\relative c' {
\clef tenor  \time 4/4  a4 a a a
\clef bass   \time 2/4  a4 a
}





La armadura de la tonalidad se indica mediante la instrucción \key seguida de la nota y \minor  (para menor) o  \major (para mayor). Las notas se deben introducir tal como deseamos que se oigan, luego Lilypond altera automáticamente las notas que se ven afectadas por la armadura para reflejar la nota resultante, este sistema facilitará posteriormente la trasposición.

\relative c''
{
\key d \major
 cis c ces cis e ceses c c
}





La ligadura de expresión se indica mediante ( . . . ), la ligadura de de unión se obtiene indicando ~ (guión curvo) entre las notas, la ligadura de fraseo mediante \( . . . \) .

Ligadura de expresión
\relative c'' { a( a  a) }





Ligadura de unión
\relative c'' { a a ~ a }





Ligadura de fraseo
\relative c'' { a8(\( ais b c) c2 a4 cis,\) }






Para mostrar una indicación de dinámica podemos añadir tras la nota: \ppppp, \pppp, \ppp, \pp, \p, \mp, \mf, \f, \ff, \fff, \ffff, \fp, \sf, \sff, \sp, \spp, \sfz y \rfz. Una indicación de crescendo se comienza con \< y decrescendo con \> y se termina con \!, con un matiz absoluto o con otra indicación de crescendo o de decrescendo.

\relative c'' {a8(\ff ais b c) c2}





\relative c'' { a\< b\! d\> c\mp b\> r a\> b\fff }





Se indican los trinos mediante la instrucción \trill tras la nota y unidos mediante un – (guión):

\relative c'' { a b-\trill c d e }





Las articulaciones y digitaciones se añaden a la nota seguidas por un - (guión) y carácter o número. Lilypond los posiciona en el mejor lugar posible, pero se puede indicar la posición sustituyendo el – (guión) por un _ (guión bajo) para que se muestre bajo la nota o ^ para que se muestre sobre la nota. 

\relative c'' {  a-. a-- a-> a-^ a-+ a-_ }





\relative c' {  c_1 d_2 e-3 f-4 g^5 }
   

El barrado lo realiza automáticamente Lilypond, pero se puede indicar un barrado manual mediante unos [ ] (corchetes) que encierren las notas correspondientes. También se puede desactivar el barrado automático con la instrucción \auotBeamOff y volver a activarlo con  \autoBeamOn.

\relative c'' { a8[ ais] b[ c] c2 }




\relative c'' { \autoBeamOff a8 ais b c c2 }





Los grupos especiales como los tresillos se indican mediante la instrucción \times seguida de una fracción y un fragmento de música. Los tresillos hacen que las notas ocupen 2/3 de su duración expresa, luego su fracción es 2/3:

 \relative c'' { \times 2/3 { f8 g a } a b }





Los acordes se introducen escribiendo las notas entre < > (ángulos), en cualquier orden. Tras el último ángulo podemos indicar casi cualquier cosa como si de una nota se tratara. También se pueden introducir mediante la instrucción \chordmode donde indicamos el nombre del acorde según la música europea tradicional. Las tríadas menores, aumentadas y disminuidas se escriben añadiendo : y nada para mayor, m y m7 para menor, dim y dim7 para acorde disminuido, aug para acorde aumentado y maj y maj7 para acorde de séptima mayor.

\relative c' { <c e g>1 <f a c>2 <g b d>4 }





\relative c' { \chordmode { c1 f2 g4 } }




\relative c' { \chordmode { c1:7 c:m7 c:maj7 c:dim7 c:aug7 } }




Para mostrar expresiones musicales simultáneas las encerraremos entre <<  y  >>. Para crear partituras de piano utilizaremos el contexto \PianoStaff. Para mostrar los nombres de los acordes crearemos una expresión musical simultánea con el contexto ChordNames.

\relative c' {
<<
\new Staff { e4 f g2 e4 f g2 g8 a g f e4 c4 g'8 a g }
\new Staff { d4 g a2 e4 f c2 g8 a f d e4 a4 b8 c d }
>>
}







\new PianoStaff <<
\new Staff \relative c' { c4 c c c }
\new Staff \relative c { \clef bass c4 c c c }
>> 










<<
 \new ChordNames {
   \chordmode {      c1:7 c:m7    }  }  {
   \chordmode {     c1:7 c:m7    }  }
>>








Las tablaturas habituales de los instrumentos de cuerda se introducen mediante los contextos \TabStaff y \TabVoice. También se pueden obtener los diagramas de trastes utilizando el contexto \FretBoards, pero necesitaremos cargar los traste predefinidos que se encuentran en predefined-guitar-fretboards.ly mediante la instrucción \include.

\new TabStaff \relative c' { a,8 a' <c e> a   d,8 a' <d f> a }





\include "predefined-guitar-fretboards.ly"
\context FretBoards { \chordmode { c1 d }}




mixedChords = \chordmode {  c,1  b,,1}
\score {
<<
%nos muestre el acorde
\new ChordNames {
\mixedChords    }
    \new Staff {     \clef "treble_8"     \mixedChords  }    
    \new TabStaff {      \mixedChords  }
 >>
}












Podemos añadir la letra de las canciones mediante la instrucción \addlyrics  seguida entre llaves del texto de la canción. Las sílabas se separan con dobles guiones y la unión de sílabas se indica mediante ~ (guión curvo).

\relative c' { d8 f4 c b8 d }
\addlyrics { la -- le~li –- lo – la } 








EJEMPLO DE LILYPOND

 A continuación se muestra un fragmento del Himno de Andalucía en lenguaje Lilypond y el pentagrama resultante.



}

}








TRABAJAR CON LILYPOND


Lilypond es un programa que no dispone de interfaz gráfica, por lo que tendremos que utilizarlo desde la línea de comandos de nuestro sistema operativo.  Previamente tendremos que haber creado un fichero de texto con la descripción en lenguaje Lilypond de la partitura que deseamos procesar, a este fichero se le suele poner de extensión .ly. Por tanto desde la línea de comandos para obtener un fichero en pdf de la partitura tendremos que introducir:
>lilypond texto-lilypond.ly

Esto mostrará por pantalla:

GNU LilyPond 2.12.3
Procesando «texto-lilypond.ly»
Analizando...
Interpretando la música...
Preprocesando los objetos gráficos...
Buscando el número de páginas ideal...
Disponiendo la música en una página...
Dibujando los sistemas...
Salida de la página hacia «texto-lilypond.ps»...
Convirtiendo en «./texto-lilypond.pdf»...

Lilypond acepta diferentes opciones para modificar su comportamiento, las principales son:
      --pdf                                           generar un PDF (predeterminado)
      --png                                      generar un PNG
      --ps                                        generar un PostScript
  -h, --help                                    mostrar las opciones que acepta lilypond
  -I, --include=DIRECTORIO     añadir DIRECTORIO a la ruta de búsqueda
  -o, --output=ARCHIVO             escribir la salida en el ARCHIVO (se añadirá el sufijo)
  -v, --version                                mostrar el número de versión y salir
  -V, --verbose                              muestra información detallada de los procesos     que realiza.
  -w, --warranty                            mostrar los avisos de garantía y de copyright .


La posibilidad de utilizar Lilypond desde la línea de comandos del sistema operativo tiene muchas ventajas como la posibilidad de realizar trabajos desatendidos, generar colas de trabajo o llamar desde otros programas a Lilypond para que realice su labor. Pero para el trabajo diario de una persona que edite partituras no es una opción cómoda, por lo que existen diferentes entornos de trabajo e interfaces gráficas para facilitarnos su manejo.

MÁS QUE UNA IMPRESIÓN BELLA

Las posibilidades que brinda Lilypond van más allá de las que inicialmente se planteó su creador. El lenguaje Lilypond nos permite representar una partitura mediante un lenguaje formal abierto, legible por una persona y analizable por un ordenador con un costo de computación mucho menor que en la manipulación de imágenes.

Este lenguaje nos ofrece la posibilidad de crear bases de datos de partituras que ocuparan un lugar muchos más reducido al tratarse de texto, pero además con la posibilidad de poder realizar búsquedas sobre las partituras y su audición. Podemos utilizar el propio lenguaje para describir un fragmento de una obra que deseamos localizar en la base de datos, un ejemplo lo podemos encontrar en el Proyecto WITCHCRAFT del departamento de Ciencias Computacionales de la Universidad de Utrecht, que tiene como objetivo desarrollar un sistema de búsqueda de melodías sobre un fondo de canciones folclóricas Holandesas.
Existen otros proyectos que simplemente realizan una labor de recopilación de partituras en formato Lilypond, como pueden ser: El proyecto Mutopia (http://www.mutopiaproject.org), Choral Public  Domain Library (Biblioteca Coral de Dominio Público - http://www.cpdl.org), Proyecto Biblioteca Internacional de Partituras Musicales (http://imslp.org), Nénuvar (http://nicolas.sceaux.free.fr/), Musipedia  (http://www.musipedia.org), etc.

Para una buena identificación de una obra musical son necesarios los íncipits, y para su manejo en base de datos es necesaria una codificación que sea legible de forma cómoda por las personas y que al mismo tiempo sea manejable computacionalmente. En las Jornadas metodológicas de catalogación de fondos musicales de la Iglesia Católica en Andalucía en 1988, desarrolladas en el Centro de Documentación Musical de Andalucía, el profesor López-Calo hace referencia a la necesidad de utilizar  el lenguaje “Plaine and easie code” para codificar los íncipits  por parte del RISM (Répertoire International des Sources Musicales)  y así crear una referencia internacional para la catalogación de las obras musicales.

Por último, y no por ello menos relevante, hay que destacar el proyecto de investigación “Herramienta de transcripción automática de partituras musicales de importancia dentro del patrimonio documental Andaluz mediante reconocimiento óptico de caracteres musicales” de la Universidad de Málaga. Este interesante proyecto hace uso de Lilypond para transcribir la fuente digitalizada tanto a notación antigua original de la partitura como a notación musical moderna.

Comentarios

Entradas populares de este blog

Instalación Django en NAS Synology con FastCGI

Los NAS Synology no traen el módulo de apache mod-wsgi por lo que he utilizado el módulo mod-fastcgi en su lugar para hacer funcionar Django en los NAS Synology. Necesitamos del módulo mysql-python , para su instalación podemos seguir la entrada que ya se publicó en este mismo blog:  http://ilizaran.blogspot.com.es/2014/09/instalacion-del-modulo-mysql-python-en.html De la instalación de mysql-python ya tendremos instalado pip en el NAS por lo que podremos instalar Django con algunos módulos necesarios: pip install Django pip install setuptools pip install flup Para saber que la instalación de Django ha sido correcta y verificar la versión podemos realizar: python import django  django.VERSION Ahora modifcamos la configuración de apache editando el fichero /etc/httpd/conf/httpd.conf-user  para hacer accesible los ficheros css, imágenes y javascript de la parte administrativa de Django, por lo que añadimos: Alias /static/admin /usr/local/packages/@appstore/Python/usr/l

Calcular en Mysql el primer y último día del mes

SELECT DATE_FORMAT(now(),'%Y-%m-01') AS first_day; SELECT date_add(date_add(LAST_DAY(now()),interval 1 DAY),interval -1 MONTH) AS first_day; SELECT LAST_DAY(now()) AS last_day; Calcular en Mysql el primer y último día del mes anterior: SELECT date_add(date_add(LAST_DAY(now()),interval 1 DAY),interval -2 MONTH) AS first_day; SELECT LAST_DAY(date_add(last_day(now()),interval -1 MONTH)) AS last_day;

Instalación del módulo mysql-python en NAS Synology

Instalar gcc en Synology Para la instalación de mysql-python es necesario el compilador gcc, por lo que lo obtendremos de Synology Open Source Project (http://sourceforge.net/projects/dsgpl). El paquete a descargar dependerá de la versión de NAS Synology que tengamos, por lo que tendremos que utilizara el comando: uname -a para conocer la versión de nuestro kernel y arquitectura instalada y descargar el paquete correspondiente. En mi caso he descargado: gcc463_glibc213_i686_cedarview-GPL.tgz pues mi equipo muestra cedarview y i686. Ahora lo descargamos y lo extraemos: cd /usr/local http://kent.dl.sourceforge.net/project/dsgpl/DSM%205.2%20Tool%20Chains/Intel%20x86%20Linux%203.2.40%20%28Cedarview%29/cedarview-gcc463_glibc213_i686_patched-GPL.txz tar -xvJf cedarview-gcc463_glibc213_i686_patched-GPL.txz rm cedarview-gcc463_glibc213_i686_patched-GPL.txz Instalación de las fuentes de Mysql Synology utiliza MariaDB, pero para la compilación del módulo de python podemos utiliz