| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| midi [Le 06/09/2024, 15:40] – [Spécification] krodelabestiole | midi [Le 24/04/2026, 15:58] (Version actuelle) – [Implémentation du MIDI sous Linux] liens internes | détails krodelabestiole |
|---|
| * 128 **//control changes//** (commandes de modulation) aussi sur 128 pas. On peut contrôler tous types de paramètres : volume, panoramique, //pitch bend//, paramètre d'un effet, etc. | * 128 **//control changes//** (commandes de modulation) aussi sur 128 pas. On peut contrôler tous types de paramètres : volume, panoramique, //pitch bend//, paramètre d'un effet, etc. |
| * la **synchronisation**, afin de déclencher toutes les machines (principalement les séquenceurs) en même temps et de les garder synchronisés et les arrêter. | * la **synchronisation**, afin de déclencher toutes les machines (principalement les séquenceurs) en même temps et de les garder synchronisés et les arrêter. |
| * 128 **//program changes//** (changements de programme) pour changer de son en selectionnant différents //presets// ou instruments… | * 128 **//program changes//** (changements de programme) pour changer de son en sélectionnant différents //presets// ou instruments… |
| * l'**//after-touch//** qui permet avec certains claviers et contrôleurs d'envoyer en continu la force d'appui sur chaque touche pendant qu'elle est jouée | * l'**//after-touch//** qui permet avec certains claviers et contrôleurs d'envoyer en continu la force d'appui sur chaque touche pendant qu'elle est jouée |
| * et d'autres paramètres assez techniques et plus rarement utilisés | * et d'autres paramètres assez techniques et plus rarement utilisés |
| …et le tout sur **16 canaux**. Chaque connexion MIDI permet ainsi de contrôler jusqu'à 16 machines simultanément. | …et le tout sur **16 canaux**. Chaque connexion MIDI permet ainsi de contrôler jusqu'à 16 machines simultanément. |
| |
| <note>Toutes ces caractéristiques sont revues (très) à la hausse avec l'arrivée en 2020 du [[[[:https://midi.org/midi-2-0MIDI 2.0]] : chaque message passant de 7 bit à 32 bit, mais son implémentation est encore loin d'être universelle.</note> | <note>Toutes ces caractéristiques sont revues (très) à la hausse avec l'arrivée en 2020 du [[https://midi.org/midi-2-0|MIDI 2.0]], chaque message passant de 7 bit à 32 bit, mais son implémentation est encore loin d'être universelle.</note> |
| |
| Par extension on a développé la norme **[[https://fr.wikipedia.org/wiki/General_MIDI|General MIDI]]** qui attribue à 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).\\ | Par extension on a développé la norme **[[https://fr.wikipedia.org/wiki/General_MIDI|General MIDI]]** qui attribue à 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).\\ |
| ===== Implémentation du MIDI sous Linux ===== | ===== 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. | Sous Linux, c'est le [[:audio#les_serveurs_de_sons|serveur de son]] qui s'occupe de router les signaux MIDI entre les applications et les pilotes 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).\\ | * [[:ALSA]] propose une très bonne solution multimédia, et il est disponible de base sur quasiment toutes les [[:distributions]] Linux (et évidemment sur Ubuntu). |
| Pour de la [[:MAO]] on peut aussi utiliser [[:jackd|JACK]], qui permet aussi de router le MIDI. Il est (//était ?//) possible d'utiliser ensemble le MIDI //ALSA// et le MIDI //JACK// au moyen du bridge [[apt>a2jmidid]] qui s'occupe de les relier. | * Pour de la [[:MAO]] on peut aussi utiliser [[:jackd|JACK]], qui permet aussi de router le MIDI. |
| La question ne se pose plus grâce à [[:PipeWire]], qui gère les deux protocoles. | Il est (//était ?//) possible d'utiliser ensemble le MIDI //[[:ALSA]]// et le MIDI //[[:jackd|JACK]]// au moyen du bridge [[apt>a2jmidid]] qui s'occupe de les relier. |
| | * La question ne se pose plus grâce à [[:PipeWire]], qui gère les deux protocoles (et qui est installé par défaut). |
| |
| En plus de ceux des interfaces audio, ALSA fournit les pilotes des interfaces MIDI. Une fois branchée, un rapide <code>aplaymidi -l</code> devrait donc vous indiquer si votre interface MIDI est reconnue ou non. | En plus de ceux des interfaces audio, [[:ALSA]] fournit les pilotes des interfaces MIDI. Une fois branchée, un rapide <code>aplaymidi -l</code> devrait donc vous indiquer si votre interface MIDI est reconnue ou non. |
| |
| ===== Lecture de fichiers MIDI ===== | ===== Lecture de fichiers MIDI ===== |
| <code>sudo apt install fluidsynth fluid-soundfont-gm</code> | <code>sudo apt install fluidsynth fluid-soundfont-gm</code> |
| Vous pouvez ensuite lire votre fichier MIDI en lançant : | Vous pouvez ensuite lire votre fichier MIDI en lançant : |
| <code>fluidsynth -a pulseaudio /usr/share/sounds/sf2/FluidR3_GM.sf2 fichier_midi.mid</code> | <code>fluidsynth -a pipewire /usr/share/sounds/sf2/FluidR3_GM.sf2 fichier_midi.mid</code> |
| (Remplacez "fichier_midi.mid" par le nom de votre fichier MIDI.) | (Remplacez ''fichier_midi.mid'' par le nom de votre fichier MIDI.) |
| Dans ce cas on utilise le serveur de son **[[:pulseaudio]]**, utilisé par ubuntu par défaut. On peut aussi utiliser **alsa**, **oss** ou **[[:jackd|jack]]**.\\ | Dans ce cas on utilise le serveur de son **[[:pipewire]]**, utilisé par Ubuntu par défaut. On peut aussi utiliser ''[[:pulseaudio]]'', ''alsa'', ''oss'' ou ''[[:jackd|jack]]''.\\ |
| Tapez "quit" pour arrêter la lecture, vous pouvez aussi taper Ctrl + C ou simplement fermer la fenêtre du terminal. | Tapez ''quit'' pour arrêter la lecture, vous pouvez aussi taper ''Ctrl'' + ''C'' ou simplement fermer la fenêtre du terminal. |
| |
| Certains [[:lecteur_audio|lecteurs audio]] comme [[:Audacious]] permettent de lire les fichiers MIDI. Pour cela il faut généralement installer et configurer des plugins (voir [[https://redmine.audacious-media-player.org/boards/1/topics/1143|ici]] pour Audacious).\\ | Certains [[:lecteur_audio|lecteurs audio]] comme [[:Audacious]] permettent de lire les fichiers MIDI. Pour cela il faut généralement installer et configurer des plugins (voir [[https://redmine.audacious-media-player.org/boards/1/topics/1143|ici]] pour Audacious).\\ |
| Vous pouvez ensuite effectuer la conversion en lançant : | Vous pouvez ensuite effectuer la conversion en lançant : |
| <code>fluidsynth -F fichier_audio.wav /usr/share/sounds/sf2/FluidR3_GM.sf2 fichier_midi.mid</code> | <code>fluidsynth -F fichier_audio.wav /usr/share/sounds/sf2/FluidR3_GM.sf2 fichier_midi.mid</code> |
| (Remplacez "fichier_midi.mid" par le nom de votre fichier MIDI.) | (Remplacez ''fichier_midi.mid'' par le nom de votre fichier MIDI.) |
| Vous obtiendrez ainsi un fichier audio que vous pourrez écouter facilement avec n'importe quel lecteur multimédia. | Vous obtiendrez ainsi un fichier audio que vous pourrez écouter facilement avec n'importe quel lecteur multimédia. |
| |