Download Leer Artículo - Inicio - Universidad de los Andes

Document related concepts

Clave (notación musical) wikipedia , lookup

Tablatura para órgano wikipedia , lookup

Partitura wikipedia , lookup

MuseScore wikipedia , lookup

Cifrado (música) wikipedia , lookup

Transcript
PARADIGMA – Revista Electrónica en Construcción de Software
ISSN: 2011-0065
VOL. 7 No. 2, Julio 2013
Asistente de Composición Musical Utilizando MDE
Ricardo Calle-Archila y Eddie Castro
Universidad de los Andes. Bogotá. Colombia
{cr.calle, ej.castro10} @uniandes.edu.co
Abstract. A las personas que tienen pocos conocimientos y práctica en música,
o que tienen dominio parcial de alguna notación, les es difícil escribir sus propias piezas musicales debido a que las notaciones existentes, como partituras,
tablaturas o formato MIDI, necesitan de ciertas bases y práctica para utilizarlas.
Se identifica la necesidad de emplear una notación o lenguaje simple para los
usuarios que les permita escribir sus piezas musicales, de manera que puedan
ser llevadas a otras representaciones.
Este artículo plantea utilizar MDE para ofrecer un editor que escribir piezas
musicales para varios instrumentos utilizando como base una notación similar a
la inglesa, con la cual se puedan hacer las transformaciones para derivar las partituras, tablaturas y el sonido a través de la interfaz MIDI correspondientes a las
composiciones escritas. Adicionalmente, este artículo presenta los resultados
obtenidos a través de la descripción de un caso.
Keywords: Notación musical, MDE, Metamodelo, Modelo, Transformaciones.
1
Introducción
Para escribir una pieza musical existen reglas propias que la música propone, y al
igual que otro tipo de construcciones (como la programación) hay diferentes lenguajes
o notaciones que se emplean dependiendo de diversos factores, como los instrumentos
a utilizar, el género musical, e incluso, qué tan simple es usarlos en un contexto. Según esto, una persona interesada en experimentar con la composición de piezas musicales, se ve enfrentada a la necesidad de tener conocimientos en música más allá de
cuáles son las notas musicales y cómo se reflejan éstas en los instrumentos.
Este artículo muestra la aplicación de MDE al entorno musical, con el fin de construir
una herramienta para que un usuario pueda escribir piezas de música utilizando conceptos más simples, notas musicales con nombres comunes o propios, y una forma de
edición cercana a la escritura, para, posteriormente, transformar sus composiciones a
otras notaciones. Pese a que los programas comerciales ofrecen un conjunto completo
de herramientas para componer y permiten convertir las piezas en otras representaciones, solamente ofrecen la opción de escribir las piezas en notaciones musicales exis-
tentes como las partituras. Esta propuesta abre las puertas para que el usuario defina
una manera de escribir sus composiciones ya sea con un leguaje más cercano, con un
lenguaje no musical, o con la adaptación de los nombres de las notas y los acordes a
términos propios.
Se buscó partir de una notación similar a la inglesa para escribir una pieza y traducirla
a las siguientes representaciones:
 MIDI [5]: Un formato entendible por programas de computador que también permite escuchar la composición.
 Partitura: Un formato gráfico utilizado por los músicos donde se plasman las notas
musicales, su duración y su distribución en el tiempo.
 Tablatura: Otro formato gráfico utilizado principalmente por quienes interpretan la
guitarra o instrumentos de cuerda.
Utilizando MDE [8] se planteó como solución un editor de texto para un lenguaje de
dominio específico, que amplió las características de representación de la notación
inglesa en la música, para escribir piezas musicales de manera que estas pudieran ser
traducidas a otras notaciones como la utilizada en las partituras, tablaturas o MIDI. Se
elaboró un metamodelo que representa una notación de partida o de origen similar a la
inglesa y que ofrezca al usuario el lenguaje específico para elaborar sus fragmentos
musicales. A la par se construyeron los metamodelos correspondientes a las notaciones aquí denominadas como MIDI, partitura (Posteriormente musicXML[6]) y tablatura, de manera que las instancias de la notación de origen pudieran ser llevadas a las
demás notaciones.
A continuación se presenta un recorrido sobre las notaciones musicales que comprenden el entorno de la solución, los metamodelos de las notaciones, el lenguaje utilizado
para escribir las piezas como punto de partida para las transformaciones hacia las
demás notaciones. Con el fin de comprender también el uso de este lenguaje, se expondrá un ejemplo que servirá como guía, y, por último, este documento cerrará con
las conclusiones a las que se llegaron luego de la implementación y de la obtención
del producto final.
2
Notaciones musicales: entorno del problema
La notación inglesa parte de las letras C, D, E, F, G, A y B para representar los acordes mayores de Do, Re, Mi, Fa, Sol, La y Si respectivamente, pero, para este artículo,
se tomarán como la representación de una nota musical. Estas letras al estar acompañadas por otras permiten especificar los tipos de acordes, por ejemplo, adicionar la
letra M mayúscula a la letra C (CM) seguiría representando un acorde de do mayor
[7], o la adición de la letra m minúscula a la letra D (Dm) representa un acorde de re
menor [7]. Esta notación se lee y escribe como un texto, pero, pese a su simplicidad,
no ofrece información sobre cuánto tiempo puede durar el sonido de una nota, por lo
cual, para esta propuesta, se adicionó esta información al momento de utilizarla, como
se explica más adelante.
Tomando cada letra de la notación inglesa como una nota musical, se puede tener
como ejemplo una secuencia de sonidos que tratan de representar las notas a interpretar por un instrumento en un pequeño fragmento del cuarto movimiento de la Novena
Sinfonía de Beethoven de la siguiente manera: E F G G F E D C C D E E D
MIDI es el acrónimo de Musical Instrument Digital Interface y corresponde a una
especificación implementable en software o hardware para la transmisión y recepción
de mensajes entre, inicialmente, sintetizadores. MIDI ofrece la posibilidad de especificar un sintetizador capaz de reproducir sonidos de diferentes instrumentos en secuencia. Esa reproducción se hace con un secuenciador al cual se le precisan las secuencias para cada instrumento. Cada secuencia se compone por una serie de pistas,
donde cada pista contiene el orden y los momentos en que deben reproducirse las
notas. Las notas se representan con números entre cero y 127, donde cero es la nota
Do y en el que cada incremento en un número significa un incremento en un semitono.
Si se intentara mostrar el ejemplo anterior en una secuencia representando cada sonido como un par ordenado compuesto por cada nota con su duración en milisegundos
(no sería exactamente como funciona en MIDI, pero su similitud ayuda a simplificar
el ejemplo) se vería de la siguiente manera: (52, 1000) (53, 500) (55,500) (55,500)
(53,500) (52,500) (50,500) (48,500) (48,500) (50,500) (52,500) (52,500) (50,1000).
Las partituras son una representación gráfica de una notación musical. La representación, por describirlo de manera primitiva, se hace a través de pentragramas, un conjunto de líneas y espacios que indican las notas musicales y sobre los que se dibujan
principalmente unas figuras denominadas redonda, blanca, negra, corchea, semicorchea, fusa y semifusa (entre otros) que establecen el período de cada nota. Estas gráficas se leen de izquierda a derecha interpretando lo que va apareciendo. Cuando las
notas se encuentran dibujadas sobre una misma línea vertical imaginaria quiere decir
que se tocan en paralelo.
El segmento de ejemplo que se ha manejado en las anteriores notaciones se apreciaría
de la siguiente manera:
Fig. 1. Segmento de partitura correspondiente al ejemplo
MusicXML es un estándar que utiliza XML para hacer la representación de una partitura. Este formato tiene una estructura especial que al estar bien formada es legible y
exportable por los programas de música actuales de manera que con este se pueda
obtener la partitura asociada a su contenido. El ejemplo anterior puede ser extenso
para este artículo, por lo cual solo se mostrará a continuación cómo se representaría la
primera nota dentro de todo el archivo en formato XML:
Fig. 2. Una nota representada en MusicXML
Las tablaturas son otra forma de representación gráfica, utilizadas principalmente por
los intérpretes de la guitarra, para especificar el orden de las notas o acordes que deben interpretar. Para el caso de una guitarra, una tablatura muestra seis líneas, cada
una representa una de las cuerdas sobre el mástil siendo la cuerda más aguda en la
parte superior. Para representar un sonido se escribe sobre la línea el número del traste
que se debe presionar y la cuerda que se debe tocar. Los sonidos en paralelo se representan como números en diferentes líneas pero sobre una misma línea vertical. Las
tablaturas en consecuencia se leen también de izquierda a derecha.
El ejemplo tratado en este apartado podría verse así en una tablatura:
Fig. 3. El ejemplo representado en una tablatura
La pregunta en este punto es: ¿Cómo se escribe una pieza musical? En el sentido más
conciso posible, se puede decir que una pieza se compone de varios instrumentos que
suenan de manera paralela en diferentes momentos. Cada instrumento debe tener una
guía que le indique qué sonidos debe producir y en qué momento. Cada sonido se
conoce como una nota y la agrupación de sonidos para un instrumento que suenan de
manera simultánea de define como acorde. Una pieza musical se escribe entonces con
el conjunto de guías establecidas para cada instrumento, donde cada guía se escribe
utilizando una notación o representación. Para responder la anterior pregunta, en este
caso se eligió como base una adecuación o extensión de la notación inglesa para escribir tales guías, las cuales se “traducirán” a las demás notaciones al ejecutar varias
cadenas de transformación.
3
Propuesta
A continuación se presentan los metamodelos que definen las notaciones abordadas.
3.1
Metamodelo de la notación inglesa
Esta notación ofrece el lenguaje de partida para escribir las piezas musicales y sobre
el que se trabajarán las transformaciones a las demás notaciones. Esta se compone de
cinco conceptos básicos como se aprecia en la figura 1:
Fig. 4. Fragmento del metamodelo en Ecore de la notación inglesa
Composición define toda la pieza musical con su respectivo nombre, la cual se escribe
para un conjunto de instrumentos musicales donde cada uno se encarga de interpretar
una secuencia de sonidos, que en este caso se denominaron elementos. Un elemento
contiene un acorde, una agrupación de uno o más sonidos simultáneos compuestos
por los sonidos primarios denominados notas 1. El conjunto de elementos que se pueden utilizar en una composición están determinados por el conjunto de acordes definidos, y estos, por las notas existentes en dicha composición.
En la nota se define un nombre, tipo y octava. El tipo puede ser un silencio (que este
elemento no produce sonido durante un tiempo concreto) o una nota con su nombre
estipulado en la notación inglesa (A, B, ..., G), y una octava un valor restringido con
OCL entre cero y nueve. Los acordes también tienen su nombre, un tipo en la notación inglesa y las tonalidades nota, mayor, menor, quinta, séptima y otro, que en
algunos casos ayudan a definir los sonidos del acorde según la correspondiente restricción en OCL. Por ejemplo, para un acorde CM (Do mayor) solo se aceptan tres
notas las cuales corresponden a Do, Mi y Sol (C, E y G en notación inglesa). Cuando
un acorde es de tonalidad Nota solamente aceptan agrupaciones de una sola nota, y
cuando es de la tonalidad Otro, acepta cualquier agrupación de notas definida por el
usuario sin restricciones en su conformación. Con la definición de los sonidos en
forma de acorde a utilizar se pueden establecer las secuencias de estos en los elementos y cuánto debe durar cada uno según tiempos definidos de cuatro, dos, uno, medio,
cuarto, octavo y dieciseisavo de un tiempo (aproximadamente cuatro segundos).
Algo difícil de precisar en esta notación fue lo relacionado con las reglas OCL para
validar que los acordes ingresados sean los correctos, ya que los acordes se definen
1
Un elemento no tiene relación directa con una nota, pero si con un acorde. Esto implica que
se requerirán crear acordes o agrupaciones de una sola nota en caso que se requiera utilizarlos.
unas combinaciones específicas. A pesar de que dichas reglas especifican unas distancias fijas en semitonos entre las notas que pueden funcionar como fórmulas matemáticas, estas no fueron obvias con el lenguaje de restricciones, lo que llevó a que las
reglas se implementaran con los nombres de las notas. Un fragmento de una regla de
un acode mayor se muestra en el siguiente ejemplo:
Fig. 5. Fragmento de una regla OCL para la construcción de acordes mayores
El ejemplo anterior especifica que definir un acorde de tonalidad mayor implica que
sus notas deben ser Do, Mi y Sol, ó Re, Fa y La, ó de las demás combinaciones que
allí se describen.
3.2
Metamodelo de la notación MIDI
Como primera aproximación de la notación MIDI se procedió a entender esta especificación según la versión 1.1 “Standard MIDI-File Format Spec. 1.1”, al tiempo que
se revisó la implementación para el lenguaje de programación Java. Para este metamodelo se logró reducir al máximo la cantidad de conceptos a utilizar con el fin de
que se pudiera continuar representando una secuencia MIDI con un lenguaje simplificado para escribirla, como se aprecia en los conceptos de la figura a continuación:
Fig. 6. Metamodelo en Ecore de la notación MIDI
Esta notación parte también de un concepto Composición, que en MIDI agrupa el
conjunto de secuencias de sonidos para las pistas creadas en cada instrumento. Cada
pista agrupa uno o varios sonidos en paralelo denominados acordes, los cuales se
reproducen entre uno y siete tiempos definidos. Toda agrupación se escribe con sonidos, donde cada uno de estos corresponde a un número entre cero y 127 que determinan las notas musicales que van incrementándose por semitonos partiendo desde Do
en la octava cero hasta Sol en la octava 10. Los silencios se representan con -1 y en el
momento de reproducirse se toma como un tiempo sin reproducir nota alguna.
3.3
Metamodelo de la notación partituras
Este metamodelo busca mostrar los conceptos asociados a una serie de pentagramas
que definen una partitura, como se muestra en la siguiente figura:
Fig. 7. Metamodelo en Ecore de la notación partitura
El metamodelo parte también del concepto de una composición, la cual se escribe con
varios pentragramas definidos para un instrumento cada uno. Un pentagrama se compone según este lenguaje de porciones de líneas sobre las cuales se dibujan las figuras.
Cada línea se especifica con su tipo (Línea o espacio), un número que indica de abajo
hacia arriba en qué punto debe aparecer en la gráfica, una posición sobre la cual se
dibuja una figura, el nombre y octava en notación inglesa para saber qué nota representa, y si sobre la línea se dibuja una o varias figuras en paralelo y en qué orden. Las
figuras son de tipo de la enumeración y si el atributo sonido es true indica que deben
reproducirse, y si es false, indica que son un silencio de la duración del tipo.
3.4
Metamodelo de la notación musicXML
Esta estructura parte de la definición de nodos con nombre y valor. El nodo principal
o raíz es el ScorePartwise el cual tiene tiene una serie de hijos como PartList y Part.
Estos nodos a su vez tienen otros hijos, y así sucesivamente. Aquellos elementos que
tienen hijos heredan de la clase Element, y aquellos que no, heredan de Node directamente y no tienen la relación hijos, como se ve en una parte del metamodelo de la
siguiente figura:
Fig. 8. Parte de metamodelo en Ecore de MusicXML
Los conceptos del metamodelo tienen cada uno una restricción en OCL la cual define
quienes son los nodos hijos de otro nodo, para así garantizar que la estructura jerárquica del xml se encuentre ordenada según el estándar. El siguiente es un ejemplo de
la restricción que define que el padre de la etiqueta fifths es key:
Fig. 9. Ejemplo de restricción en OCL para definer el padre de la etiqueta fifths
3.5
Metamodelo de la notación en tablatura
La generación del metamodelo para esta notación desde un inicio abstrae sólo los
elementos representativos para poder generar un modelo de una pieza musical en
notación de tablatura como se muestra en la siguiente figura:
Fig. 10. Metamodelo en Ecore de la notación Tablatura
Algunos conceptos son similares a los de la notación inglesa, como Composición,
Tablatura (Instrumento en la inglesa). Las secuencias representan sonidos individuales uno tras otro o un conjunto de sonidos en paralelo que para el metamodelo se denomina acorde. Un concepto que se encuentra en la notación destino son las posiciones las cuales determinan en qué punto se presiona una cuerda al momento de hacerla
vibrar, sin embargo, no se modelaron los silencios al no existir en esta representación,
ni los efectos sobre las cuerdas debido a que la notación origen no ofrece información
al respecto. Por el lado de los acordes, para limitar el dominio del problema, se incluyeron como conceptos, de manera que sólo se obtendrán aquellos que se encuentran
en el metamodelo y en una sola octava.
3.6
Editor de texto en EMFText de la notación inglesa
Para representar una composición en notación inglesa se generó con EMFText [4] una
aplicación java que funciona como editor de texto, el cual permite escribir una pieza
con una estructura donde se define con la palara Composición y luego su nombre
entre comillas, la lista de notas a utilizar entre llaves y su nombre, tipo y octava por
cada una; la lista de acordes a utilizar con un nombre, las notas que contiene según la
definición del bloque anterior, el tipo en la notación inglesa y la tonalidad; y por cada
instrumento, la lista de elementos que lo componen con su duración. La estructura es
de la siguiente forma:
Composición “ nombre de la composición”
{ Nota1 “nombre nota 1” Tipo Octava Nota2 “nombre nota 2” Tipo Octava ...}
{ Acorde1 “nombre 1” Tipo Tonalidad Acorde2 “nombre 2” Tipo Tonalidad ...}
{ Instrumento “nombre del instrumento 1” {Acorde X1 duración, Acorde X2 duración ...}
Instrumento “nombre del instrumento 2” { ... } }
La ventaja de escribir las composiciones en este editor es que, además de ser simple y
de ayudar a autocompletar o predecir el texto, permite la personalización de los nombres de los sonidos al tiempo que genera la instancia dinámica de la composición en
formato xmi. Un ejemplo de uso del editor sería el siguiente:
Fig. 11. Ejemplo de uso del editor en EMFText
En la imagen se aprecia que la composición tiene un nombre, un bloque donde se
definen las notas a utiilzar (C3, D3, …, B3 y C4), los acordes o agrupaciones de notas
creados con las notas definidas en el bloque anterior (Las agrupaciones de una nota
desde C3 hasta B3 y los acordes mayores CM3 y FM3), y la composición usando
algunas de estas agrupaciones definida para dos instrumentos, un piano y las cuerdas.
3.7
Transformación de notación inglesa a notación MIDI
La transformación escrita en ATL [2] hace una correspondencia directa entre Composición e Instrumento y sus atributos con Composición y Secuencia y sus atributos.
Cada Elemento del origen, su duración, y su respectivo Acorde, se traducen como un
Acorde con su duración en tiempo en el destino, y cada Nota de la notación inglesa se
traslada a una Nota en MIDI, teniendo en cuenta que el valor en MIDI resulta de un
cálculo entre el tipo y la octava de la Nota origen.
La implementación exigió un elemento especial, ya que al intentar realizar la transformación con las reglas habituales se apreciaba que, cuando un elemento del origen
reutilizaba un acorde o un acorde reutilizaba alguna nota del conjunto definido en la
composición, se obtenía en el destino únicamente una instancia de cada nota y una
instancia de cada acorde, y por lo tanto no creaba muchos de los acordes en la notación MIDI. Un ejemplo de esta situación es una composición que utiliza dos o más
veces el acorde C3, compuesto únicamente por el sonido Do en la octava 3. En la
transformación a MIDI solo creaba el acorde correspondiente una vez y la nota correspondiente una vez, sin las repeticiones.
Para corregir lo anterior, se definió en la regla que por cada Elemento de partida se
obligara a la creación de todas las notas independientemente de si estaban repetidas
para que existieran los acordes agrupadores en el destino, como lo muestra esta apartado de código en ATL:
Fig. 12. Fragmento para creación de notas de manera independiente
El resultado de estas operaciones llevó a que una instancia conforme a la notación
inglesa se transforme a una instancia en la notación MIDI.
3.8
Transformación de la notación inglesa a partituras
La transformación (Utilizando ATL) hace una correspondencia directa entre Composición e Instrumento y sus atributos del origen con Composición y Pentagrama del
destino y sus atributos de manera similar a la transformación anterior. Un Elemento
aporta con la duración la información para el tipo de figura a elegir. Los acordes del
elemento establecen el número y posición de las notas para ubicarlas sobre una línea,
mientras que las notas definen si debe dibujarse la línea o esta corresponde a un espacio, al tiempo que determinan su nombre y octava. Las notas ofrecen también información adicional a las figuras ya que definen si una figura debe dibujarse con el símbolo de sostenido o si por el contrario es un silencio y el atributo sonido de Figura
debe estar en falso.
Dado que esta transformación mezcló diferentes conceptos en la notación inglesa con
la notación partitura se hizo necesario implementar un bloque imperativo y una “lazy
rule” para definir exactamente cómo se debía traducir la información. El bloque permite recorrer los elementos, convertir la información relevante de las notas de la notación origen en líneas de la notación destino y pasar el valor de la duración de los Elementos a transformaciones posteriores para obtener el concepto de figura. La “lazy
rule” se definió como una regla normal con su nombre, bloque from y bloque to, solo
que, como lo especifica la documentación de ATL, se aplica por cada coincidencia
(match) hallado en el bloque imperativo, que era lo requerido en este caso.
Fig. 13. Lazy rule para coincidencias entre notas y líneas
El ejemplo anterior toma una nota de la notación inglesa y la convierte en una linea,
asignándole los atributos de tipo, número, posición, nombre, octava y orden, y luego
le imprime a la línea el tipo de figura que lleva en ese punto, como se realiza en el
bloque final.
3.9
Transformación de partitura a MusicXML
Dado que la notación destino maneja múltiples conceptos, la transformación ATL
desde partitura requirió que la información de origen fuera distribuida en diferentes
conceptos de la notación MusicXML.
Una composición se convierte en la raíz del xml llamada ScoraPartwise, donde su
título se ingresa en un nodo interior. Cada posible pentagrama descrito en la partitura
para un instrumento se debe introducir en dos partes: Los PartList que definen cuántos
pentagramas tiene la partitura y sus nombres (en este caso, un PartName dentro de un
ScorePart, con los nombres de los instrumentos), y los Part, que definen la distribución de las notas de cada pentagrama.
Mientras que los PartList llegan en esta transformación hasta los PartName, los Part
tienen otros nodos interiores. Debe crearse un Part por cada pentagrama de la notación origen, y cada Part debe tener unos Measures y unos Note. Cada Measure contiene información como la clave o las divisiones, datos que no provienen de la partitura como se modeló. Los Note son nodos del xml cuya secuencia determinan los sonidos que deben graficarse. Cada Note se contiene si es parte de un acorde, la nota que
representa, si es un sostenido o un bemol, octava, duración y su tipo (Redonda, blanca, etc). Los Note se construyen con una combinación de líneas y las figuras de la
notación partitura, ya que las líneas tienen los datos de acorde, nota y octava, y las
figuras de sostenido o bemol, duración y tipo.
3.10
Transformación de la notación inglesa a tablatura
Los metamodelos de la notación inglesa y la tablatura, son estructuralmente similares
por lo cual la transformación se realizó en algunos casos de manera directa. Como
caso particular se tiene que en la notación inglesa pese a que los acordes tienen definidos las notas que lo componen, su traducción en tablatura se hace a través de unas
posiciones predefinidas, por lo cual en estos casos las transformaciones de las notas a
las posiciones en la tablatura no tienen una correspondencia necesariamente. Es posible que algunos acordes con diferentes representaciones en tablaturas sean más adecuados que otros en algunos casos según la secuencia que trae la composición, sin
embargo, solamente se tuvo en cuenta en la transformación el primer acorde concordante con la representación de origen, ya que identificar la secuencia tal vez se salga
del dominio del problema planteado.
Para las composiciones melódicas (donde suena solo una nota a la vez), se implementaron dos funciones tipo helper para determinar la línea (cuerda) y la posición en la
misma. También fue necesario implementar una regla lazy en la transformación de
nota a posición ya que solo aplicaba en caso puntuales.
3.11
Transformación de Midi a texto
Con la información de los modelos conformes con la notación Midi, se creó una transformación a texto utilizando Acceleo [1], cuyo resultado puede ser leído por un programa en el lenguaje de programación Java y que es capaz de reproducir el sonido que
este representa. El texto generado es un archivo de propiedades obtenido a partir de
cinco líneas de código que en el lenguaje ATL imprimen, por cada instrumento, las
notas por cada acorde de la composición. El código en ATL es así:
Fig. 14. Código en ATL para generar el texto con el contenido de la composición
El programa en java toma el archivo de propiedades, lee cada línea de acordes y tiempos y los reproduce a través de una implementación de la interfaz MIDI obteniendo
como resultado el sonido de lo que se compuso utilizando la notación inglesa.
3.12
Transformación de MusicXML a texto
Con el modelo conforme al metamodelo MusicXML se creó una transformación a
texto con Acceleo que genera el xml correspondiente. El archivo resultante cumple
con lo que el estándar MusicXML establece, aunque solamente tiene en cuenta los
elementos necesarios para representar las notas sobre el pentagrama.
3.13
Transformación de notación tablatura a texto
Dado que la tablatura se representa en modo texto plano idealmente en codificación
ASCII, se decidió representar el producto final embebido dentro de un documento
HTML, tal como se puede encontrar por internet muchas de las canciones en este
formato. El texto generado fundamentalmente son las 6 líneas representando las cuerdas de la guitarra, donde en lenguaje ATL por cada línea se imprime cada posición
(traste). A continuación se muestra el ejemplo en ATL para crear una línea en HTML:
Fig. 15. Código en ATL para crear una línea de una tablatura en HTML
4
Experimentación
Se procedió a crear un modelo conforme con la notación inglesa y a realizar las transformaciones a las demás notaciones. Utilizando el editor generado con EMFText se
escribió el ejemplo especificado en la sección dos del presente artículo, una composición para un piano con una secuencia de notas. En el bloque de notas se incluyeron las
notas do, re, mi, fa y sol en la cuarta octava. Como acordes, se definieron solamente
agrupaciones de una nota cada uno, llamados DPulgar, DIndice, DCorazon, DAnular
y DMenique2. A continuación se muestra cómo se escribió la composición:
Fig. 16. Composición realizada con el editor en EMFText
2
En una conversación personal sostenida con el Ms.C. Guillermo Aristizábal Restrepo (uno
de los autores del software Seat & Play [7]) el 8 de julio de 2013, hizo alusión a cómo le enseñaban a su hija a tocar el piano. Comentó que las indicaciones ofrecidas para tocar las notas del ejemplo de la sección dos eran impartidas especificando cual dedo de la mano derecha debía utilizar en qué momento, de ahí el ejemplo, y que cada acorde se llame inicialmente por la letra D (de la mano derecha) y luego el dedo que debe utilizar sobre el teclado.
Luego de convertir la composición a midi y de transformarla a texto, se obtuvo un
archivo de propiedades con un contenido como el del siguiente apartado:
Fig. 17. Segmento de la composición transformada a texto
Este contenido muestra el instrumento, las notas que se reproducen en secuencia y la
duración correspondiente según la variable de tiempo. El archivo se leyó desde el
programa escrito en Java y se reprodujo el sonido conforme la secuencia de sonidos.
El resultado de la transformación a una tablatura es un archivo HTML generado, el
cual se puede visualizar en cualquier navegador. La transformación ofrece un resultado igual al del ejemplo de tablatura en la figura 3.
La transformación de notación inglesa a partitura dejó como resultado un modelo al
que se le aplicaron las reglas de transformación a MusicXML. Se obtuvo un modelo
que luego se llevó a un archivo XML. Tal archivo fue leído por los programas comerciales Finale Notepad 2012 y Capella 7, arrojando la partitura de la de la figura 6.
Fig. 18. Partitura en Finale Notepad representada por el archivo en formato MusicXML
5
Conclusiones
Aunque las notaciones inglesa, midi, partitura y musicXML intentan representar elementos parecidos, su conocimiento es similar al manejo de varias lenguas, pero en el
tema musical. Dado que su dominio exige práctica, la notación propuesta en realidad
puede facilitar a un aprendiz o a una persona con poca experiencia en el tema escribir
sus piezas musicales, como se planteó inicialmente.
Entrando en el dominio de la notación inglesa, a pesar de que existen reglas definidas
para la construcción de acordes, su aplicación en restricciones OCL fue extensa debido a que las definiciones se hacían a partir de los posibles valores que los acordes
podrían recibir. Se plantea entonces la posibilidad de utilizar otro tipo de valores para
definir las notas de los acordes, de manera que las restricciones en OCL se puedan
formular matemáticamente y de manera simplificada.
Pese a lo anterior, la especificación de la notación inglesa influyó en el editor de texto, el cual fue creado con pocas líneas de código y sintaxis sencilla y ofreció la posibi-
lidad al usuario de definir sus propias notas y acordes, lo que abre las puertas a una
lengua personalizada o a un elemento de escritura de música experimental.
Al llegar a la la transformación a Midi, se encontró que permite escuchar la composición pese a que solamente se modelaron tres conceptos y a que se adicionó uno para
representar la agrupación de sonidos. Para llegar a esta transformación se encontró
que, al referenciar acordes y notas en la notación inglesa en el concepto elemento, se
necesitó crear por cada concepto referenciado un concepto en la notación destino.
En el momento de trabajar en el modelado de partituras y MusicXML, se observó que
estos fueron casos de metamodelos simplificados, los cuales pueden ampliarse para
incluir otros conceptos que puedan representar otros elementos, como claves, armaduras o compases, sin embargo, para llegar a estas notaciones a través de una transformación, exigiría que esta información se pudiera extraer también de la notación de
origen. Esto abre las puertas para una extensión del dominio de la notación inglesa.
Respecto al desarrollo dirigido por modelos y sus herramientas, se encontraron varios
elementos. La curva de aprendizaje puede variar si antes se ha trabajado con cierta
profundidad el lenguaje UML, principalmente con diagramas de clases, pero una de
las dificultades es la confusión al intentar aplicar principios de la metodología orientada a objetos en MDE, donde un ejemplo es el uso errado de la expresión instancia.
Sobre MDE, aún es un paradigma reciente donde se puede trabajar en varios aspectos
para mejorar percepción de cómo construir software. Se destaca sobre este que realizar un cambio o ajuste en el metamodelo tiene un costo alto, lo cual indica que se
debe tener plena seguridad que los metamodelos reunan todos los atributos del universo del problema que se quiere modelar, o sea, la etapa de análisis debe ser muy
fuerte. Esto se evidenció con el primer metamodelo de MIDI, el cual mostraba muchos conceptos que no fueron necesarios y obligó a simplificar el metamodelo.
Como trabajo futuro, se puede proponer que se incluyan restricciones en la notación
inglesa para validar mayor cantidad de componentes o con otras características. Adicionalmente se puede flexibilizar el manejo de los tiempos y se pueden manejar agrupaciones de acordes para poder obtener en la transformación a partitura más conceptos que reflejen mejores pentagramas.
Referencias
1. Acceleo – transforming models into code. http://www.eclipse.org/acceleo/
2. ATL user guide. http:/wiki.eclipse.org/ATL/User_Guide
3. OMG Object Constraint Language (OCL). http://www.omg.org/technology/documents/formal/uml.htm
4. EMFText user guide. http://www.emftext.org/EMFTextGuide.php
5. MIDI Manufacturers Association. http://www.midi.org
6. MusicXML 3.0 Tutorial. http://www.musicxml.com/wp-content/uploads/2012/12/musicxml-tutorial.pdf
7. Seat And Play Tutoriales. http://seatandplay.uniandes.edu.co
8. Scmidt, Douglas C.: Model-Driven Engineering. IEE Computer Vol 39
http://www.cs.wustl.edu/~schmidt/GEI.pdf (2006)