lunes, septiembre 08, 2014

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>






No hay comentarios: