MEI: Codificación Musical en XML para Musicología y Humanidades Digitales
¿Qué es MEI?
MEI (Music Encoding Initiative, Iniciativa de Codificación Musical) es un esquema XML abierto, impulsado por la comunidad, para codificar notación musical y sus metadatos relacionados. Donde MusicXML se centra principalmente en el intercambio de partituras entre software de notación, MEI está diseñado para la codificación académica de la música: captura no solo qué notas tocar, sino el detalle filológico completo de fuentes manuscritas, aparato crítico, lecturas variantes, vínculos de facsímil y anotaciones analíticas.
Los archivos llevan la extensión .mei o .xml y están gobernados por un esquema mantenido en ODD (One Document Does It All) usando el marco TEI — la misma familia de meta-esquemas utilizada para la codificación de textos literarios (TEI P5).
MEI vs. MusicXML: Diferencias Clave
| Característica | MEI | MusicXML |
|---|---|---|
| Uso principal | Ediciones críticas/académicas | Intercambio entre software de notación |
| Variantes / aparato | Soporte nativo (<app>, <rdg>) |
No soportado |
| Vínculos de facsímil | Nativos (<facsimile>, <zone>) |
No soportado |
| Anotaciones analíticas | Ricas (<analysis>, <harm>) |
Limitadas |
| Datos de interpretación | <performance>, <recording> |
No |
| Soporte de software | Verovio, MEI Friend | Todas las apps de notación |
Estructura del Documento
Un documento MEI mínimo:
<?xml version="1.0" encoding="UTF-8"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="5.0">
<meiHead>
<fileDesc>
<titleStmt>
<title>Oda a la Alegría</title>
<composer>Ludwig van Beethoven</composer>
</titleStmt>
</fileDesc>
</meiHead>
<music>
<body>
<mdiv>
<score>
<section>
<measure n="1">
<staff n="1">
<layer n="1">
<note pname="e" oct="4" dur="4"/>
<note pname="e" oct="4" dur="4"/>
<note pname="f" oct="4" dur="4"/>
<note pname="g" oct="4" dur="4"/>
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei>
Módulos Principales de MEI
MEI es modular — el esquema central incluye:
MEI.shared — Primitivas Musicales Universales
<note>— nota con atributos:pname(nombre de tono: c, d, e…),oct(octava),dur(duración: 1=redonda, 2=blanca, 4=negra, 8=corchea),accid(alteración: s=sostenido, f=bemol, n=natural)<rest>— silencio condur<chord>— notas simultáneas<beam>— grupo de notas ligadas con corchete<measure>— compás con númerony tipos de barra<staff>/<layer>— pentagrama y voz
MEI.critapp — Aparato Crítico (Filológico)
<app>
<lem xml:id="lem1" source="#src1">
<note pname="g" oct="4" dur="4"/>
</lem>
<rdg source="#src2">
<note pname="a" oct="4" dur="4"/>
</rdg>
</app>
Registra que la fuente 1 lee Sol mientras la fuente 2 lee La — fundamental para la edición crítica.
MEI.facsimile — Vínculos de Facsímil Manuscrito
<facsimile>
<surface xml:id="sup1">
<graphic url="pagina_manuscrito1.jpg"/>
<zone xml:id="zona1" ulx="120" uly="340" lrx="200" lry="400"/>
</surface>
</facsimile>
<!-- En la partitura: -->
<note pname="c" oct="4" dur="4" facs="#zona1"/>
Vincula cada nota con su ubicación en píxeles en una imagen de manuscrito — esencial para ediciones críticas digitales.
MEI.harmony — Análisis Armónico
<harm staff="1" tstamp="1">Do</harm>
<harm staff="1" tstamp="3">Sol7</harm>
Trabajar con MEI en Python
music21 (MIT) puede importar/exportar MEI:
from music21 import converter
# Parsear un archivo MEI
partitura = converter.parse('beethoven_op125.mei')
partitura.show('text')
# Exportar a MusicXML (para Sibelius/Finale/MuseScore)
partitura.write('musicxml', 'beethoven.xml')
lxml para manipulación XML directa:
from lxml import etree
ns = {'mei': 'http://www.music-encoding.org/ns/mei'}
arbol = etree.parse('partitura.mei')
# Encontrar todas las notas del compás 5
notas = arbol.xpath(
'//mei:measure[@n="5"]//mei:note',
namespaces=ns
)
for nota in notas:
print(nota.get('pname'), nota.get('oct'), nota.get('dur'))
Renderizar MEI: Verovio
Verovio es el renderizador de referencia para MEI:
import verovio
tk = verovio.toolkit()
tk.loadFile('partitura.mei')
# Renderizar a SVG
svg = tk.renderToSVG(1)
with open('pagina1.svg', 'w') as f:
f.write(svg)
# Renderizar a MIDI
tk.renderToMIDI()
tk.saveMIDI('partitura.mid')
Verovio también impulsa el editor web MEI Friend (mei-friend.mdw.ac.at) — la principal herramienta de autoría MEI.
Proyectos MEI Destacados
- Beethoven en Casa (Beethoven-Haus Bonn) — edición digital completa de manuscritos de Beethoven en MEI
- Proyecto de Investigación Josquin (Stanford) — edición crítica de polifonía renacentista
- Edirom — plataforma de edición académica digital construida sobre MEI + TEI
- RISM Digital — catálogo de fuentes musicales con íncipits en MEI
Consejos Prácticos
- Comienza con MEI Friend (mei-friend.mdw.ac.at) para aprender y editar — proporciona una vista previa visual en vivo junto al XML
- Consulta las Guías MEI (music-encoding.org/guidelines) — la referencia oficial que cubre más de 600 elementos y atributos
- Declara siempre
meiversionen el elemento raíz<mei>(actual:5.0) - Valida con el esquema MEI:
xmllint --noout --relaxng mei-CMN.rng partitura.mei - Usa
@xml:iden elementos que vayas a referenciar (notas vinculadas a zonas de facsímil, fuentes en el aparato) - Para intercambio con software (Sibelius, Finale, MuseScore), exporta via music21 a MusicXML
MEI llena el vacío entre el intercambio ligero de MIDI/MusicXML y el aparato académico completo necesario para ediciones musicales críticas — es el XML de elección donde la música se encuentra con la filología.
Conversiones relacionadas
Pares de formatos de audio más frecuentes: