240 likes | 435 Views
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
E N D
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
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! = <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> <?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> 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 midixml.dtd note.dtd opus.dtd partwise.dtd score.dtd timewise.dtd MIDIEvents10.dtd attributes.dtd barline.dtd common.dtd direction.dtd identity.dtd link.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> <note> <rest/> <duration>12</duration> </note>
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
<note> <pitch> <step>G</step> <octave>3</octave> </pitch> <duration>4</duration> </note> <note> <chord/> <pitch> <step>B</step> <octave>3</octave> </pitch> <duration>4</duration> </note> <backup> <duration>4</duration> </backup> <note> <pitch> <step>E</step> <alter>-1</alter> <octave>4</octave> </pitch> <duration>3</duration> </note> 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
Informática Musical MusicXML • Lenguaje de representación musical simbólica David Rizo y José Manuel Iñesta