Études supérieures - Les enseignements - Plateforme Temps Réel - Atelier Son - Cours en ligne -

La Norme mIDI

Définition

le mIDI, acronyme de musical Interface for Digital Instrument [Interface musicale pour les instruments numériques] est une norme permettant aux instruments électroniques [et par extension à d’autres types de matériels comme les micro-ordinateurs, les appareils numériques de traitement du son, contrôleurs etc ...] de communiquer entre eux.
Comme vu dans le cours sur l’audionumérique, ce langage est né de la nécessité, pour les gens manipulant des sons synthétiques, puis numériques, d’écrire un langage leur permettant des manipuler ces sons par des paramètre similaires à ceux existant sur les instruments réels. Il existe donc des claviers midi, des guitares midi, des clarinettes midi, des surfaces de contrôle midi, etc..

exemple de guitare mIDI , la Roland GR-707

1-L’interface physique

Du point de vue physique, l’interface mIDI est une liaison série asynchrone fonctionnant sur une boucle de courant [5mA] à 31250 bauds, avec 1 bit de start, 8 bits de données, 1 bit de stop, sans parité [10 bits au total, pour une période de 320 micro-secondes par octet transféré]
Liaison série parce que les bits qui composent un octet [byte en anglais], puis un message [ensemble d’octets], sont envoyés les uns après les autres sur un seul fil, et non simultanément comme pour un bus parallèle [comme par exemple avec une interface Centronic d’imprimante]. Elle est dite asynchrone parce que le signal d’horloge n’est pas véhiculé sur un autre fil en parallèle, les instruments se synchronisant sur la vitesse prédéterminée de 31250 bauds et le bit de Start qui accompagne chaque octet. Les informations doivent circuler suffisamment rapidement pour pouvoir suivre le jeu d’un musicien en temps-réel, sans provoquer de retard perceptible à l’oreille [on dit en général qu’un retard de 5ms commence à être discernable, surtout sur un jeu en accords]. Un rapide calcul nous montre qu’à cette vitesse, et en théorie, on pourrait jouer au moins mille notes par seconde...

Les connecteurs standards pour le mIDI sont des fiches DIN à 5 broches :

Sur la majeure partie des appareils, on trouve trois ports mIDI :

le mIDI IN par laquelle un appareil reçoit des informations
le mIDI OUT par laquelle il en envoie
le mIDI THRU qui restitue les informations qui entrent par la prise mIDI IN [pour permettre une connexion en chaîne]

Ces trois ports permettent de construire des configurations complexes :

Une spécificité intéressante du protocole mIDI est qu’un message peut adresser jusqu’à 16 récepteurs différents, en programmant chaque appareil pour recevoir sur un canal de 1 à 16. Plusieurs instruments récepteurs peuvent ainsi être connectés sur la même ligne, chacun répondant seulement aux codes qui correspondent à leur canal de réception pré réglé [cela permet aussi d’exploiter un expandeur multi-timbral - capable de jouer de plusieurs instruments en même temps : piano + batterie + guitare, etc...]

2-Le protocole

Le but du protocole est d’abord de retranscrire en temps réel le jeu de l’instrumentiste. Pour un pianiste, par exemple, les codes de jeu doivent retransmettre les notes jouées, la force avec laquelle elles sont frappées, si la pédale de maintien [sustain] est enfoncée, etc... Dans un second temps, il permet de transférer des réglages sonores ou plus généralement, d’échanger différents types d’informations numériques liées au contrôle du son.

2.1 - Les messages utilisant les canaux midi

2.1.1 - Les messages Note On
Le message « Note On » correspond à l’enclenchement d’une note. L’octet de statut est dans ce cas suivi de deux octets de données : le premier donne la hauteur de la note, c’est à dire le numéro de la touche qui est enfoncée, le second donne la vélocité c’est à dire la vitesse d’enfoncement [le son devient plus fort et plus timbré lorsque les touches sont enfoncées plus violemment]. Comme un octet de données peut prendre 128 valeurs, la tessiture du mIDI s’étend sur 128 notes. La valeur 0111001 c’est à dire 57 en décimal étant le La 440Hz et la valeur 60 correspond au Do central d’un piano 88 touches.

2.1.2 - Les messages Note Off
Le message « Note Off » sert à couper une note. L’octet de statut est dans ce cas également suivi de deux octets de données : le premier donne la hauteur de la note à couper, c’est à dire le numéro de la touche qui est relâchée, le second donne la vélocité c’est à dire la vitesse de relâchement . On utilise également assez souvent un message « Note On » avec une vélocité de 0 pour couper une note, car peu d’instruments interprètent la dynamique de relâchement [quand c’est le cas on sent le son qui disparaît moins vite lorsque les touches sont relâchées doucement].

Exemple : Le musicien enfonce la note C0 sur clavier : Il s’agit d’un message note on . Ce message requiert l’envoie de 3 mots :

1- un mot de statut : 1001nnnn

le 1 indique qu’il s’agit d’un status byte

le 001 indique qu’il s’agit d’un message note on

et nnnn précise le canal mIDI [ 2 puissance 4 =16 ] d’ou la limite des 16 canaux mIDI que l’on retrouve dans la norme mIDI .

2- un 1er mot de data : 00011000

le 0 indique qu’il s’agit d’un Data byte

les chiffres suivants 0011000 est le code correspondant à C0 [ 2 puissance 7 = 128 valeurs possibles ] d’ou la limite de 0 à 127 valeurs pour chaque data que l’on retrouve dans la norme mIDI .

3- un 2e mot de data : 00100000

le 0 indique qu’il s’agit d’un Data byte

les chiffres 0I00000 correspondant à la vélocité 64 [ 2 puissance 7 = 128 valeurs possibles ]

Ce C0 aura pour codage complet 1001nnnn0001100000100000, soit canal midi n, note C0, vélocité 64

2.1.3 - Les messages Polyphonic Key Pressure et channel Pressure
Les messages de pression « Channel Pressure » et « Polyphonic Key Pressure » aussi appelé aftertouch sont engendrés par l’application d’une pression sur une touche déjà enfoncée.

2.1.4 - Les messages Pitch Bend
Le message de « Pitch Bend » modifie la hauteur des notes jouées. Il retransmet en général la position de la molette de pitch [celle qui est à gauche des claviers de contrôle mIDI avec le rappel automatique en position centrale].

2.1.5 - Les messages Patch Change
Le message « Program Change » sert à choisir l’instrument qui va jouer sur le canal concerné. Il est généralement automatiquement retransmis par les contrôleurs mIDI lorsque le musicien appui sur une touche de changement de son.

2.1.6 - Roue de modulation [modulation Wheel]

Contrôleur n° 1 [réglage grossier] et n° 33 [réglage fin]

Positionne la valeur de la roue de modulation. Elle est souvent utilisée pour doser le taux d’effet de vibrato [variation cyclique de hauteur] ou de trémolo [variation cyclique d’amplitude] d’un son ou encore pour régler sa brillance [plus ou moins d’harmoniques]. Les appareils mIDI permettent généralement de paramétrer l’affectation de la roue de modulation sur un effet particulier.

2.1.7 - Contrôleur de souffle [Breath controller]

Contrôleur n° 2 [réglage grossier] et n° 34 [réglage fin]

Positionne la valeur du contrôleur de souffle [Il s’agit d’un capteur placé dans la bouche du musicien qui est sensible aux variations de pression par le souffle]. Il est souvent utilisée pour doser le volume et/ou la brillance d’un son [permet d’obtenir un effet plus réaliste pour le musicien qui veut jouer à la manière d’un instrument à vent comme le saxophone, par exemple]. Les appareils mIDI permettent généralement de paramétrer l’affectation du contrôleur de souffle à un ou plusieurs réglage[s] particulier[s] comme pour l’aftertouch.

2.1.6.8 - Pédale de pied continue [Foot controller]

Contrôleur n° 4 [réglage grossier] et n° 36 [réglage fin]

Positionne la valeur du contrôleur au pied. Elle est souvent utilisée pour doser le volume [comme le potentiomètre] ou la brillance [comme une pédale wha-wha]. Les appareils mIDI permettent généralement de paramétrer l’affectation du contrôleur au pied à un ou plusieurs réglage[s] particulier[s] comme pour l’aftertouch.

2.1.6.9 - Volume

Contrôleur n° 7 [réglage grossier] et n° 39 [réglage fin]

Positionne le volume général du canal sélectionné.

2.1.6.10 - Pédale de maintien [Hold Pedal ou Sustain]

Contrôleur n° 64

Provoque le maintien des notes du canal sélectionné qui vont être relachées par le musicien [de la même manière qu’une pédale de maintien d’un piano - celle de droite - permet de conserver la résonnance du son comme si les touches n’avaient pas été relachées].

2.2 - Les messages systèmes

Les messages système s’appliquent à une machine en général et non plus seulement à l’un des seize canaux mIDI [le code de canal sur les 4 bits de poids faible de l’octet de statut n’est donc pas utilisé].

On peut les regrouper en trois catégories :
2.2.1 - les messages système exclusifs

La première catégorie de messages système concerne les messages système exclusifs, souvent abrégés « sysex ». Ils disposent d’une entête et d’une terminaison normalisées, mais peuvent contenir entre les deux n’importe quel type d’informations : leur définition est réservée aux constructeurs de matériel mIDI. Différents d’une machine à l’autre, ils permettent généralement de modifier les sons, d’effectuer des transferts de la mémoire [dumps] etc...
2.2.2 - les messages système communs

La seconde catégorie est celle des messages système communs, parmi lesquels « Song Position Pointer » qui positionne une machine [séquenceur, boîte à rythmes...] à un endroit précis d’un morceau, « Song Select » qui sélectionne l’un des 128 morceaux de cette même machine, ainsi que « Tune Request », qui demande aux synthétiseurs analogiques d’accorder leurs oscillateurs.
2.2.3 - les messages système temps-réel

La troisième catégorie de messages système regroupe quant à elle les messages dits temps réel, susceptibles d’intervenir à n’importe quel moment, même au milieu d’un autre message. Deux d’entre eux sont actuellement non définis et réservés à de futures extensions de la norme. Les autres concernent la synchronisation de plusieurs machines [« Timing clock », « Start », « Stop » ou « Continue »], la réinitialisation complète du synthétiseur [« System Reset »], ou le test cyclique de la liaison mIDI [« Active Sensing »].

L’intérêt croissant d’artistes issus du champs des arts visuels et des chercheurs a poussé certains organismes indépendants à développer des interfaces capables de numériser puis convertir en messages midi des capteurs de tous type.

On peut citer :

l’Icube http://infusionsystems.com/catalog/index.php
L’Atomic Pro http://www.ircam.fr/288.html?&tx_ircam_pi2[showUid]=23&cHash=91f6f28fb5
Les modules dInterfaceZ http://www.interface-z.com/

3 - Les fichiers midifiles

A l’image du mIDI - une normalisation exemplaire de la communication entre instruments électroniques - le format mIDIfiLE est devenu le standard universel de stockage des séquences. Tout séqenceur en gère l’importation, la modification ou l’exportation.

Le mIDIfiLE s’est imposé comme un véritable standard de fait, une passerelle incontournable entre des logiciels et des plateformes différentes. Le fichier, ayant pour extension .mid ou .smf, est organisé sous forme d’une succession de « chunks ». Un chunk est une sorte de paragraphe, à l’intérieur duquel on développe une idée. Un chunk dispose toujours d’une entête, indiquant son nom et la taille des données qu’il contient. La principale particularité de ce type de format de fichier est de pouvoir subir des modifications et des ajouts en restant compatible. En effet, grâce aux entêtes, il devient particulièrement facile pour un logiciel de « sauter » un chunk qu’il ne connaît pas.

Un mIDIfiLE est composé d’un chunk « Header » [entête] suivi d’un ou plusieurs chunks « Track » [piste]. Si le fichier peut avoir trois formats, seuls les deux premiers sont réellement exploités. Un fichier au format 0 contient une seule piste correspondant à l’ensemble des informations relatives aux canaux mIDI. C’est généralement le format privilégié des programmes de relecture [les « players »] qui n’offrent pas de possibilités d’édition évoluées[Quicktime]. Un mIDIfiLE de format 1, au contraire, contient une ou plusieurs pistes [à jouer simultanément], chacune renfermant des informations propres à un canal. Les mIDIfiLES de format 2, quant à eux, n’ont pas une structure linéaire : ils contiennent différentes pistes représentant des patterns indépendants.

Le chunk « Header » contient l’entête du fichier mIDIfiLE. Celle-ci a une longueur fixe. Elle spécifie l’organisation générale du fichier, à savoir le type du mIDIfiLE, le nombre de pistes qu’il contient, ainsi que sa résolution temporelle [par rapport au ticks du séquenceur, ou en code SmPTE ou mIDI Time Code].

Viennent ensuite un ou plusieurs chunks « Track », c’est à dire une ou plusieurs pistes. Une piste est une succession d’événements, chacun précédé par un « delta-time ». Un « delta-time » est une référence temporelle relative, c’est à dire qu’il marque le temps écoulé depuis le delta-time précédent. Au nombre des événements, on trouve des messages mIDI conventionnels [Note On, changement de patch, contrôleur continu etc...], des messages exclusifs, et des méta-événements. Certains de ces méta-événements accueillent des données textuelles [Copyright, nom de la séquence, d’une piste ou d’un instruments, paroles d’une chanson ou commentaires etc...]. D’autres plus indispensables, règlent le tempo, la signature ou la clef d’une composition [les valeurs par défaut sont le 4/4 à120 BPm]. Enfin, à l’image des messages exclusifs, un code spécial, est réservé à des méta-événements spécifiques au séquenceur utilisé.

Les mIDIfiLES sont relativement économes en stockage, complets, et assez évolutifs pour ne pas se démoder trop rapidement, ce qui est d’ailleurs maintenant prouvé puisqu’ils existent depuis 1987 et sont encore l’une des denrées les plus convoitées sur Internet. L’assurance de pouvoir migrer d’un logiciel à l’autre, voire d’une plateforme à l’autre, sans pour autant perdre ses données ou les voir altérer par une quelconque conversion hasardeuse leur assure encore un bel avenir.

Vous pouvez ainsi ouvrir n’importe quel midifile téléchargé depuis le net et l’ouvrir avec Quicktime. Ce fichier jouera pour vous l’accompagnement musical du morceau que vous avez choisi en utilisant les instruments Quicktime. Ces instruments sont une banque de sons synthétisés livrés en standard ace l’application Quicktime. Il faut donc se souvenir que le midi n’est en aucun cas du son, mais simplement une partition informatique [proche des rouleaux pour piano mécaniques] qui donne aux machines connectées capables de recevoir du midi, les indications nécessaires à l’exécution de celle-ci.

Un exemple d’éditeur de mIDIfiLES dans l’environnement max/mSP


ESAAix - Ecole supérieure d’art d’Aix-en-Provence - http://www.ecole-art-aix.fr