dimanche 8 juillet 2012

Le MIDI sous linux: explications


Pour accéder à la Liste des articles de ce blog c'est par ici

Bonjour,

aujourd'hui je vous propose un billet expliquant les bases du MIDI sous linux (commandes testées sous Ubuntu 12.04).

Tout d'abord qu'est-ce que c'est que la norme MIDI ?

MIDI est l'acronyme de "Musical Instrument Digital Interface".
C'est un protocole de communication et de commandes permettant l’échange de données entre instruments de musique électronique, un ou plusieurs de ces « instruments » pouvant être des ordinateurs (lien wikipedia).

Ce protocole ne véhicule aucune forme d'ondes et se "contente" de transporter les paramètres nécessaires à la génération du son par un synthétiseur (les notes, les effets sur les notes ...). Un système de message exclusive (sysEx) est proposé par la norme permettant aux développeurs de matériel et logicielles de proposer des fonctions MIDI spécifiques à leurs matériels.

Je n'ai pas de son avec mon application MIDI ...

Les applications utilisant la norme MIDI (autre que des synthétiseurs) ne génèrent pas de son.

En effet, elles nécessitent l'utilisation d'un synthétiseur matériel ou logiciel qui générera le son en fonction des données MIDI.

Chaque application ou périphérique MIDI (c-à-d un client MIDI) sous Linux  définit un ou plusieurs port(s) MIDI.
Un client MIDI peut être en écriture, on  parle alors de ports d'entrées (Input Midi port).
Un client MIDI peut également être en lecture, on parle alors de ports de sorties (Output Midi port).

En établissant des liaisons entre les ports de ses applications, celles-ci communiquent des données MIDI entre elles.

Installer un synthétiseur logiciel

Pour générer du son à partir d'une application MIDI, soit vous utilisez un synthétiseur matériel soit un synthétiseur logicielle comme fluidsynth ou timidity. Pour obtenir du son, il suffit alors de connecter le port de sortie de votre application MIDI au port d'entrée du synthétiseur logicielle. (voir l'article sur fluidsynth). Biensûr, votre synthétiseur logiciel doit être démarré afin que le logiciel puisse le proposer dans ces préférences MIDI.

Astuce: Démarrer votre synthétiseur logiciel avant votre application (Impro-visor, Tuxguitar, EarMaster ...). Certaines applications ne réactualisent pas les ports MIDI disponibles: ils sont calculés une fois pour toute au démarrage de l'application.
Astuce: Les applications java nécessitent une configuration spéciale pour pouvoir être connectées à un synthétiseur logiciel autre que java (voir l'article sur les ports virtuels).
Astuce: Pour tester si votre synthétiseur logiciel fonctionne, vous pouvez utiliser pmidi pour lui envoyer  un fichier midi à jouer.
Pour installer l'utilitaire pmidi:
~$ sudo apt-get install pmidi
Pour tester le synthétiseur avec votre fichier midi:
~$ pmidi -p 130:0 fichier.mid
Remplacer 130:0 par le port de votre synthétiseur (voir plus bas).

Connecter des applications MIDI 

Sous Linux, il existe deux drivers MIDI: ALSA et JACK. Je développerai l'utilisation du serveur MIDI ALSA ci-après. Cependant, l'utilisation du driver JACK est basée sur le même principe.

qjackctl (de façon graphique)

La façon la plus simple pour connecter des applications MIDI entre elles est d'utiliser l'outils graphique qjackctl. Pour installer ce logiciel:
~$ sudo apt-get install qjackctl
Démarrer l'application,
~$ qjackctl
et cliquer sur le bouton "Connecter".



Puis aller directement à l'onglet ALSA. Cet onglet vous propose l'ensemble des périphériques et applications MIDI disponibles. Une colonne propose les ports en entrées et l'autre colonne propose les ports en sorties.

Pour établir la communication entre un port d'entrée à un port de sortie, il suffit de sélectionner le port d'entrée désiré puis le port de sortie désiré et enfin de cliquer sur le bouton "Connecter".


aconnect (en ligne de commande)

On peut également le faire en ligne de commande grâce à aconnect.

Pour connaître les ports d'entrées:
~$ aconnect -il
Pour connaître les ports de sorties:
~$ aconnect -ol
Pour connecter deux ports:
~$ aconnect 17:0 130:0
Pour déconnecter deux ports:
~$ aconnect -d 17:0 130:0


Conclusion

J'espère que cet article vous aura aidé à y voir plus clair sur la configuration de vos applications MIDI.

Aucun commentaire:

Enregistrer un commentaire