I5) MusicXML
la partition numérique universelle
Quand vous ouvrez une partition Finale dans MuseScore, comment l’information musicale survit-elle au voyage ? Et pourquoi certains détails disparaissent-ils parfois en chemin ?
Où se situe cet article ?
Dans I4, nous avons vu que MIDI transmet des instructions de jeu : « joue cette note, à cette force, maintenant ». Mais MIDI ne sait pas ce qu’est une mesure, une armure, ou la différence entre un do♯ (C♯) et un ré♭ (D♭). MusicXML comble ce vide : il encode ce qu’on voit sur la partition. Pour un musicien qui lit une partition, ces informations sont essentielles.
Avec I4 (MIDI) et cet article (MusicXML), la série Introduction couvre les deux formats de représentation musicale dominants. Les articles de la série Musique (M) analyseront ces formats sous l’angle formel : M1 (à venir) pour MIDI, M2 pour MusicXML.
Pourquoi c’est important ?
MusicXML a été créé en 2004 pour résoudre ce problème : permettre l’échange de partitions complètes entre logiciels de notation musicale — des applications spécialisées dans l’écriture et la gravure de partitions, comme Finale, Sibelius, MuseScore ou Dorico. Aujourd’hui, c’est le format d’échange standard supporté par ces logiciels et des dizaines d’autres applications. Comprendre sa structure permet de saisir comment l’information musicale « traditionnelle » est représentée numériquement.
L’idée en une phrase
MusicXML encode ce qu’on voit sur une partition : notes, silences, mesures, armures, indications d’expression — tout ce qui permet de reproduire la page imprimée.
Comment fonctionne MusicXML ?
Le principe : XML pour la musique
MusicXML est un format XML (eXtensible Markup Language), c’est-à-dire un format texte structuré avec des balises — des mots-clés encadrés par des chevrons < et >. Si vous avez déjà vu du HTML (le langage des pages web), vous reconnaîtrez la syntaxe :
<note>
<pitch>
<step>C</step>
<octave>4</octave>
</pitch>
<duration>4</duration>
<type>quarter</type>
</note>
Comment lire ce code XML ?
<note>ouvre un élément « note » et</note>le ferme (le/indique la fermeture)<pitch>contient les informations de hauteur (pitch = hauteur en anglais)<step>C</step>indique le nom de la note : C = do, D = ré, E = mi, etc.<octave>4</octave>indique l’octave (le do du milieu du piano est en octave 4)<duration>4</duration>indique la durée en unités internes (voir « divisions » plus bas)<type>quarter</type>indique la valeur rythmique affichée : quarter = noire
Cette note est un do (C) de l’octave 4, durant une noire (quarter). Contrairement à MIDI qui dirait simplement « note 60, vélocité 80 », MusicXML conserve l’information notationnelle complète.
Les deux organisations : partwise vs timewise
MusicXML propose deux façons d’organiser les données :
score-partwise (le plus courant)
L’organisation suit la structure d’une partition d’orchestre : d’abord toutes les mesures d’un instrument, puis toutes les mesures du suivant.
<score-partwise>
<part id="P1"> <!-- Violon -->
<measure number="1">...</measure>
<measure number="2">...</measure>
</part>
<part id="P2"> <!-- Alto -->
<measure number="1">...</measure>
<measure number="2">...</measure>
</part>
</score-partwise>
Avantage : Facile pour extraire la partie d’un instrument.
score-timewise
L’organisation suit le déroulement temporel : d’abord la mesure 1 de tous les instruments, puis la mesure 2, etc.
<score-timewise>
<measure number="1">
<part id="P1">...</part> <!-- Violon, mesure 1 -->
<part id="P2">...</part> <!-- Alto, mesure 1 -->
</measure>
<measure number="2">
<part id="P1">...</part>
<part id="P2">...</part>
</measure>
</score-timewise>
Avantage : Facile pour analyser ce qui se passe à un instant donné (accords verticaux).
En pratique, 95% des fichiers utilisent score-partwise. Les deux formats sont équivalents et convertibles automatiquement grâce à des feuilles de style XSLT (eXtensible Stylesheet Language Transformations) — un langage qui permet de transformer un document XML en un autre.
Les éléments essentiels
L’en-tête : métadonnées de l’oeuvre
<work>
<work-title>Sonate pour piano</work-title>
</work>
<identification>
<creator type="composer">Mozart</creator>
<encoding>
<software>MuseScore 4.0</software>
<encoding-date>2024-01-15</encoding-date>
</encoding>
</identification>
Les parties : déclaration des instruments
<part-list>
<score-part id="P1">
<part-name>Piano</part-name>
<score-instrument id="P1-I1">
<instrument-name>Piano</instrument-name>
</score-instrument>
<midi-instrument id="P1-I1">
<midi-channel>1</midi-channel>
<midi-program>1</midi-program>
</midi-instrument>
</score-part>
</part-list>
Notez que MusicXML peut inclure des informations MIDI pour la lecture — il fait le pont entre les deux mondes.
Les attributs de mesure : armure, chiffrage, clef
<attributes>
<divisions>4</divisions> <!-- subdivisions par noire -->
<key>
<fifths>-3</fifths> <!-- 3 bémols (♭) = Mi♭ majeur -->
<mode>major</mode>
</key>
<time>
<beats>4</beats> <!-- numérateur -->
<beat-type>4</beat-type> <!-- dénominateur -->
</time>
<clef>
<sign>G</sign> <!-- clef de sol -->
<line>2</line> <!-- sur la 2e ligne -->
</clef>
</attributes>
Le concept de « divisions » — la résolution temporelle
<divisions>4</divisions>signifie qu’une noire est divisée en 4 unités internes. Ainsi :
- Une noire = 4 unités
- Une croche = 2 unités
- Une double-croche = 1 unité
Ce système évite les fractions et permet une précision arbitraire. Plus le nombre est élevé, plus les rythmes fins sont possibles.
Les notes : le coeur du système
<note>
<pitch>
<step>F</step> <!-- Fa -->
<alter>1</alter> <!-- dièse ♯ (+1) -->
<octave>4</octave>
</pitch>
<duration>2</duration> <!-- en divisions -->
<voice>1</voice>
<type>eighth</type> <!-- croche -->
<stem>up</stem> <!-- hampe vers le haut -->
<beam number="1">begin</beam> <!-- début de ligature -->
</note>
Points importants :
alterdistingue dièse ♯ (+1), bémol ♭ (-1), naturel ♮ (0)durationest la durée en divisions,typeest la valeur rythmique affichée- Les informations de gravure — c’est-à-dire la mise en forme visuelle de la partition (hampe, ligature, espacement) — sont préservées
Les silences
<note>
<rest/>
<duration>4</duration>
<type>quarter</type>
</note>
Un silence est modélisé comme une note sans hauteur.
Les accords
Pour un accord, la première note est normale, les suivantes ont l’élément <chord/> :
<note>
<pitch><step>C</step><octave>4</octave></pitch>
<duration>4</duration>
<type>quarter</type>
</note>
<note>
<chord/> <!-- Cette note fait partie de l'accord précédent -->
<pitch><step>E</step><octave>4</octave></pitch>
<duration>4</duration>
<type>quarter</type>
</note>
<note>
<chord/>
<pitch><step>G</step><octave>4</octave></pitch>
<duration>4</duration>
<type>quarter</type>
</note>
Notation spéciale :
<chord/>La balise
<chord/>(avec un/à la fin, qui indique un élément vide) signale que cette note doit être jouée en même temps que la précédente, formant ainsi un accord. Ici, do-mi-sol = accord de do majeur.
Exemple complet : une mesure simple
Voici une mesure en do majeur, 4/4, avec quatre noires (do-ré-mi-fa) :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 4.0 Partwise//EN"
"http://www.musicxml.org/dtds/partwise.dtd">
<!-- DTD (Document Type Definition) : schéma qui définit la structure valide du document -->
<score-partwise version="4.0">
<part-list>
<score-part id="P1">
<part-name>Piano</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>1</duration><type>quarter</type>
</note>
<note>
<pitch><step>D</step><octave>4</octave></pitch>
<duration>1</duration><type>quarter</type>
</note>
<note>
<pitch><step>E</step><octave>4</octave></pitch>
<duration>1</duration><type>quarter</type>
</note>
<note>
<pitch><step>F</step><octave>4</octave></pitch>
<duration>1</duration><type>quarter</type>
</note>
</measure>
</part>
</score-partwise>
48 lignes pour 4 notes ! C’est la principale critique de MusicXML : sa verbosité.
Forces et limites
Les forces
| Aspect | Avantage |
|---|---|
| Interopérabilité | Échange entre Finale, Sibelius, MuseScore, Dorico… |
| Complétude notationnelle | Armures, clefs, articulations, dynamiques, paroles |
| Lisibilité | Format texte, débugable, versionnable avec Git (système de contrôle de version) |
| Standard ouvert | Documentation publique, pas de licence propriétaire |
| Préservation | Encode l’intention du compositeur, pas juste les notes |
Les limites
| Aspect | Limitation |
|---|---|
| Verbosité | ~10x plus volumineux que MIDI pour la même musique |
| Microtonalité | Supportée mais complexe (décalages en cents — centièmes de demi-ton —, altérations non standard) |
| Pas génératif | Décrit une partition fixe, pas des règles de génération |
| Variabilité | Chaque logiciel interprète différemment certaines balises |
| Mise en page | Les détails de gravure ne sont pas toujours préservés |
Le problème de la microtonalité
La microtonalité désigne l’utilisation d’intervalles plus petits que le demi-ton de la gamme tempérée occidentale. MusicXML peut encoder des quarts de ton avec des altérations fractionnaires :
<pitch>
<step>C</step>
<alter>0.5</alter> <!-- quart de ton au-dessus de do -->
<octave>4</octave>
</pitch>
Mais peu de logiciels de notation affichent correctement ces altérations, et les symboles microtonaux ne sont pas standardisés. Pour les musiques du monde (maqam arabe, ragas indiens), MusicXML reste donc un compromis imparfait.
Les éléments d’expression musicale
MusicXML va bien au-delà des notes. Voici quelques éléments essentiels pour une partition complète :
Dynamiques (nuances d’intensité)
<direction>
<direction-type>
<dynamics><ff/></dynamics> <!-- fortissimo -->
</direction-type>
</direction>
Les nuances classiques sont prédéfinies — du plus doux au plus fort : pp (pianissimo, très doux), p (piano, doux), mp (mezzo-piano, moyennement doux), mf (mezzo-forte, moyennement fort), f (forte, fort), ff (fortissimo, très fort). On peut aussi utiliser du texte libre.
Articulations (manière de jouer les notes)
Les articulations indiquent comment attaquer ou enchaîner les notes — piquées, accentuées, liées, etc.
<note>
<pitch><step>C</step><octave>4</octave></pitch>
<notations>
<articulations>
<staccato/> <!-- staccato : note courte et détachée -->
<accent/> <!-- accent : note jouée plus fort -->
</articulations>
</notations>
</note>
Liaisons et legato (jeu lié)
Le legato (de l’italien legare, lier) est un mode de jeu où les notes s’enchaînent sans interruption. Sur la partition, il est indiqué par une liaison de phrasé (slur), un arc reliant plusieurs notes :
<note>
<pitch><step>C</step><octave>4</octave></pitch>
<notations>
<slur type="start" number="1"/>
</notations>
</note>
<!-- notes intermédiaires -->
<note>
<pitch><step>E</step><octave>4</octave></pitch>
<notations>
<slur type="stop" number="1"/>
</notations>
</note>
Paroles (pour la musique vocale)
<note>
<pitch><step>C</step><octave>4</octave></pitch>
<lyric number="1">
<syllabic>begin</syllabic>
<text>Hel</text>
</lyric>
</note>
<note>
<pitch><step>D</step><octave>4</octave></pitch>
<lyric number="1">
<syllabic>end</syllabic>
<text>lo</text>
</lyric>
</note>
L’élément <syllabic> indique si la syllabe est au début, au milieu, à la fin d’un mot, ou si c’est un mot complet.
Cas d’usage concrets
Scénario 1 : Échanger une partition entre logiciels
Un compositeur travaille sur Finale mais son éditeur utilise Sibelius. Solution : exporter en MusicXML.
Ce qui se préserve bien : Notes, rythmes, armures, clefs, dynamiques de base.
Ce qui peut poser problème : Mise en page précise, polices personnalisées, certaines articulations rares.
Scénario 2 : Analyser une partition avec du code
Un musicologue veut compter les intervalles dans les sonates de Beethoven. Avec music21 (bibliothèque Python d’analyse musicale développée au MIT) :
from music21 import converter
score = converter.parse('sonate.musicxml')
for note in score.flatten().notes:
print(note.pitch, note.duration.quarterLength)
MusicXML offre un accès programmé à la partition que MIDI ne permet pas aussi facilement.
Scénario 3 : Archiver une oeuvre pour la postérité
Un orchestre veut conserver son répertoire en format numérique ouvert. MusicXML est idéal car :
- Format texte (contrairement aux formats binaires — des fichiers encodés en données brutes, illisibles sans logiciel dédié — et propriétaires)
- Standard documenté publiquement
- Lisible dans 50 ans (contrairement à un format propriétaire qui pourrait disparaître)
MusicXML vs MIDI : comparaison
Prenons la même phrase musicale et comparons :
En MIDI (conceptuel)
Note On: canal=1, note=60, vélocité=80, delta=0
Note Off: canal=1, note=60, vélocité=0, delta=480
Note On: canal=1, note=62, vélocité=80, delta=0
Note Off: canal=1, note=62, vélocité=0, delta=480
(Le « delta » est le temps écoulé depuis l’événement précédent, exprimé en ticks — voir I4 pour les détails.)
MIDI ne sait pas si c’est du 4/4, du do majeur, ou si les notes sont sur la portée en clef de sol.
En MusicXML
<measure number="1">
<attributes>
<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>1</duration><type>quarter</type>
</note>
<!-- ... -->
</measure>
MusicXML préserve le contexte musical complet.
En BP3 (grammaire générative — voir I2)
gram#1[1] S --> _tempo(120) C4 D4 E4 F4
Une seule ligne. Mais la vraie puissance de BP3 est ailleurs — on peut exprimer des variantes :
gram#1[1] S --> _tempo(120) Phrase
gram#1[2] <3> Phrase --> C4 D4 E4 F4
gram#1[3] <1> Phrase --> C4 E4 G4 C5
Ici, Phrase sera remplacé par la première option 3 fois sur 4, et par la seconde 1 fois sur 4. Les nombres entre chevrons (<3>, <1>) sont des poids qui contrôlent la probabilité de chaque règle (voir B1). MIDI et MusicXML décrivent une partition figée ; BP3 décrit un espace de partitions possibles.
| Critère | MIDI | MusicXML | BP3 |
|---|---|---|---|
| Armure | Non | Oui | Non (implicite) |
| Chiffrage | Non | Oui | Non (implicite) |
| Do♯ vs Ré♭ | Non | Oui | Oui |
| Articulations | Partiel (vélocité) | Oui (staccato, accent…) | Via fonctions |
| Paroles | Non | Oui | Non |
| Mise en page | Non | Partiel | Non (pas son rôle) |
| Taille fichier | Compact | Verbeux | Très compact |
| Temps réel | Oui | Non | Non |
| Génération variée | Non | Non | Oui (stochastique) |
| Polymétrie | Non | Limitée | Oui (natif) |
Ce qu’il faut retenir
- MusicXML encode la partition, pas le son ni les instructions de jeu.
- Format XML lisible : balises hiérarchiques, débugable, versionnable.
- Organisation partwise (par instrument) ou timewise (par instant) — les deux sont équivalents.
- Éléments clés :
<note>,<pitch>,<duration>,<measure>,<attributes>. - Interopérabilité : le standard de facto pour échanger des partitions entre logiciels.
- Limites : verbeux, microtonalité complexe, pas de génération algorithmique.
Pour aller plus loin
- Spécification officielle : W3C MusicXML
- Tutoriel interactif : MusicXML Tutorial
- Bibliothèque Python : music21 pour parser et générer du MusicXML
- Convertisseur en ligne : Les logiciels comme MuseScore permettent d’exporter/importer gratuitement
Glossaire
- Alter : Modification de la hauteur d’une note en MusicXML (dièse ♯ = +1, bémol ♭ = -1, naturel ♮ = 0).
- Articulation : Indication de la manière de jouer une note (staccato, accent, tenuto…).
- Balise : Élément de syntaxe XML encadré par
<et>, comme<note>ou</note>. - Divisions : Nombre de subdivisions par noire, définit la résolution temporelle du fichier.
- DOCTYPE : Déclaration en début de fichier XML qui indique le schéma (règles de structure) utilisé.
- Dynamique : Indication d’intensité sonore sur la partition (pp, p, mp, mf, f, ff — du plus doux au plus fort).
- Fifths : Nombre d’altérations à l’armure, compté sur le cycle des quintes (positif = dièses ♯, négatif = bémols ♭).
- HTML : HyperText Markup Language — langage de balises pour les pages web, cousin du XML.
- Legato : Mode de jeu lié, où les notes s’enchaînent sans interruption. Indiqué par une liaison de phrasé (slur).
- Part : Une voix ou un instrument dans la partition.
- Partwise : Organisation du fichier par instrument puis par mesure (la plus courante).
- Polyphonie : Superposition de plusieurs lignes mélodiques indépendantes. En MusicXML, gérée par l’élément
<voice>. - Staccato : Mode de jeu détaché, où chaque note est jouée brièvement. Indiqué par un point au-dessus ou en dessous de la note.
- Timewise : Organisation du fichier par mesure puis par instrument.
- Voice : Ligne mélodique au sein d’une partie (pour la polyphonie sur une portée).
- XML : eXtensible Markup Language — format texte structuré avec des balises imbriquées.
- XSLT : eXtensible Stylesheet Language Transformations — langage pour transformer du XML en un autre format.
Liens
- I4 — Introduction au MIDI — le paradigme événementiel, prérequis de cet article
- M1 — MIDI sous le microscope formel — analyse formelle de MIDI
- M2 — MusicXML sous le microscope formel — analyse formelle de MusicXML
- M3 — Les trois paradigmes de représentation musicale — événementiel, notationnel et génératif
- L1 — Hiérarchie de Chomsky — cadre formel pour comprendre la structure des langages (dont XML)
- I2 — Bol Processor — le système génératif qui contraste avec l’approche notationnelle de MusicXML
- Glossaire — Glossaire général de la série
Prérequis : I4
Temps de lecture : 12 min
Tags : #musicxml #notation #partition #representation-musicale #introduction
Prochain article : M1 — MIDI sous le microscope formel