Ir al contenido principal

Una interfaz Gráfica para Lylipond


El proyecto de Lilypond no ha desarrollado una interfaz gráfica, pero si podemos encontrar otros proyectos que nos pueden ayudar a suplir esta carencia. Se tratan de  aplicaciones de software libre que permiten la edición y reproducción visual de partituras, con la posibilidad de exportar estas al formato de Lilypond. Por ejemplo: GNU Denemo, Canorus, Rosegarden o MuseScore.
MuseScore (http://musescore.org/es) es un editor visual de partituras con un manejo sencillo y similar a otras alternativas comerciales muy conocidas. Dispone de un estupendo asistente para comenzar la creación de una nueva partitura, que es ideal para principiantes y un rápido inicio para las personas experimentadas. Puede ser la mejor opción para iniciarse en la edición de partituras mediante software libre, pues al permitir importar partituras en formato MusicXML y en MIDI estándar, podremos recuperar partituras que tengamos de otras aplicaciones anteriores. Posteriormente podremos exportar estas partituras a Lilypond y así lograr mejores resultados. No tendremos limitación por el sistema operativo, pues al igual que Lilypond es multiplataforma, funciona tanto en GNU/Linux como en Windows y MacOS X.



Además de estos editores, existen otros que sin ser gráficos disponen de diversas funcionalidades que nos hacen más fácil el trabajo con Lilypond. Por ejemplo: JEdit o Frescobaldi. 
Frescobaldi (http://frescobaldi.org/) es un entorno de trabajo, que integra un editor con  el procesamiento en Lilypond para la generación de los formatos de salida, y su posterior reproducción o visualización. 

Sus principales características son:
  • un asistente para la generación de nuevas partituras, donde fácilmente podemos introducir los títulos y los encabezamientos, las partes y la configuración de la partitura.

  • Sintaxis resaltada por colores. De forma similar a los editores de los entornos de programación de los lenguajes de desarrollo de aplicaciones informáticas, el editor de Frescobaldi nos identifica los términos que introducimos por colores según sean palabras reservadas del lenguaje, cadenas de caracteres, identificadores, etc. Esto permite una mayor facilidad en la lectura del lenguaje y una identificación más rápida de errores introducidos durante la transcripción al ser resaltados en rojo por el editor. 
  • Ocultación de fragmentos de código,  algo que se agradece en partituras de gran extensión para reducir la lectura de fragmentos que no necesitamos o sabes que ya están correctos y en ese momento no son de interés. 
  • Balanceo de llaves. Cuando nos posicionamos o escribimos un cierre de llaves Frescobaldi nos resalta la llave de apertura a  la que corresponde el cierre para que verifiquemos de esta forma que está correcto el balanceo de llaves. 
  • Botonera para la inserción rápida de articulaciones, adornos y símbolos. 
  • Sistema de autocomplementación. Cuando iniciamos la introducción de un termino, a medida que vamos introduciendo caracteres, Frescobaldi nos va ofreciendo los diferentes términos que se pueden utilizar en ese lugar. Esto ahorra tiempo en la escritura y evita errores en la introducción de términos. 
  • Documentación sensible al contexto. 
  • Integración de visualizador de PDF, con posibilidad de pulsar sobre la notación musical  y saltar al lenguaje Lilypond que ha generado la notación correspondiente. 
  • Vinculación con la aplicación Rumor para la entrada de la notación musical desde un teclado MIDI. 
  • Posibilidad de incorporar extensiones con nuevas funcionalidades como: corrección ortográfica, exportación en formato HTML del lenguaje Lilypond de la partitura, etc.

UN EJEMPLO CON FRESCOBALDI

A continuación se muestra la canción popular ¿Dónde están las llaves? elaborada con las notas en colores.


\version "2.16.0"

\header {
title = "¿Dónde están las llaves?"
}

\paper {
% utilize the new format
#(set-paper-size "a4" 'landscape)
indent = #0
ragged-right = ##t
ragged-bottom = ##t
}

global = {
\key c \major
\time 4/4
}

%Association list of pitches to colors.
#(define color-mapping
(list
(cons (ly:make-pitch 0 0 0) (x11-color 'magenta))
(cons (ly:make-pitch 0 1 -1/2) (x11-color 'grey))
(cons (ly:make-pitch 0 1 0) (x11-color 'grey))
(cons (ly:make-pitch 0 1 1/2) (x11-color 'grey))
(cons (ly:make-pitch 0 2 0) (x11-color 'orange))
(cons (ly:make-pitch 0 2 1/2) (x11-color 'orange))
(cons (ly:make-pitch 0 3 -1/2) (x11-color 'green))
(cons (ly:make-pitch 0 3 0) (x11-color 'green))
(cons (ly:make-pitch 0 4 -1/2) (x11-color 'blue))
(cons (ly:make-pitch 0 4 0) (x11-color 'blue))
(cons (ly:make-pitch 0 4 1/2) (x11-color 'blue))
(cons (ly:make-pitch 0 5 0) (x11-color 'red))
(cons (ly:make-pitch 0 5 -1/2) (x11-color 'red))
(cons (ly:make-pitch 0 5 1/2) (x11-color 'red))
(cons (ly:make-pitch 0 6 1/2) (x11-color 'purple))
(cons (ly:make-pitch 0 6 0) (x11-color 'purple))
(cons (ly:make-pitch 0 6 -1/2) (x11-color 'purple))))

%Compare pitch and alteration (not octave).
#(define (pitch-equals? p1 p2)
(and
(= (ly:pitch-alteration p1) (ly:pitch-alteration p2))
(= (ly:pitch-notename p1) (ly:pitch-notename p2))))

#(define (pitch-to-color pitch)
(let ((color (assoc pitch color-mapping pitch-equals?)))
(if color
(cdr color))))

#(define (color-notehead grob)
(pitch-to-color
(ly:event-property (ly:grob-property grob 'cause) 'pitch)))

nmi =\markup { Mi }
nfa = \markup { Fa }
nsol = \markup { Sol }
nla = \markup { La }
nsi = \markup { Si }
ndo = \markup { Do }
nre = \markup { Re }

linea_uno = \relative c' {
e8^\nmi f^\nfa g4^\nsol c^\ndo b8^\nsi b^\nsi a^\nla a^\nla g^\nsol g^\nsol a^\nla b^\nsi
c^\ndo g^\nsol e^\nmi f^\nfa g4^\nsol c^\ndo b8^\nsi b^\nsi a^\nla a^\nla g^\nsol g^\nsol a^\nla b^\nsi c4^\ndo

e,8^\nmi f^\nfa g4^\nsol c^\ndo b8^\nsi b^\nsi a^\nla a^\nla g^\nsol g^\nsol a^\nla b^\nsi
c^\ndo g^\nsol e^\nmi f^\nfa g^\nsol c^\ndo b^\nsi b^\nsi a^\nla a^\nla g^\nsol g^\nsol a^\nla b^\nsi c4^\ndo
}



letra_uno = \lyricmode {
Dón- de_es- tán las lla- ves ma- ta- ri- le, ri- le,
ri- le dón de_es- tán las lla- ves ma- ta- ri- le, ri- le rón.
En el fon- do del mar ma- ta- ri- le, ri- le,
ri- le. En el fon- do del mar ma- ta- ri- le, ri- le, rón.
}


\score {
\new Staff \with {
} { \linea_uno}
\addlyrics { \letra_uno }
\layout {
#(layout-set-staff-size 40)
\context {
\Staff
\override NoteHead #'color = #color-notehead
\override NoteHead #'font-size = #5
\override StaffSymbol #'staff-space = #(magstep 7)
\override StaffSymbol #'thickness = #3
\override Clef #'font-size = #4
}
}
}

Se obtiene algo así:

 

INTEGRACIÓN DE PARTITURAS Y TEXTO

Lilypond nos ofrece unos resultados excelentes para la creación de partituras, pero además nos posibilita la incorporación de sus capacidades en la redacción de nuestros textos de LaTeX, Texinfo, HTML y DocBook, con fragmentos de partituras.

Por ejemplo, para el caso de HTML directamente dentro de nuestra página web podemos incorporar:


<html>
<body>
<lilypond fragment relative=1>
\clef treble
\key d \major
\time 2/4
a'4 d,8 e
</lilypond>
</body>
</html>


Previo a la publicación de la página web deberemos procesar el fichero HTML con lilypond-book que realizará la conversión. Este genera una imagen en formato png para su visualización con un enlace para que se pueda descargar el lenguaje Lilypond que ha generado la notación musical. El fichero HTML resultante tendrá algo similar a:


<html>
<body>
<p>
 <a href="df/lily-ace312ec.ly">
  <img align="middle"  border="0" src="df/lily-ace312ec.png" alt="[image of music]">
 </a>
</p>
</body>
</html>






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