Lenguaje de representación musical simbólica Informática Musical MusicXML Lenguaje de representación musical simbólica David Rizo y José Manuel Iñesta
Representación de la música en informática Dos tipos básicos de ficheros Audio. Grabación de una interpretación: CD, MP3 Simbólico. Indicaciones que dicen cuándo y cómo deben sonar notas: partituras
Qué es MusicXML Lenguaje de representación musical Se guarda información de notación partituras o ejecuciones de ellas No se guarda audio Necesidad Diversos programas – diferentes objetivos compartir información Formatos actuales tienen carestías Bancos de partituras: PDF o propietario
En la práctica... MIDI como formato de intercambio Totalmente extendido Miles de ficheros disponibles Problemas: No distingue DO# de un REb No sabe qué es una repetición. Desconoce el concepto crescendo. No puede representar tresillos.
MusicXML como formato de intercambio Pensado para representar información de Ejecución: similar a MIDI Notación: similar a NIFF (sistema de codificación) Basado en los formatos académicos: MuseData: del CCARH de la Univ. de Stanford. Pensado para clásica y folk Humdrum: de la Univ. de Ohio. Para análisis de cadenas (p.ej usa expresiones regulares) Construido sobre la práctica Ciclo iterativo
¿Por qué XML? Sintaxis básica del lenguaje ya definida Estándar abierto: DTD pública que define el lenguaje Posible integración como parte de otros lenguajes mayores: DTD Multimedia Disponibles parsers en casi todos los lenguajes de programación
Usado por
Disponible para desarrollo: DTD en la web de Recordare bajo los términos de uso de W3C Documentación suficiente Lista de discusión activa Conceptos equivalentes a los respectivos musicales Herramientas de desarrollo que funcionan con los ficheros de MusicXML: parsers (SAX y DOM) y XML Databinding (xdk)
¡Hola Mundo! = <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.7 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> <score-partwise> <part-list> <score-part id="P1"> <part-name>Music</part-name> </score-part> </part-list> <part id="P1"> <measure number="1"> <attributes> <divisions>1</divisions> <key> <fifths>0</fifths> </key> <time> <beats>4</beats> <beat-type>4</beat-type> </time> <clef> <sign>G</sign> <line>2</line> </clef> </attributes> <note> <pitch> <step>C</step> <octave>4</octave> </pitch> <duration>4</duration> <type>whole</type> </note> </measure> </part> </score-partwise> Métrica Clave Altura Resolución Duración Tonalidad
“Pegas” Tamaño excesivo: Demasiado texto para cada elemento musical Ineficiente frente a otros formatos Pero… Pensado como formato de intercambio Alto nivel de compresión
Distribución attributes.dtd barline.dtd common.dtd direction.dtd identity.dtd link.dtd midixml.dtd note.dtd opus.dtd partwise.dtd score.dtd timewise.dtd MIDIEvents10.dtd To06c.xsl timepart.xsl parttime.xsl midixml.xsl ISOlat1.pen ISOlat2.pen <!ENTITY % identity PUBLIC "-//Recordare//ELEMENTS MusicXML 0.7 Identity//EN" "identity.dtd"> %identity;
Metainformación Datos sobre el documento <!ENTITY % score-header "(work?, movement-number?, movement-title?, identification?,part-list)"> Sinfonía o álbum = varios ficheros distintos con igual work, distinto movimiento Datos sobre autor (música, texto), edición Información sobre los instrumentos (part): notación (abreviaturas) y MIDI (dispositivos)
Representación sobre ejecución Compatible con MIDI Es lo único requerido Elementos para: Tonalidad y compás Resolución: divisiones por tiempo Instrumentos transpositores Trompeta en Bb: representado C, suena Bb <transpose> <diatonic>-1</diatonic> <chromatic>-2</chromatic> </transpose>
Notas y silencios <note> <pitch> <step>E</step> <alter>-1</alter> <octave>5</octave> </pitch> <duration>12</duration> <tie type="start"/> <lyric> <syllabic>start</syllabic> <text>Ho</text> </lyric> </note> <note> <pitch> <step>E</step> <alter>-1</alter> </pitch> <duration>12</duration> </note> <rest/>
Parámetros del fichero Similar al .ini o .cfg pero asociado a la partitura Valores por defecto: p.ej. Tempo = 90 <sound tempo="88" dynamics="71"/> Datos concretos para representaciones ambiguas: p.ej. la longitud de las notas de adorno
Notación Comparte elementos con la parte compatible MIDI ¿Cómo se sabe que la nota va hacia bajo? Representación de la partitura – no de la ejecución Clave al inicio del pentagrama Repeticiones Marcas de digitación para piano Anotaciones para el intérprete
Notación <direction placement="above"> <direction-type> <words font-style="italic" relative-x="-12">dolce</words> </direction-type> </direction> <directive> Andantino </directive>
Cifrados para guitarra <technical> <string>3</string> <fret>5</fret> <hammer-on type="start" number="1">H</hammer-on> </technical>
Percusión Representación conjunta instrumentos con y sin afinación Pentagramas con más/menos de 5 líneas Múltiples instrumentos por part Cabezas de nota Repeticiones
Polifonía Representación de varios pentagramas por instrumento <note> <pitch> <step>G</step> <octave>3</octave> </pitch> <duration>4</duration> </note> <chord/> <step>B</step> <backup> </backup> <step>E</step> <alter>-1</alter> <octave>4</octave> <duration>3</duration> Polifonía Representación de varios pentagramas por instrumento Múltiples voces por instrumento Operaciones de movimiento del contador temporal Acordes
Aplicaciones adicionales Además de representar música con los XML podemos: Crear BBDD XML musicales: formato nativo Mejor que las relacionales (complejidad) Lenguajes de búsqueda con secuencia y jerarquía Tamino: soporta XQuery XIndice: soporta XPath Analizar el contenido de un fichero: XQuery … de varios ficheros (alineación)- XPointer Realizar transformaciones: XSL Potencial típico del XML: separación presentación de contenido PDA, Web sindicación de contenidos
Futuro del MusicXML MusicXML formato que más ampliamente está siendo adoptado desde MIDI En fase de construcción: trabajando junto a: Grupo de trabajo XQuery music-ir.org Compañías de software musical Seguridad (PKI) Incremento de capacidades
Nuestra experiencia Usado para trabajar conjuntamente con músicos Tarea: análisis melódico / armónico Objetivo: etiquetado automático de notas reales, extrañas (de paso, bordaduras…) El músico usa Finale como herramienta de etiquetado Exportamos el material a MusicXML Leemos el MusicXML en Java Nuestro sistema genera un MusicXML con el análisis melódico / armónico El músico importa el MusicXML desde Finale y comprueba el etiquetado automático Jtest: Comparamos el análisis creado por el músico con el que genera nuestro sistema
David Rizo y José Manuel Iñesta Informática Musical MusicXML Lenguaje de representación musical simbólica David Rizo y José Manuel Iñesta