Introduction à MusicXML

MusicXML, qu’est-ce que c’est ?

MusicXML est le premier format de fichier de notation musicale à bénéficier d’un certain succès auprès des lecteurs de partitions numériques.

Certaines tentatives ont eu lieu dans le même domaine par le passé (formats NIFF (Notation Interchange File Format) et SMDL (Standard Music Description Language)), mais n’ont pas trouvé, pour diverses raisons (format limité, technologie prématurée…), l’adhésion escomptée auprès des éditeurs de logiciel.

Deux des raisons qui ont fait le succès de MusicXML sont certainement, comme son nom l’indique, qu’il est d’une part basé sur le langage XML [1] universellement répandu dans le monde informatique pour ce qui est de l’échange de données, et par ailleurs que ce format arrive à point nommé au moment où, grâce à l’arrivée des tablettes numériques, la transition de la partition papier vers la partition numérique commence à faire son chemin dans les esprits.

Pour preuve du succès de ce format : Plus de 160 éditeurs de logiciels l’ont adopté en faisant déjà presque un standard.

Que permet de représenter MusicXML ?

MusicXML a comme vocation de pouvoir représenter la notation de la musique occidentale, telle qu’écrite à partir du XVIIe siècle, à la fois pour la musique classique et la musique populaire. Le langage a été défini afin d’être extensible et couvrir dans le futur les notations moins standard des XXe et XXIe siècles.

En particulier, on peut représenter aujourd’hui dans MusicXML 3.0, la notation classique, les accords en notation anglo-saxonne, les tablatures et les percussions.

Il n’a cependant pas vocation à représenter des notations musicales non occidentales qui devraient faire l’objet un langage XML séparé.

Comment se positionne MusicXML par rapport au format MIDI ?

MusicXML est un sur-ensemble des informations contenues dans la norme MIDI (voir http://fr.wikipedia.org/wiki/Musical_Instrument_Digital_Interface), mais il n’a pas nécessairement vocation à se substituer à lui.

En effet, le langage MIDI qui est particulièrement concis, est dédié à l’exécution des morceaux représentés dans ce langage, et supporté par la totalité des instruments physiques ou logiciels.

En revanche, il ne se soucie pas de prime abord des problématiques de représentation de la musique sur une partition, même s’il est possible d’obtenir une partition minimale à partir d’un fichier MIDI.

Ce qui est l’inverse du format MusicXML qui vise en priorité la représentation de l’ensemble des informations qu’il est possible de trouver sur une partition, tout en offrant la possibilité de jouer un fichier MusicXML via l’un des nombreux logiciels le supportant.

La lecture s’effectue comme si c’était du MIDI, mais au prix d’un message bien moins concis que le message MIDI.

A quoi ressemble MusicXML ?

Un premier exemple permettra de voir rapidement comment représenter une simple note en MusicXML.

Prenons l’exemple du Do « serrure » (pour mémoire ce Do s’appelle ainsi car sur le piano, c’est le Do le plus proche de la serrure du couvercle du clavier).

En MusicXML, le fichier le représentant est le suivant, sachant que :

  • Les notes respectent la notation alphabétique anglo-saxonne (A à G)
  • Les commentaires ci-dessous ne reflètent que les symboles visibles de la partition.

A noter que sur ce premier exemple simplissime, on peut déjà constater (en dehors de l’aspect assez verbeux du XML), que certaines informations peuvent sembler redondantes :

a)    Clef de Sol, explicitement à la ligne 2 (alors que c’est normalement  toujours le cas),

b)   Durée de 4 temps sur la ronde

En effet, pour le a) on est trop habitués aux clefs de Sol et de Fa, mais MusicXML s’adresse à tous les instruments. Un petit rappel de solfège http://fr.wikipedia.org/wiki/Clef_(musique) nous remémorera que les symboles de clef de Sol, Fa et Ut peuvent s’utiliser sur des lignes différentes selon les instruments.

Pour le b), si la mesure avait été en 2/2, (ou « C barré »), une blanche aurait valu un temps, donc une ronde deux temps.

On a pu voir sur un exemple simple la richesse potentielle qui se cache déjà sous MusicXML…

Structure générale des fichiers MusicXML

Assez fréquemment, une partition (surtout d’orchestre) fournit sur une même page des parties dédiées à des instruments séparés. Et dans le cas des instruments polyphoniques comme le piano, il y a toujours 2 portées conjointes, une dédiée à chaque main (sauf pour les manchots :-), l’exemple le plus connu étant le concerto pour la main gauche de Ravel[2]).

On peut donc représenter une partition en MusicXML comme une suite de parties séparées, comme si chaque instrumentiste lisait sa propre partie sur la partition commune. C’est ce qu’on pourrait appeler la lecture horizontale. Cette représentation s’appelle partwise (par parties).

Ou alors comme une suite de mesures « globales », chacune représentant la mesure correspondante de chaque partie. Une lecture verticale en quelque sorte, mais qui est exactement la façon dont le chef d’orchestre utilise son « conducteur ». On parle alors de représentation timewise.

MusicXML permet donc de représenter une même partition suivant ces deux axes de lecture.

Partwise

Ci-dessous la racine de la structure XSD de la dimension Partwise :

Timewise

Et celle de Timewise :


Les deux représentations sont possibles et il existe donc 2 DTD[3] pour ces 2 cas.

On peut passer d’une représentation à l’autre par application d’un XSL sur le XML de la partition, via les ressources standard fournies sur le site officiel de MusicXML :  http://www.musicxml.com

L’utilisation d’un format ou un autre dépend de son besoin : Si on veut pouvoir rapidement isoler un instrument, il faut utiliser la représentation partwise, si on veut faciliter la lecture en temps réel, mieux vaut utiliser la représentation timewise.

Les différents tags sur un extrait de partition significatif

L’extrait choisi est les 4 premières mesures de « Après un rêve » de Gabriel Fauré:


On peut voir sur cette partition un peu plus étoffée que :

  • Chaque instrument a sa ou ses portées dans un tag part
  • Les  différentes indications littérales de tempo ou de nuances, sont indiquées sur chaque mesure par le tag words (direction/direction-type/words)
  • Stem up ou down: Indique la position de la hampe de note
  • note/pitch/step C octave 5 indique la hauteur par la note dans l’octave
  • direction/direction-type/wedge type=crescendo permet d’indiquer des nuances
  • note/staff : permet de spécifier sur quelle portée de la partie instrumentale doit figurer la note

Performances

Comme indiqué précédemment,  la représentation de morceaux en MusicXML (extension .xml) peut conduire à des fichiers très volumineux et peu adaptés à une lecture en temps réel.

Pour répondre à cette problématique de performance, il a été introduit à partir de MusicXML v 2.0, un format compressé basé sur Zip (extension .mxl) qui ramène les fichiers à la taille de leurs équivalents MIDI.

Par ailleurs, le traitement d’un fichier MusicXML par l’intermédiaire d’un parseur SAX, permettant la lecture des données contenues ‘au fil de l’eau’, sera plus adapté à son utilisation en tant que fichier musical (voir http://fr.wikipedia.org/wiki/Simple_API_for_XML).

Les autres utilisations de MusicXML

Grâce à son format XML, MusicXML rend possible un grand nombre de traitements, à l’aide des outils standards de transformation du XML : XSLT et XPath, XQuery, etc …. .

En voici quelques exemples :

Recherche musicale

Il est possible de rechercher un morceau à partir d’un certain nombre de ses caractéristiques : tonalité, tempo, motif mélodique, motif rythmique, etc …

Extraction de parties

Comme on l’a vu, l’extraction de la partie d’un instrument donné, d’une partition plus large (par exemple un instrument donné à partir d’un conducteur …) est facilitée.

Voir également l’article sur le sujet : Requêtes XQuery simples sur une partition MusicXML

Transcription vers d’autres formats numériques

MuseData, Finale, MIDI, PDF…

D’autres nombreux sujets peuvent également être adressés : l’extraction de paroles, la transposition, la transformation en partition rythmique, diverses analyses statistiques…

Le futur..

L’utilisation d’un format XML, donc par définition lisible et échangeable, est en contradiction avec le besoin, inhérent à ce type de document, de gérer les droits d’auteur.

En effet, un format échangeable a pour but que les fichiers puissent être disponibles partout et pour tous, alors que la gestion de droits (DRM), a pour but d’en restreindre la diffusion à ceux qui en ont payé les droits.

Il semblerait plus logique à l’avenir que MusicXML puisse être intégré dans des conteneurs qui eux gèreront les droits comme le format MPEG4 ou le format epub, mais que le langage lui-même puisse s’en affranchir.

Voir à ce sujet les articles Les partitions EPUB ont-elles un avenir ? et Intégrer des partitions MusicXML dans un e-book

[1] Cet article suppose une connaissance du langage XML. Voir les innombrables ressources sur le sujet sur internet.

[2] Ce n’est en fait pas tout à fait exact, certaines parties du morceau ayant quand même été écrites sur deux portées pour des facilités d’écriture (grave en clef de fa, aigu en clef de sol).

[3] Il n’existait qu’une DTD jusqu’en version 1.1 du format MusicXML. Il existe un XSD à partir de la version 2. L’utilisation d’un XSD à la place d’une DTD pour la validation d’un fichier MusicXML permet d’en détecter bien plus d’incohérences.

_________

Article librement adapté de ressources issues de http://www.musicxml.com

Plus sur MusicXML ?

Autres articles relatifs à MusicXML

3 commentaires

  1. Cet article m’a beaucoup intéressé. Il est clair et bien documenté.

    A tout hasard, je jette une bouteille à la mer : je travaille depuis des années avec un logiciel considéré comme obsolète : Logic Audio (sur PC ; il tourne encore sous XP ; les fichiers sont en .LSO)

    Je cherche désespérément comment convertir mes partitions au format .LSO vers un format plus récent (Finale, ou Cubase, ou XML…) Pour l’instant je n’ai que la solution de passer par l’intermédiare de fichiers MIDI, donc avec pas mal de perte.

    Existe-t-il une autre solution ? Existe-t-il un logiciel (XML ou autre) capable de lire un fichier LSO ?

    Je suis heureux d’apprendre grâce à votre article que je peux au moins envisager d’imprimer la partition d’origine à partir de Logic Audio, puis la scanner et la récupérer en XML. Mais cette solution est un peu lourde…

    Merci si vous pouvez me renseigner.
    Cordialement,

    Raphael ARCHES

    • Bonjour,

      Merci pour votre commentaire.

      Logic Audio a été intégré dans Logic Pro, et depuis la version X, il existe une fonctionnalité d’export MusicXML.

      Malheureusement, on dirait que pour l’import de .LSO dans cette version, c’est loin d’être gagné …

      Si vous connaissez un heureux propriétaire de Logic Pro X, vous pouvez peut-être essayer.

      Sinon, le passage par MIDI conduit comme vous le dites justement, à beaucoup de perte. MIDI n’est pas fait pour représenter de la notation musicale.. C’est la dernière solution à choisir..

      Si vous pouvez exporter la partition directement vers un PDF et la traduire en MusicXML via PDFToMusicXML par exemple, c’est beaucoup mieux. Le PDF contient dans ce cas des informations vectorielles et il n’y a pas de rupture de la chaine numérique.

      En dernier recours, je passerais effectivement par le scan vers MusicXML. Pour Windows, peut-être via Audiveris et export MusicXML..

      J’espère que cela pourra vous aider..

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *