| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| midi [Le 06/09/2024, 15:36] – liens internes / corrections / + MIDI 2.0 + PipeWire krodelabestiole | midi [Le 07/07/2026, 08:59] (Version actuelle) – [Synthèse logicielle] liens FluidSynth | 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éristique 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 ===== |
| |
| <note tip>Les //SoundFonts// fonctionnent très bien en particulier avec les orgues et les instruments percussifs (dont le piano fait partie).</note> | <note tip>Les //SoundFonts// fonctionnent très bien en particulier avec les orgues et les instruments percussifs (dont le piano fait partie).</note> |
| <note>Les fichier ''.sfArk'' sont des //SoundFonts// compressées dans un format propriétaire. [https://github.com/raboof/sfarkxtc|sfarkxtc]] permet de les décompresser en [[:terminal|ligne de commande]] sur Linux.</note> | <note>Les fichier ''.sfArk'' sont des //SoundFonts// compressées dans un format propriétaire. [[https://github.com/raboof/sfarkxtc|sfarkxtc]] permet de les décompresser en [[:terminal|ligne de commande]] sur Linux.</note> |
| <note>Pour jouer une //SoundFont// avec un [[:controleurs_midi|contrôleur MIDI]], vous pouvez suivre [[:tutoriel:piano_midi|ce tutoriel]].</note> | <note>Pour jouer une //SoundFont// avec un [[:controleurs_midi|contrôleur MIDI]], vous pouvez suivre [[:tutoriel:piano_midi|ce tutoriel]].</note> |
| |
| ==== Synthèse logicielle ==== | ==== Synthèse logicielle ==== |
| |
| Il existe 3 principaux lecteurs de //SoundFont// sous Ubuntu : **[[:Timidity]]**, **Fluidsynth** (et ses dérivés) et **[[:LinuxSampler]]**. | Il existe 3 principaux lecteurs de //SoundFont// sous Ubuntu : **[[:Timidity]]**, **[[wpfr>FluidSynth]]**(([[https://github.com/fluidsynth/fluidsynth|GitHub]])) (et ses dérivés) et **[[:LinuxSampler]]**. |
| |
| Pour simplement lire un fichier MIDI, le plus simple est probablement d'installer **Fluidsynth** avec une SoundFont General MIDI : | Pour simplement lire un fichier MIDI, le plus simple est probablement d'installer **FluidSynth** avec une SoundFont General 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 choisir ''[[:pulseaudio]]'', ''[[:alsa]]'', ''[[:oss4|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. | Entrez ''quit'' pour arrêter la lecture, vous pouvez aussi presser ''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 souvent installer et configurer une extension (voir [[https://redmine.audacious-media-player.org/boards/1/topics/1143|ici]] pour Audacious).\\ |
| La plupart du temps ces extensions font également appel à **[[:Timidity]]** ou à **Fluidsynth** pour fonctionner. Il faut donc dans tous les cas installer les paquets nécessaires au préalable. | La plupart du temps ces extensions font aussi appel à **[[:Timidity]]** ou à **[[https://www.fluidsynth.org/|FluidSynth]]** pour fonctionner. Il faut donc dans tous les cas [[:deb#installer_un_paquet_deb|installer les paquets]] nécessaires au préalable. |
| |
| ==== Convertir un fichier MIDI en fichier audio ==== | ==== Convertir un fichier MIDI en fichier audio ==== |
| 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. |
| |