Contenu | Rechercher | Menus

MIDI

Vous trouverez une excellente documentation concernant le protocole MIDI en français sur LinuxMAO.

MIDI, General MIDI et fichiers MIDI

Le MIDI est un protocole permettant à des logiciels ou des machines dédiées à la musique de communiquer entre elles.
Il permet par exemple de faire jouer un son à un synthétiseur ou à un sampleur lorsqu'on appuie sur une note d'un clavier.
Le MIDI trouve son application aussi bien dans le monde matériel (via des cable spécifiques, les cables MIDI), que dans le monde virtuel (via des "ports" ou "bus" logiciels).

Chaque connexion MIDI permet de contrôler jusqu'à 16 machines simultanément. Le protocole prévoit en effet l'utilisation de 16 canaux.

Il est possible de créer des séquences MIDI qui permettent d'organiser le déclenchement d'événements dans le temps.
Cela ressemble donc à une partition traditionnelle : certains logiciels proposent d'ailleurs d'éditer ces séquences sous forme de partition. Cependant ces partitions sont plus facilement lisibles par des machines que par des humains.
On peut enregistrer ces séquences sous forme de fichiers MIDI (avec l'extension .mid). Ces fichiers ne contiennent donc pas de son, mais seulement une série d'instructions destinées à des machines, ce qui est beaucoup plus léger.

Par extension on a développé la norme General MIDI qui attribut à chaque "programme" MIDI un instrument précis (par ex. le piano en 1 et la batterie sur la canal 10). La plupart des fichiers MIDI qu'on peut trouver en ligne respectent cette nomenclature (en version 1 : GM1 ou 2 : GM2).
Cette solution avait surtout son intérêt dans les années 90, quand les espaces de stockage était trop limités pour des format wav ou mp3 : cela permettait de lire n'importe quel orchestration avec les moyens du bord. En général les cartes son intégraient un synthétiseur qui s'attelait à la tâche du rendu audio avec plus ou moins de succès (pour les oreilles).

Dans le monde de la MAO, rien n'oblige cependant à suivre la norme General MIDI.

Implémentation du MIDI sous Linux

Sous Linux, c'est le serveur de son qui s'occupe de router les signaux MIDI entre les applications et les drivers des interfaces.
ALSA propose une très bonne solution multimédia, et il est disponible de base sur quasi toutes les distributions Linux (et évidemment sur Ubuntu).
Pour de la MAO on utilisera plutôt Jack.

Il est possible d'utiliser ensemble le MIDI ALSA et le MIDI Jack au moyen du bridge a2jmidid qui s'occupera de les relier.

En plus du serveur de son ALSA fournit aussi les drivers de tout ce qui tourne autour du son sur Linux, MIDI y compris. Une fois branchée, un rapide

aplaymidi -l

devrait donc vous indiquer si votre interface MIDI est reconnue ou non.

Lecture de fichiers MIDI

Vous pouvez lire un fichier MIDI de plusieurs façons selon votre matériel :

  1. via un synthétiseur logiciel (cas le plus courant, c'est ce qui se fait sous Windows d'ailleurs…)
  2. via le synthétiseur intégré dans votre carte son si vous possédez une carte son gérant nativement le General MIDI.
  3. via un instrument externe (synthétiseur, expandeur ou sampleur) connecté à une interface MIDI (carte son ou interface dédiée).

Synthèse logicielle

La norme General MIDI associe aux signaux MIDI des instruments acoustiques la plupart du temps. Pour qu'une machine puisse reproduire assez fidèlement le son de ces instruments, il est généralement indiqué d'utiliser des banques de samples. Ce sont des assemblages de courts enregistrements audio de chaque note d'un instrument de musique. Ces banques de sample se trouvent au format SoundFont (des fichiers avec extensions .sbk puis .sf2). Pour utiliser une SoundFont il faut un lecteur de SoundFont (il s'agit donc d'un "sampler", ou "sample player").

Il existe 3 principaux lecteurs de SoundFont sous Ubuntu : Timidity, Fluidsynth (et ses dérivés) et LinuxSampler.

Synthétiseur intégré à la carte son

Certaines cartes sons contiennent une implémentation matérielle du MIDI. Il y a les cartes incorporant un synthétiseur FM (toutes les Soundblaster 16 et compatibles) qui donne des sons de très basse qualité. Pour faire de la musique, on ne devrait utiliser que les cartes travaillant avec une banque d'échantillons sonores. Cela signifie qu'elles s'occupent de décoder un fichier au format MIDI et de le jouer, et utilisent par défaut les sons MIDI de la carte mère, voire leurs propres sons. En général, on utilisera avec ces cartes sons une bibliothèque de son midi, appelée soundfont, pour une meilleure qualité sonore.

Si votre carte son contient nativement un tel « synthétiseur MIDI » il est recommandé de l'utiliser. Les instructions suivantes vous indiquent comment l'utiliser, en combinaison avec un soundfont.

Cartes compatibles

Liste non exhaustive de cartes sons offrant une implémentation matérielle de MIDI :

  • Sound Blaster AWE32 ;
  • Sound Blaster AWE64 ;
  • Sound Blaster PCI512 ;
  • Sound Blaster Live! ;
  • E-mu Audio Production Studio (APS) ;
  • Creative ProdiKeys MIDI Keyboard ;
  • Sound Blaster Audigy ;
  • Sound Blaster Audigy 2 (dont la version ZS PCMCIA pour ordinateurs portables) ;
  • Sound Blaster Extigy USB ;
  • Sound Blaster X-Fi.

Liste non exhaustive de cartes sons n'offrant qu'une synthèse FM matérielle de MIDI :

  • Sound Blaster 8 ;
  • Sound Blaster Pro ;
  • Sound Blaster 16.

Dans le cas des cartes MIDI FM, il faut activer le pilote ALSA OPL3 dans /etc/modules :

snd-sb16 #Pour une soundblaster 16
snd-seq  #Pilote OPL3

Et s'assurer d'avoir chargé la table FM en ajoutant cette ligne dans /etc/rc.local (avant la ligne exit 0) :

sbiload -p 65:0 --opl3 /usr/share/sounds/opl3/std.o3 /usr/share/sounds/opl3/drums.o3

Pré-requis

Installer les paquets nécessaires

Via Synaptic, recherchez et installez les paquets awesfx et pmidi.

En ligne de commande :

sudo apt-get install awesfx pmidi

Chargement du soundfont

Dans l'optique d'une implémentation matérielle de MIDI, nous avons besoin d'un soundfont. Il s'agit grossièrement une bibliothèque de sonorités MIDI utilisée par la carte son.

Procurez-vous donc un soundfont quelconque. Wikipédia propose par exemple quelques liens intéressants pour en trouver.

Vous pouvez télécharger :

- le soundfont Unison, très répandu et de bonne qualité :

wget ftp://ftp.personalcopy.net/pub/Unison.sf2.gz

L'extraire, créer un dossier approprié (par exemple /etc/sound), puis le déplacer dans ce nouveau dossier :

gunzip Unison.sf2.gz
sudo mkdir /etc/sound/
sudo mv Unison.sf2 /etc/sound/

- le soundfont Crisis 1.8, moins répandu et plus lourd, mais d'excellente qualité (pour les audiophiles) :

Aller sur le site de Crisis, dans 'Download', puis télécharger la soundfont au format rar ( installez le support rar a file-roller si nécessaire ) :

sudo apt-get install unrar

Il faut ensuite décompresser le fichier sf2 avec SFArk et procéder comme précédemment .

Tout d'abord, testons si cela fonctionne.

Pour charger le soundfont une fois, exécutez la commande :

sfxload /etc/sound/Unison.sf2
ou bien sfxload /etc/sound/crisis18.sf2

Tapez :

pmidi -l

Cette commande devrait vous donner une réponse du style :

Port Client name Port name
64:0 External MIDI 0 MIDI 0-0
65:0 Emu10k1 WaveTable Emu10k1 Port 0
65:1 Emu10k1 WaveTable Emu10k1 Port 1
65:2 Emu10k1 WaveTable Emu10k1 Port 2
65:3 Emu10k1 WaveTable Emu10k1 Port 3

Il s'agit des différents ports utilisables pour jouer du MIDI.

Pour jouer un fichier MIDI, faites :

pmidi -p 65:0 unfichier.mid

ou

aplaymidi -p 65:0 unfichier.mid

Voilà, vous devriez désormais entendre quelque chose !

Ensuite, allez dans Système/Préférences/Sessions, cliquez sur +Ajouter. Entrez la commande sfxload tel que décrite plus haut, nommez-la, validez et fermez. La Soundfont devrait dorénavant être chargé au démarrage de la session et permettre de jouer instantannément vos fichiers midi.

Ressources

Liens

Sources

Voir aussi

  • wine_et_midi - comment lancer une application Win32 utilisant le midi ?

Contributeurs : Vicks, jd, Raphaël Doursenaud, Grobs.



Le contenu de ce wiki est sous licence : CC BY-SA v3.0