¿Qué es MusicXML?
MusicXML es el formato de archivo estándar para representar la notación musical occidental de forma legible por máquinas e independiente del software. Desarrollado originalmente por Michael Good en Recordare LLC y publicado por primera vez en 2004, ahora es mantenido por el Grupo de la Comunidad de Notación Musical del W3C y publicado como MusicXML 4.0 (2021). El formato es el estándar de facto para intercambiar partituras entre diferentes aplicaciones de software de notación — cuando importas una partitura de Finale a MuseScore, o exportas de Sibelius a Guitar Pro, MusicXML es el puente.
El nombre del formato refleja su naturaleza: es un formato basado en XML específicamente para notación musical — no audio (eso sería MIDI o WAV), sino la representación visual de alturas, ritmos, dinámicas, articulaciones y todos los elementos simbólicos que aparecen en una partitura impresa.
Tipos de Archivo: .xml y .mxl
Los archivos MusicXML vienen en dos variantes:
| Extensión | Tipo | Descripción |
|---|---|---|
.xml |
Sin comprimir | XML UTF-8 plano, legible por humanos, más grande |
.mxl |
Comprimido | Archivo ZIP con el XML más un manifiesto MIME; típicamente un 80–90% más pequeño |
Siempre prefiere .mxl para la distribución — una partitura XML de 500 KB se comprime a ~50 KB. Descomprime cualquier archivo .mxl para inspeccionar su contenido.
Estructura del Documento de Partitura
MusicXML usa uno de dos estructuras de elemento raíz:
score-partwise (el más común — preferido por Finale, MuseScore, Sibelius):
<?xml version="1.0" encoding="UTF-8"?>
<score-partwise version="4.0">
<work>
<work-title>Sinfonía N.° 5</work-title>
</work>
<identification>
<composer>Ludwig van Beethoven</composer>
<encoding>
<software>MuseScore 4.3</software>
<encoding-date>2024-03-15</encoding-date>
</encoding>
</identification>
<part-list>
<score-part id="P1">
<part-name>Violín I</part-name>
</score-part>
<score-part id="P2">
<part-name>Violín II</part-name>
</score-part>
</part-list>
<part id="P1">
<measure number="1">
<!-- contenido del compás -->
</measure>
</part>
</score-partwise>
El Compás: Donde Vive la Música
Cada evento musical se codifica dentro de un elemento <measure>:
<measure number="1">
<attributes>
<divisions>4</divisions> <!-- negra = 4 divisiones -->
<key>
<fifths>-3</fifths> <!-- 3 bemoles = Mib mayor / Do menor -->
</key>
<time>
<beats>4</beats>
<beat-type>4</beat-type> <!-- compás de 4/4 -->
</time>
<clef>
<sign>G</sign>
<line>2</line> <!-- clave de sol en línea 2 -->
</clef>
</attributes>
<!-- Una blanca con puntillo Sol4 -->
<note>
<pitch>
<step>G</step>
<octave>4</octave>
</pitch>
<duration>6</duration> <!-- 6 divisiones = blanca con puntillo (4+2) -->
<type>half</type>
<dot/>
<stem>up</stem>
<notations>
<dynamics><mf/></dynamics>
<articulations><accent/></articulations>
</notations>
</note>
<!-- Un silencio de negra -->
<note>
<rest/>
<duration>4</duration>
<type>quarter</type>
</note>
<!-- Acorde: Mi4 y Do4 sonando simultáneamente -->
<note>
<pitch><step>E</step><octave>4</octave></pitch>
<duration>4</duration><type>quarter</type>
</note>
<note>
<chord/> <!-- <chord/> = esta nota suena con la anterior -->
<pitch><step>C</step><octave>4</octave></pitch>
<duration>4</duration><type>quarter</type>
</note>
</measure>
Altura, Duración y Ritmo
La altura se especifica como step (A–G) + octave (4 = octava del Do central) + alter opcional (semitonos: −1=bemol, +1=sostenido):
<pitch>
<step>B</step>
<alter>-1</alter> <!-- Si bemol -->
<octave>4</octave>
</pitch>
La duración se mide en divisiones — un conteo entero sin unidades definido por el atributo <divisions>. Si <divisions>4</divisions>:
- Negra = 4 divisiones
- Blanca = 8 divisiones
- Redonda = 16 divisiones
- Corchea = 2 divisiones
- Semicorchea = 1 división
Dinámica, Tempo y Expresión
<!-- Indicación dinámica -->
<direction placement="below">
<direction-type>
<dynamics><pp/></dynamics>
</direction-type>
</direction>
<!-- Indicación de tempo -->
<direction>
<direction-type>
<metronome parentheses="no">
<beat-unit>quarter</beat-unit>
<per-minute>120</per-minute>
</metronome>
</direction-type>
<sound tempo="120"/>
</direction>
<!-- Expresión de texto -->
<direction>
<direction-type>
<words font-style="italic">dolce</words>
</direction-type>
</direction>
Análisis de Partituras con Python (music21)
music21 (MIT) es la biblioteca Python definitiva para musicología computacional:
from music21 import *
# Cargar un archivo MusicXML
partitura = converter.parse('beethoven_sin5.xml')
# Información básica de la partitura
print(partitura.metadata.title)
print(partitura.metadata.composer)
partes = partitura.parts
print(f"Número de partes: {len(partes)}")
# Obtener todas las notas en la parte 0 (p.ej. Soprano)
soprano = partes[0]
notas = soprano.flat.notes
print(f"Número de notas: {len(notas)}")
# Iterar sobre notas
for n in notas[:10]:
if isinstance(n, note.Note):
print(f" {n.nameWithOctave:5s} duración={n.duration.type:8s} posición={n.offset}")
elif isinstance(n, chord.Chord):
print(f" Acorde {n.pitches} duración={n.duration.type}")
# Análisis de tonalidad (algoritmo de Krumhansl-Schmuckler)
tonalidad = partitura.analyze('key')
print(f"Tonalidad detectada: {tonalidad}")
# Exportar a MIDI
partitura.write('midi', fp='salida.mid')
# Exportar a PDF via LilyPond
partitura.write('lily.pdf', fp='salida.pdf')
Conversión de MusicXML
MusicXML → MIDI: Todos los programas de notación principales exportan MIDI desde MusicXML. MIDI es lossy — pierde todos los datos de notación visual (ligaduras, tipos de articulación, expresiones de texto, disposición).
MusicXML → PDF: MuseScore en línea de comandos: musescore3 entrada.mxl -o salida.pdf. LilyPond produce mayor calidad tipográfica: convierte primero con musicxml2ly entrada.mxl -o salida.ly, luego lilypond salida.ly para producir un PDF.
MusicXML → MEI: Music Encoding Initiative (MEI) es el equivalente académico de MusicXML, usado en humanidades digitales. Verovio (C++/Python/JS) renderiza tanto MEI como MusicXML a SVG.
Software que Usa MusicXML
| Software | Rol | Soporte MusicXML |
|---|---|---|
| MuseScore | Editor de notación de código abierto | Lectura/escritura nativa |
| Finale | Notación profesional | Lectura/escritura desde 2001 |
| Sibelius | Notación profesional | Lectura/escritura |
| Dorico | Notación Steinberg | Lectura/escritura nativa |
| Guitar Pro | Notación en tablatura | Lectura/escritura MusicXML |
| Flat.io | Notación web | Lectura/escritura |
| music21 | Análisis Python | Lectura/escritura |
| Audiveris | OCR musical (OMR) | Salida MusicXML desde partituras escaneadas |
Audiveris es especialmente notable — realiza Reconocimiento Óptico de Música (OMR), convirtiendo imágenes de partituras escaneadas (JPEG, TIFF) en MusicXML usando aprendizaje automático y visión por computador tradicional.
Conversiones relacionadas
Conversiones frecuentes del catálogo: