Qu'est-ce que le MIDI ?


Le MIDI (Musical Instrument Digital Interface) intervient dans le contrôle des instruments de musique tels que les échantillonneurs ou synthétiseurs dédiés ou intégrés aux ordinateur sous forme de cartes. Le MIDI permet également de contrôler les consoles de mixage, des processeurs d'effets et des systèmes d'enregistrement.

Le MIDI est une interface de contrôle sérielle originellement dédiée aux systèmes musicaux. Mais il a rapidement débordé de sa vocation première et intervient aujourd'hui dans le contrôle d'un large éventail de matériel non seulement audio, mais destinés à l'éclairage du spectacle.

Le protocole MIDI intègre de nombreux paramètres de commande, la majorité d'entre eux étant librement affectables par l'utilisateur en fonction de ses besoins. Il est possible de contrôler des instruments de musique polyphonique en temps dit pseudo-réel : les temps de transmission ne sont pas perceptibles dans la majorité des cas. Il est également possible d'adresser plusieurs appareils différents sur le même flot de données MIDI.

Retour haut de la page


Quelles sont les différences entre MIDI et l'audionumérique ?


En apparence, ces deux systèmes remplissent le même rôle : enregistrer de la musique en multicanal par l'intermédiaire d'équipements numériques.

L'enregistrement numérique repose sur l'échantillonnage d'un forme d'onde. Un enregistreur audionumérique stocke cette séquence de données et la relit en passant par un convertisseur N/A qui reconstruit la forme d'onde d'origine. Un enregistreur multipistes dispose d'un certain nombre de canaux indépendants, ce qui permet de procéder à l'enregistrement par couches successives.

Par opposition, le MIDI gère les informations numériques qui contrôlent la génération du son. Les données MIDI ne représentent pas la forme d'onde elle-même. Lorsqu'un enregistrement multipistes est effectué dans un enregistreur MIDI, il est ensuite relu en transmettant les données à un certain nombre d'instruments de musique contrôlés par MIDI et ce sont ces instruments qui produisent le son.


Différences entre enregistrement audionumérique et MIDI
Différences entre enregistrement audionumérique et MIDI


L'audionumérique peut être stocké et relu sans matériel additionnel et trouve son emploi dans l'enregistrement de sons acoustiques comme des voix. Un enregistreur MIDI est quasiment inexploitable sans générateur de sons.

Retour haut de la page


Quels sont les avantages du MIDI ?


Le MIDI est un moyen économique de contrôler et stocker des informations sonores. En comparaison avec de l'audionumérique échantillonné (16 bits/44100 Hz) qui peu requérir un espace de stockage très important, les informations MIDI pour une minute de musique peuvent tout à fait ne pas excéder 5 ko. De même la charge de travail imposée à un ordinateur est beaucoup plus faible avec du MIDI qu'avec de l'audio.

L'adoption du système MIDI repose dans une large mesure sur des configurations pratiques et économiques, l'un des objectifs de son développement étant l'intégration de l'interface dans des systèmes bon marché à grande diffusion.
Mais le plus gros avantage du MIDI reste la flexibilité de l'édition, tout paramètre (la hauteur d'une seule note dans un arrangement complet, par exemple) pouvant être commodément modifié.

Retour haut de la page


Principes de base du MIDI


Spécifications du système

Le standard MIDI spécifie une interface sérielle unidirectionnelle fonctionnant à 31.24 kbits (à + ou - 1 %). Ce taux a été fixé à l'époque où la vitesse des microprocesseurs était beaucoup plus basse qu"aujourd'hui : ce taux était une division pratique d'un taux d'horloge maître type de 1 ou 2 MHz. Le taux devait de plus être suffisamment bas pour assurer une transmission sans perte sur des câbles et interfaces simples, tout en autorisant un délai de transmission raisonnable entre instruments.

La transmission des données est unidirectionnelle entre le transmetteur et le récepteur. Le retour requiert une liaison MIDI séparée.
Les messages de contrôle sont transmis par groupes d'octets précédés par un bit de début et suivis par un bit de fin à chaque octet afin de synchroniser la réception des données, la transmission étant asynchrone.
L'addition des bits de début et de fin indique que chaque mot de 8 bits occupe en fait une période de 10 bits à la transmission (pour une durée totale de 320 microsecondes). Un message MIDI typique consiste en un, deux ou trois octets. Certains messages spéciaux peuvent toutefois être plus longs.

Canaux MIDI

Les messages MIDI sont constitués d'un certain nombre d'octets. Chaque partie du message a une vocation spécifique, l'une d'entre elles étant de définir le canal de réception auquel le message est destiné. De cette façon, un appareil de contrôle peut adresser ses données à un appareil de réception de manière spécifique.
Un appareil réglé pour recevoir un ou plusieurs canaux donnés réagit uniquement aux informations qui sont adressées à ces canaux et ignorent les autres.

A la base, il existe 16 canaux MIDI et les instruments peuvent être réglés en vue de recevoir spécifiquement sur un ou plusieurs de ces canaux, ou sur tous les canaux à la fois.
La limite de 16 canaux peut être dépassée en utilisant une interface multiport connectée à un ordinateur. Chacun des ports physique de l'interface peut alors prendre en charge 16 canaux MIDI.

Formats de message

A la base, il existe deux types d'octets de message MIDI : l'octet de statut et l'octet de données.
Sur les huit bits de ces octets, seuls sept sont actifs car le premier bit de chaque octet est réservé à la qualification du type (statut ou données) ce qui offre donc 2 puissance 7 (128) valeurs possibles.

Les octets de statut débutent toujours par un 0.
La première moitié (3 bits) de l'octet de statut indique le type de message. Cela donne donc 8 types de messages possibles. Il existe cependant des cas particuliers avec les message systèmes.
La seconde moitié le numéro de canal (4 bits) est attribuée à la définition du numéro de canal auquel le message est adressé. Cela offre 2 puissance 4 (16) canaux possibles.


Format général de message MIDI
Format général de message MIDI
Bits "sss" : type de message
Bits "nnnn" : numéro de canal
Bits "xxxxxxx" et "yyyyyyy" : données du message.


Les messages MIDI standards peuvent avoir une longueur de 3 octets mais ce n'est pas le cas général, et certains cas assez communs font exception à la règle.
Le tableau suivant résume le format et le contenu des principaux types de message MIDI.


Résumé des messages MIDI
Message Statut Données 1 Données 2
Messages de canal
Note off &8n Numéro de note Vélocité
Note on &9n Numéro de note Vélocité
Aftertouch polyphonique &An Numéro de note Pression
Changement de contrôle &Bn Numéro de contrôleur Données
Changement de programme &Cn Numéro du programme .
Aftertouch de canal &Dn Pression .
Roue de hauteur &En LSbyte
(octet de poids faible)
MSbyte
(octet de poids fort)
Système exclusif
Début &F0 ID de constructeur Octets de données
Fin &F7 . .
Système commun
Quart de trame (MTC) &F1 Données .
Pointeur du morceau &F2 LSbyte MSbyte
Sélection du morceau &F3 Numéro du morceau .
Ordre d'accordage &F6 . .
Système temps réel
Horloge &F8 . .
Début &FA . .
Continuer &FB . .
Stop &FC . .
Senseur actif &FE . .
Réinitialisation &FF . .


Retour haut de la page


Interfaces MIDI


Afin d'utiliser un ordinateur comme contrôleur central dans un système MIDI, il faut disposer d'une interface MIDI. Chaque interface MIDI possède au moins un port IN et un port OUT. Le port THRU n'est pas toujours nécessaire.

Interfaces MIDI à port unique

Une interface MIDI à port unique est généralement connectée sur l'un des ports d'Entrées/Sorties de l'ordinateur ou enfichée sur un slot d'extension.

Sur Macintosh, quel que soit le logiciel utilisé, l'utilisateur doit configurer les ports séries (port et vitesse d'horloge). Les données sérielles qui se présentent au IN de l'interface sont alors converties en format électrique pseudo-RS-422 et présentées au port série de l'ordinateur pour être traitées comme n'importe quel autre type de données sérielles externes. Les données sérielles sortantes sont quant à elles converties sous la forme électrique MIDI (boucle à 5mA).

Sur PC, les routines DOS et BIOS limitent les communications sérielles à 9600 bauds, ce qui oblige les développeurs à écrire directement dans les ports séries. Mais dans les spécifications, si les ports séries étaient censés supporter un débit suffisamment élevé pour supporter du MIDI, dans les faits ce n'était pas toujours le cas.
Le japonais Roland a donc développé une interface appelée MPU-401 dotée d'un microprocesseur capable de supporter l'essentiel des tâches du MIDI (transmission et réception des données, synchronisation). Cette interface est devenue un standard sur PC. Cette interface a été remplacée par la MPU-IPC, et il existe aussi une carte d'extension IBM PS/2.
Les PC modernes disposant d'interfaces sérielles dotées d'un débit suffisant pour le MIDI, ils ne sont pas capables de travailler au taux précis de 31.25 kbauds. Du coup certaines interfaces se connectent au port série et convertissent le débit sériel du PC (39.4 kbauds) en débit MIDI grâce à des mémoires tampon et d'un contrôle des flux de données. Les données MIDI doivent être routées directement vers le port série.
Autre solution : installer une carte non compatible MPU-401 pilotant une interface MIDI. L'installation d'un driver est obligatoire pour adresser l'interface.

Interfaces multiports

Ces interfaces ont pour but de permettre d'adresser plus de 16 canaux. Elles permettent aussi de limiter la quantité de données qui circulent sur un même port pour éviter les surcharges et retards.

L'approche la plus simple est de disposer de deux ports séries identiques et interchangeables. On peut soit connecter une interface sur chacun des ports, soit se munir d'une interface disposant d'un port THRU qui permet de faire transiter de façon transparente les données d'une autre interface.

Sinon il faut utiliser une interface MIDI externe dotée d'un certain nombre de ports MIDI OUT. La connexion se fait à l'ordinateur hôte soit sur port parallèle, soir sur une carte d'extension. L'interface distribue les données entre les ports de sortie et les transmet au débit MIDI normal.
Généralement, 16 canaux sont adressables sur chaque MIDI OUT. Avec de tels systèmes, il est courant de connecter chaque instrument à son propre port.

Retour haut de la page


Systèmes d'exploitation MIDI


Dans le but d'optimiser la gestion des données MIDI, certains constructeur ont conçus des extensions spécifiques du système d'exploitation de l'ordinateur.
Ces extensions opèrent en tâchent de fond et n'interfèrent pas avec le fonctionnement normal de l'ordinateur. Elles sont capables de conserver la configuration MIDI de l'utilisateur, d'effectuer des filtrages et de traitement de données MIDI, de synchroniser plusieurs applications MIDI et d'optimiser le flot de données MIDI.
L'OMS (Opcode Music System) intervient comme intégrateur système. (on le trouve avec Apple Quicktime). L'OMS permet à l'utilisateur de construire une représentation graphique des connexions MIDI physiques de son studio.

Retour haut de la page


Fichiers MIDI standards


Les séquenceurs MIDI stockent généralement leurs fichiers dans un format propriétaire et la compatibilité directe entre logiciels est assez rare. Pour cette raison, un fichier MIDI standard a été développé et adopté par l'industrie.
Ce standard permet non seulement l'échange de fichiers entre logiciels, mais aussi entre plate-formes et systèmes d'exploitation différents. Les divers constructeurs du marché le supportent en addition de leur propre format.
Ce format standard se décline en trois types :
  • Le type dit 0 est le plus simple. Il est exploité pour les données enregistrées sur une piste unique.
  • Le type 1 supporte les pistes multiple et synchrones (pistes d'une même chanson).
  • Le type 2 supporte les pistes multiples qui n'ont pas nécessairement de lien temporel (asynchrone). Il est utilisé pour transférer un fichier composé de séquences distinctes, chacune d'entre elles ayant une structure multipistes.


  • Le format de fichier de base est composé de mots de 8 bits séquencés en "troncs". L'entête (header), par lequel un fichier MIDI débute invariablement, contient des informations générales se rapportant à l'ensemble du fichier, alors que les autres entêtes contiennent les données d'évènements MIDI se rapportant aux pistes individuelles.
    Les données de pistes doivent être distinguées des données de canal, puisqu'une piste peut adresser plus d'un seul canal MIDI. Chaque entête est précédée d'un préambule (4 octets == 4 caractères ASCII) qui lui est propre, lequel spécifie le type d'entête (header ou piste), ainsi que sa longueur, le nombre d'octets de données qu'il contient (sans la longueur du préambule toujours égale à 8 octets). Suivent les octets de données.

    Format général de l'entête d'un fichier MIDI
    Format général de l'entête d'un fichier MIDI


    Après les 8 octets du préambule suivent normalement 6 octets contenant les données de l'entête. Ces 6 octets doivent être considérés comme trois mots de 16 bits.
  • Le premier, dit "format", définit le type de fichier (0, 1 ou 2).
  • Le second, dit "ntrks", définit le nombre de troncs de piste du fichier.
  • Le troisième, dit "division" indique que les événements seront représentés en incrémentant de temps "musicaux" valant un certain nombre de divisions par noire. Un 1 au même endroit indique que les événements seront représentés en incrément du temps "réel"


  • Tronc de l'entête 'header'
    Tronc de l'entête 'header'


    Tronc de piste
    Tronc de piste'


    L'entête est suivie par un certain nombre de troncs de piste qui dépend du type de fichier et du nombre de piste. Le type 0 n'en comporte qu'un seul.
    Les troncs de piste contiennent des chaînes d'événements MIDI, chaque événement étant accompagné de sa position temporelle relativement à l'événement précédent (delta t) par opposition au temps absolu écoulé depuis le début du morceau.
    Les valeurs temporelles delta sont représentées en "format à longueur variable". Ce format constitue un moyen de représenter les nombres hexadécimaux jusqu'à &0FFFFFFF de façon aussi compacte que possible.
    Les nombres en question sont représentés par un, deux, trois ou quatre octets selon leur longueur. Chaque octet de la valeur en longueur variable a son dernier bit fixé à 1, à l'exception du dernier qui est fixé à 0.

    Retour haut de la page


    General MIDI


    Le système general MIDI a été développé pour s'assurer que les séquences écrites en respect de ce standard sont toujours rejouées avec les bons sons quel que soit le générateur de sons utilisé. Il s'agit donc d'un ensemble de sons auxquels les mêmes numéraux de programme sont toujours affectés par convention.


    Numéros de programme en General MIDI
    Changement de programme Son
    0-7 Piano
    8-15 Percussions chromatiques
    16-23 Orgue
    24-31 Guitare
    32-39 Basse
    40-47 Cordes
    48-55 Ensemble (voix)
    56-63 Cuivres
    64-71 Instruments à anche
    72-79 Flûtes
    80-87 Synthétiseurs principaux
    88-95 Synthétiseurs assourdis
    96-103 Synthétiseurs effets
    104-111 Instruments ethniques
    112-119 Percussions
    121-128 Effets sonores


    Le General MIDI va au-delà de la standardisation des sons. Il spécifie, par exemple, un degré minimal de polyphonie et exige du générateur de sons qu'il soit à même de recevoir des données MIDI sur les 16 canaux simultanément.
    Il est également spécifié que les sons de percussions doivent être regroupés en kits de batterie afin d'être toujours adressés correctement (ex : claque des mains == touche 39).

    Retour haut de la page


    MIDI TimeCode (MTC)


    Le MIDI TimeCode (MTC) est très exploité comme moyen de synchroniser des équipements contrôlés par MIDI avec une véritable référence temporelle. Les interfaces MIDI multiports disposent généralement d'un port de timecode SMPTE/EBU qui permet de lire et d'écrire du timecode longitudinal (LTC). Le LTC est converti en MTC et peut ainsi être géré par un logiciel MIDI.

    Dans une trame de timecode LTC, deux groupes de données binaires sont alloués aux heures, minutes, secondes et images, ces groupes représentant respectivement les dizaines et les unités de chaque section, ce qui donne au total huit groupes binaires. Ce format doit être converti en un format compatible avec les autres données MIDI (octet de statut suivi par les octets de données).
    Il existe deux types de message de synchronisation MTC :
  • Le premier (full-frame) met à jour le récepteur régulièrement. Il est transmis sous la forme d'un message en système exclusif universel en temps réel.
  • Le second (quarter-frame) met à jour la position du timecode en une fois, dans des situations comme l'avance rapide. Il est dénoté par l'octet de statut (&1F).


  • Comme une trame de timecode comporte trop d'informations pour pouvoir être transmise sous la forme standard du message MIDI à 3 octets. Elle est donc tronçonnées en 8 messages séparées (quarter-frame). Quatre de ces message sont transmis à chaque trame de timecode afin de limiter le taux de transmission. Chaque message du groupe de huit représente une partie de la valeur du timecode et prend la forme générale : & [F1] [ Données].

    Format général d'un message MTC en quarter-frame
    Format général d'un message MTC en quarter-frame

    Retour haut de la page


    MIDI Machine Control (MMC)

    Le MIDI peut être utilisé pour contrôler des machines de studio à distance. Le MMC, MIDI Machine Control est appelé également contrôle de machine par protocole MIDI.
    Le MMC peut fonctionner à divers niveaux de complexité et la communication et possible en modes de boucle fermée ou ouverte, ce qui laisse un grande liberté aux développeurs.
    Le MMC peut-être utilisé simplement pour contrôler les onctions de transport de base d'un magnétophone, auquel cas l'implantation d'un set limité de commandes suffit, et une approche en boucle ouverte peut tout à fait convenir (envoi des fonctions play, stop, rewind, ...).

    Retour haut de la page


    Echantillonnage de sons et synthèse sur ordinateur

    Il existe un grand nombre de cartes son dotées de sortie stéréo. De plus, un nombre croissant d'ordinateurs sont dotés en standard de générateur de sons.
    Ces générateurs peuvent être contrôlés par l'équivalent en interne du contrôle MIDI, même s'ils ne peuvent en fait être contrôlés par l'intermédiaire d'une interface MIDI standard. Le général MIDI est très exploité car il permet aux fichiers MIDI d'être rejoués de la même manière quel que soit l'ordinateur ou la carte son utilisée. Windows et MacOS exploitent des approchent semblables au General MDI pour la synthèse sonore dédiée aux applications multimédias.
    Deux approches existent pour la génération de sons synthétiques :
  • La synthèse FM (Frequency Modulation).
  • La synthèse à table d'ondes.


  • Synthèse FM

    La synthèse FM est due à John Chowninget a été développée par Yamaha.
    La fréquence d'un oscillateur (ou opérateur) est modulée par un autre oscillateur, voire plusieurs d'oscillateurs. Le résultat de cette modulation de fréquences est la création d'un ensemble complexe de bandes secondaires autour de la fréquence fondamentale du dernier oscillateur de la chaîne.
    Même si la synthèse FM constitue un moyen pratique de produire des sons synthétiques nouveaux, il n'est pas toujours facile d'en prédire le résultat ou d'obtenir la première fois le résultat désiré.

    Synthèse à table d'ondes

    La synthèse à table d'onde est plus prévisible car elle implique de petites portions de sons échantillonnés et stockés en mémoire. A la relecture, les échantillons sont extraits de la mémoire. On fait appel à une lecture à taux variables et au filtrage numérique pour transformer la hauteur et le timbre.
    Par une technique de bouclage, on peut rallonger ou faire durer indéfiniment de courts segments stockés. Des générateurs d'enveloppe permettent de modifier les caractéristiques de la sortie sur toute la durée de chaque note : Attack, Sustain, Decay et Release.


    Retour haut de la page





    Dernière mise à jour le 5 décembre 2001.
    Réalisée par Matthieu Guenebaud.