La norme MIDI était à l'origine destinée à relier
les synthétiseurs entre eux. Typiquement, un clavier maître servait
à piloter plusieurs générateurs sonores. C'est plus tard que l'on
a eu l'idée d'y connecter aussi les ordinateurs. Ceci explique
l'orientation "temp réel" du format des données, peu adapté à
l'enregistrement.
La norme MIDI 1.0 a été publiée par par l'IMA
(International MIDI Association) en 1983. Il y a eu des évolutions
depuis lors, mais l'essentiel reste identique. Les évolutions
sont réalisée par le consortium MIDI
Manufacturer Association.
Spécifications électriques |
Le connecteur MIDI est un connecteur DIN à 5 broches
standard. Quelques rares fabriquants proposent plutôt des connecteurs
XLR pour leur plus grande robustesse, mais ils sont peu répandus
car onéreux et ne respectant pas la norme. On utilise une prise
distincte pour l'entrée et pour la sortie, pour autoriser toutes
sortes de câblages. Il n'y a pas de détrompeur : il est possible
de relier par mégarde deux sorties ; il n'y a normalement pas
de dégats car les sorties sont assez robustes -- à éviter quand
même ! On appelle "MIDI in" l'entrée vers l'instrument, "MIDI
out" la sortie. Certains instruments sont équipés d'une prise
"MIDI thru". Elle renvoit sans modification ce qui arrive par
la prise "MIDI in", permettant ainsi le chainage. Le câble utilisé
est de type paire torsadée entre les broches 4 et 5. La broche
2 est reliée à la masse. les broches 1 et 3 ne sont pas utilisées.
Les données circulent à une vitesse de 31.25 Kbaud
(+/-1%), 8 bits de données, 1 bit de départ, 1 bit d'arrêt, soit
320 microsecondes par octet. Pour obtenir une bonne isolation
électrique, l'interface MIDI repose sur une boucle de courant
; la commande se fait en intensité et pas en tension. La boucle
de courant est fixée à 5 mA, le 0 logique étant la présence de
courant. Du côté récepteur, il est nécessaire d'utiliser un opto-coupleur
qui bascule en moins de 2 microsecondes (Sharp PC-900 ou HP6N138
par exemple).
Grâce à l'utilisation d'une boucle de courant
et d'un opto-coupleur, il y a une isolation électrique totale
entre l'émetteur et le récepteur. On ne connecte la masse (broche
2 et blindage) que du côté de l'émetteur et jamais du côté du
récepteur. N'oublions pas, en effet, qu'il est conseillé de ne
jamais relier ensemble les masses de deux appareils audios autrement
que par le câble audio lui-même. Une interface MIDI ne doit pas
connecter la masse sur une prise "MIDI in" ; cependant,
il est tellement fréquent de trouver des interfaces qui
ne respectent pas la norme (surtout les adaptateurs joystick vers
les ordinateurs) que certains câbles réalisent eux-même
cette connexion d'un seul côté. Attention, dans ce
cas le câble MIDI a un sens !
Les données sont transmises sous formes d'octets.
On distingue deux types d'octets : les octets "opcode" que l'on
appelle aussi "status" ont le bit 7 fixé à un, et les octets de
données avec le bit 7 mis à zéro. Les octets status sont suivis
des données correspondantes. Il y a une notion "d'état courant"
: si on envoie des données sans répeter l'octet status, on considère
simplement que le même octet status est sous-entendu.
Le protocole prévoit un échange d'informations
sur 16 canaux différents, un canal étant souvent associé à la
notion de piste. Les paramètres tels que volume, modulation, panoramique,
changement de programme, etc. s'appliquent séparément à chaque
canal. Un instrument reçoit selon le mode MIDI un seul ou plusieurs
canaux.
Dans ce document, les valeurs hexadécimales sont
préfixées par 0x (comme en C), les bits numérotés de 0 à 7, 0
étant le bit de poids faible. Les octets status ont un format
fixe.
- bit 7 : fixé à un (identifiant "status")
- bits 6-4 : code du message sur 3 bits (8 valeurs)
- 0 : fin de note
- 1 : début de note
- 2 : pression dynamique (par note)
- 3 : paramètre
- 4 : sélection de programme
- 5 : pression dynamique (par canal)
- 6 : pitch bend
- 7 : message système
- bits 3-0 : numéro du canal
Passons en revue la signification des différents
codes, ainsi que les octets de données associés. Si on considère
l'octet complet en écriture hexadécimale, les codes sont en fait
des intervalles puisqu'il existe un code pour chaque canal. Puisque
le bit 7 est toujours fixé à 1, les codes démarrent à 0x80.
Par exemple, le code 0x89 correspond à : fin de note sur le canal
9.
0x80 à 0x8F : fin de note (note off)
- un octet de numéro de note
- un octet de vélocité
La vélocité de relâchement a très rarement une signification.
0x90 à 0x9F : début de note (note on)
- un octet de numéro de note
- un octet de vélocité
C'est sans doute le message le plus courant. Il
faut noter que si la vélocité vaut 0, ce message est équivalent
à la fin d'une note. Grâce à ce mécanisme de subsitution des "note
on" avec vélocité 0 par "note off", une succession de notes est
traduite à l'aide uniquement d'évènements "note on" ; on
peut donc omettre l'octet de status. C'est une pratique largement
répandue, utilisée en standard par de nombreux synthétiseurs.
La vélocité est censée utiliser une échelle logarithmique,
les claviers ne la gérant pas envoient normalement 64. On constate
cependant que les échelles de vélocité varient beaucoup d'un clavier
à l'autre, et que les claviers qui ne sont pas sensibles à la
dynamique ont tendance à plutôt envoyer 100 au lieu de la valeur
64 préconisée par la norme.
Le "do" médian (celui au milieu du clavier) a pour
numéro 60. Le "la" de référence à 440 Hz a donc pour numéro
69.
0xA0 à 0xAF : pression dynamique (after touch)
- un octet de numéro de note
- un octet de valeur de pression
Ces valeurs correspondent à la pression exercée
sur le clavier pendant que la touche est enfoncée.
0xB0 à 0xBF : contrôleurs
- un octet de numéro de contrôleur
- un octet de valeur
Les contrôleurs sont par exemple le volume, la réverbération,
le panoramique... Leur numéro n'est pas fixé par la norme MIDI
mais la plupart des constructeurs respectent les valeurs données
par la norme General Midi.
- 0-31
- contrôleurs de 0 à 31, octet de poids fort
- 32-63
- contrôleurs de 0 à 31, octet de poids faible
- 64-95
- contrôleurs de type bascule (0 et 127 seules valeurs autorisées)
- 96-121
- non spécifié
- 122-127
- réservé, voir "messages de mode".
La norme impose uniquement le numéro 1 pour la molette
de modulation. On constate cependant que l'usage du numéro 7 pour
le volume, 11 pour la pédale d'expression, 13 pour le réglage
de panoramique, 64 pour la pédale de sustain, 91 pour la réverbération
et 93 pour le chorus est très largement répandu, même pour les
instruments qui ne répondent pas à la norme General Midi.
Les contôleurs de 32 à 63 servent théoriquement
pour fixer les paramètres de façon fine, de façon à avoir deux
octets significatifs. On constate que très peu d'instruments utilisent
des paramètres sur 2 octets, et les valeurs sont en général dans
l'intervalle 0-127. On remarque également qu'en pratique, les
contrôleurs de la zone 64-95 sont utilisés sur la plage complète
0-127 et ne sont pas forcément utilisés en bascule.
Les contrôleurs 122-127 sont utilisés pour la gestion
des modes MIDI.
0xC0 à 0xCF : sélection de programme
La sélection de programme permet de changer de timbre.
La norme MIDI 1.0 n'impose pas de liste d'instruments standard.
C'est l'une des principales raisons de l'établissement de la norme
General Midi.
0xD0 à 0xDF : pression par canal (channel aftertouch)
Identique à la pression dynamique mais gérée globalement
sur un canal complet.
0xE0 à 0xEF : pitch bend
0xE0 |
poids faible |
poids fort |
Données sur 14 bits :
- 7 bits de poids faible
- 7 bits de poids fort
Les valeurs vont donc de 0x00 à 0x3FFF, avec le
point neutre en 0x2000. L'amplitude n'est pas spécifiée dans la
norme, mais on constate qu'en général, elle est de 2 demis tons
vers le haut et vers le bas.
Les messages de modes contrôlent la façon dont l'instrument
reçoit les données. Le but de ces messages est de filtrer les
notes selon les canaux pour permettre de réaliser une chaîne MIDI,
chaque instrument ne prenant que ce qui le concerne.
|