Le MIDI est une appellation très connue dans le domaine de l’informatique musicale qui désigne plusieurs éléments techniques :
– un format de fichier de sons et de musiques (les mélodies 8 bits sous DOS ou Windows 3.1 avec Beethoven ou Mozart, et bien sûr les musiques de jeux vidéos, Super Mario, etc...)
– un port de connexion (en fait, du DIN 5 broches) rond et noir avec des trous métalliques côté femelle
– un protocole d’échange entre instruments numériques
C’est ce dernier qui nous intéresse : plusieurs d’entre nous ont des connaissances en musique, et lorsqu’il s’agit d’échanger des données numériques entre deux dispositifs distants, il leur a été naturel de penser au MIDI.
Et à la réflexion c’est intéressant de savoir générer ou lire des messages dans ce protocole : si l’on est pas sûr de son code, il suffit de brancher un instrument ou un clavier maître MIDI pour "entendre" nos bugs :)
Le protocole
Il existe énormément de documentation concernant le format des messages, les canaux, etc... Nous ne nous y attarderons pas.
L’interface physique
Le MIDI passe au travers d’une interface sérielle à vitesse modérée (31k), donc le port traditionnel DIN peut être connecté à une UART via quelques adaptations d’impédance (résistances).
Mais pour nos premiers tests, nous utiliserons le port USB, tout simplement.
Côté PC
Pour générer des signaux MIDI, on peut utiliser Processing, un environnement de développement en Java fonctionnant sur tout ordinateur, et dont les applications produites peuvent s’exécuter partout : PC, Mac, Androïd, Raspberry Pi !
La bibliothèque utilisée est the midi bus. Le code est très simple et ressemble à la liaison série :
import themidibus.* ;
MidiBus myBus ;
void setup()
size(400,400) ;
background(0) ;
// affiche sur la console la liste de tous les périphériques MIDI disponibles
MidiBus.list() ;
// connecte l’entrée 0 à la sortie 1
myBus = new MidiBus(this, 0, 1) ;
void draw()
// ici on fera appel à myBus pour lire ou écrire sur le bus MIDI.
Côté embarqué
Il existe aussi une bibliothèque pour Arduino : Tutoriel MIDI pour Arduino.
C’est bien, mais nous ne voulons pas modifier la carte pour avoir un port MIDI DIN, mais utiliser la liaison USB série. Une solution simple consiste à utiliser un logiciel qui va convertir côté Linux les messages MIDI reçus sur le port série USB en device MIDI.
C’est là qu’on bénéficie de l’expérience de nos prédécesseurs, comme cet article de EATYone. On y découvre le logiciel de conversion MIDI/USB de Spikenzie Labs.
Et voilà, la suite lors de nos ateliers ou dans les articles dédiés à nos robots, comme Nono.
Vos commentaires
# Le 23 mars 2016 à 02:01, par sarrazit
En réponse à : Le protocole MIDI pour piloter des robots
On peut créer une interface de commande MIDI en javascript avec l’api html5 et utiliser une ancienne console de mixage motorisée pour piloter un robot, ou des potentiomètres motorisés
Répondre à ce message