Skip to main content

Historique: MIDI - Les logiciels

Aperçu de cette version: 73

Présentation de MIDI sous Linux



1. Présentation


Le MIDI (Musical Instrument Digital Interface) a été conçu pour être une interface de contrôle de synthétiseurs par d'autres synthétiseurs (dans un premier temps). Physiquement ce sont des broches DIN à cinq contacts. Contrôle, dans le sens du MIDI, veut dire que lorsqu'on joue quelque chose sur un clavier (ou depuis pleins d'autres dispositifs d'entrée), l'autre clavier suit le jeu du premier.

Donc en première intention, le MIDI transmet l'information sur les notes (hauteur, dynamique de toucher, longueur) à un synthétiseur et lui dit: "joues-moi la même note !". Le MIDI permet à part celà de transmettre une multitude d'autres informations (appelées évènements), comme par exemple un grand nombre de valeurs de contrôleurs (position du ModWheel, Pitchbend, potards, pression sur le clavier) ainsi que des changements d'un preset de synthé (program change), l'information de synchronisation entre séquenceurs (midi clock) ou même la totalité des données d'un patch de synthé (sysex).

Le MIDI est dans le cas de la MAO indispensable pour pouvoir piloter les synthés et séquenceurs virtuels. Souvent, on utilisera un clavier maître ou un contrôleur USB qui transmet la même information que le MIDI sauf que l'interface de bas niveau est basée aujourd'hui sur l'USB.

Dans le système linux, c'est en général ALSA qui prend en charge le flux interne des données MIDI.

Pour consulter quelques rappels rapides sur le protocole MIDI, voir aussi la page MIDI, le glossaire ou la page MIDI du site wikipédia.


2. Jouer/enregistrer avec le MIDI sous Linux


Comme pour presque toutes les applications MAO linux, la base indispensable est le couple Jack / Qjackctl. Si vous ne connaissez pas encore ces deux là, faites un tour sur les pages correspondantes.

Qjackctl permet en effet d'établir une connexion de toutes les applications que ce soit de l'Audio ou du MIDI (connexions graphiques).

2.1. Montage de logiciels pour la composition MIDI

Dans la suite nous donnons quelques exemples de configurations logicielles pour permettre la composition et l'enregistrement de musique en utilisant le MIDI.

Le choix est bien sûr dépendant des sons que l'on souhaite utiliser et des besoins en séquençage, dépendant du style de musique on utilisera des séquenceurs/trackers et synthétiseurs différents.

2.1.1. Qjackctl - Qtractor - ZynaddSubFX - Qsynth - Hydrogen - Alsamodularsynth

Voici un montage relativement complet pour la composition qui utilise divers synthétiseurs virtuels ( ZynaddSubFX, le lecteur d'échantillon fluidsynth avec son interface graphique Qsynth, la boite à rythme avancée Hydrogen et le synthétiseur modulaire AMS (AMS) ). L'ensemble est relié à un controleur MIDI externe ainsi qu'une interface MIDI/Audio UA-25 qui se branchent sur les ports USB sans nécessiter de pilotes dédiés. Les liaisons se font dans Qjackctl, qui permet de relier les différents composants (les différents bus/clients MIDI) dans son onglet ALSA. Le séquenceur/enregistreur Qtractor enregistre les données MIDI transmises par le clavier branché sur l'UA-25 et renvoit les notes enregistrées aux synthés virtuels. Qtractor s'occupe de rétablir les connexions faites auparavant à chaque ouverture d'un projet de composition, pas besoin de retisser toute la toile à chaque fois 😁.

➡️ certaines applications utilisent uniquement Jack pour leur interface MIDI sans passer par ALSA. Aussi, si vous avez une interface MIDI Firewire, elle n'est pas gérée par ALSA. Dans ce cas vous verrez ces composantes apparaître dans l'onglet MIDI, et vous devez vous servir de a2jmidid pour faire le pont entre les deux. Voir la page qjackctl pour plus d'infos.

Image
Image
Image
Image
Image

Image

2.1.2. Qjackctl - Rosegarden - Qsynth – Hydrogen - Rezound

C'est une solution également complète et efficace pour le séquençage MIDI car elle permet d'associer la puissance de connection Midi (via Qjackctl ), l'éditon des événements MIDI (via Rosegarden), le choix fantastique d'une banque de son au format SoundFont (via Qsynth ), des sons de batterie réalistes ( Hydrogen ) et enfin l'édition complète de l'audio avec l'exportation ( Rezound )

  • Lancement
On lance successivement:
Qjackctl (démarrer jack avec Start 😊, Rosegarden, Qsynth, Hydrogen et Rezound


3. Les interfaces, contrôleurs et claviers USB


➡️ voir la page Les surfaces de contrôle.

4. La manette de jeu comme contrôleur


Aseqjoy est un petit programme qui permet de convertir sa manette de jeu en contrôleur midi.
Vous pouvez utiliser qmidiroute avec afin de personnaliser les commandes des touches.

5. Utiliser le port série comme interface MIDI (liaison "To Host")

Voici un moyen d'utiliser la liaison "to host" de certains appareils. Cela consiste à se passer d'interface MIDI dédiée en faisant transiter les données par votre bon vieux port série (COM1, 2 ...)
Cette liaison s'utilise avec des pilotes type CBX (chez yamaha) ou "SERIAL MIDI" (Roland), mais uniquement sur des systèmes d'exploitation propriétaires...🙁

Voici donc comment faire sur notre cher linux

  • Tout d'abord, installer le paquet "setserial"
  • Puis libérer le port série par la commande (en root):
setserial /dev/ttyS0 uart none

  • Ensuite charger le module aproprié comme ceci (en root):
modprobe snd-serial-u16550 port=0x3f8 irq=4 speed=38400

en adaptant la vitesse de transmission à son matériel (ici 38400 bps)

Et le tour est joué!😀
Vous voilà avec une nouvelle entrée/sortie MIDI dans Jack appelée "Serial MIDI (UART16550A)"
Il n'y a plus qu'à connecter le port COM (Sub-D 9 broches) au port "to host" du votre matériel (mini DIN 8 broches) et à positionner le sélecteur To Host sur "PC-2" (chez Yamaha quoi qu'il en soit!).
Voir brochage ici
Un seul cable pour faire transiter les données MIDI dans les deux sens!!! 😎

Remarque vous pouvez mettre ces commandes dans /etc/rc.local pour avoir le port disponible au démarrage.


6. Et si on a pas de port "to host"...

Pour ceux qui n'ont que le MIDI standard et qui aiment bricoler, voici le schéma d'une interface MIDI/port série pas très compliqué, et très peu onéreux!
schéma
schéma

7. Cartes son MIDI équipées de tables d'ondes


Ces cartes ne sont pas forcément les plus recherchées car pas mal de monde utilise de façon préférentielle des séquenceurs logiciels pilotant des synthétiseurs ou des lecteurs virtuels.

Pour chaque piste d'un séquenceur, on peut donc affecter soit un module virtuel synthétique soit un module matériel ou semi matériel basé sur des tables d'ondes.

L'avantage d'utiliser des cartes Sound Blaster par exemple est de pouvoir obtenir une très faible latence car gérée en grande partie par le matériel sans passer par le système d'exploitation (ce qui peut être appréciable avec un ancien ordinateur).

De nombreuses banques sonores peuvent être utilisées, elles sont le plus souvent au format SoundFont (.sf2). Ce format est devenue très populaires suite à la possibilité de pouvoir les créer grâce entre autre à l'éditeur Swami.

Voici quelques cartes son équipées de tables d'ondes / synthétiseurs :
  • Sound Blaster AWE32 / AWE64 (Format ISA)
  • Sound Blaster PCI512
  • Sound Blaster Live!
  • E-mu Audio Production Studio (APS)
  • Sound Blaster Audigy
  • Sound Blaster Audigy 2 (dont la version ZS PCMCIA pour ordinateurs portables)
  • Sound Blaster Extigy USB
  • Sound Blaster X-Fi (compatibilité Linux à vérifier)
  • Guillemot / Hercules Fortissimo 1,2,3,4 - Muse (Format de tables d'ondes propriétaire).

Il vous faut pour les cartes Sound Blaster installer les paquetages suivants :
  • awesfx
  • pmidi

et charger un soundfont par exemple par


Ensuite charger cette fonte par la commande

sfxload Unison.sf2



8. Les fichiers MIDI

8.1. Principe

Le fichier Midi (désigné et défini sous l'appellation MidiFile) représente des évènements (notes, vélocité, durée...), il doit être associé à un générateur sonore (échantillons) pour que l'on puisse le convertir.

Le schéma est donc le suivant :
Fichier Midifile associé à un générateur de sons, enregistrement puis exportation en audio.
Le format audio exporté peut être de type wav, ogg, mp3, flac...

Les fichiers MIDI sont courants sur le net, ils ont une extension .mid. Vous pouvez les jouer ou les écouter sur Linux à condition de disposer d'une carte son.

Les fichiers MIDI ne sont donc que des fichiers explicitant la note qui a été jouée, sa durée, son intensité et autres détails sur une ou plusieurs pistes, mais pour jouer cette note il faut que vous choisissiez l'instrument que vous mettez en face de cette note. Même si votre fichier comprend des informations sur le nom de l'instrument il faut que quelque part vous assignez à cet instrument un son avec sa tessiture, son grain etc. Cette tâche est faite par un lecteur d'échantillons ou un synthétiseur (de type matériel et / ou logiciel).

Certaines cartes sons sont équipées de table d'ondes de type PCM (Pulse Code Modulation) avec éventuellement un module de type synthétiseur, mais la plupart ne le sont pas (surtout les plus récentes, on parle dans ce cas là de carte ou d'interface audio) et il vous faudra utiliser un lecteur d'échantillon ou un synthétiseur logiciel (virtuel).

Enfin il faut savoir que la gestion du MIDI est prise en compte par la couche ALSA.

8.2. Convertir un fichier Midi en Audio ("Lire" un fichier MIDI)


8.2.1. Kmid - un lecteur de fichiers MIDI


Kmid est un lecteur MIDI qui fait également lecteur karaoké.

Image

Kmid lit des fichiers MIDI sortis de Lilypond à Rosegarden, il est compatible ALSA et Jack et il est utilisé pour le karaoké.

Kmid peut être utilisé avec Qsynth pour le choix des instruments ou avec timidity.

8.2.2. Timidity, Fluidsynth et Qsynth


Vous pouvez utiliser plusieurs solutions logicielles de lecteurs d'échantillons:



8.2.3. Qjackctl - Timidity - Time machine

Le plus simple et le plus rapide à mettre en oeuvre sans avoir le choix des sons et réglages approfondis.

Il faut tout d'abord installer Jack et son interface puis on lance QJackctl
Dans une console (ou terminal) on lance Time Machine par la commande:
timemachine -f wav

l'option -f wav permet d'obtenir un fichier audio plus standard (le réglage par défaut est w64 ❗

  • Réglages dans Qjackctl
Onglet Audio
Relier Alsa Pcm à Time Machine

-Lancer Timidity et ouvrir un fichier MidiFile
Cliquer sur Time Machine (le bouton vert devient rouge)
Appuyer sur lecture
à la fin de lecture du fichier re-cliquer sur le bouton Time Machine (qui re-devient vert)
Le fichier est disponible dans /home/

8.2.4. Lire un fichier MIDI avec la commande pmidi dans un terminal

Enfin, la lecture peut être faite également par des commandes envoyées à partir d'un terminal. Certains se demanderont pourquoi expliciter les commandes de bas niveaux et les commandes graphiques. Ces commandes pourront être bien pratiques lorsqu'on veut par exemple enchaîner automatiquement plusieurs lectures de fichiers.

Pour obtenir une liste des ports MIDI disponibles, il faut taper:

pmidi -l

Ceci vous donne:

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

Ensuite, tapez

pmidi -p65:0 fichier.midi

pour entendre le fichier midi

Imaginez que vous ayez envie de puiser dans un fond de fichier midi sur le web, vous pouvez très bien imaginer de faire une séquence de commandes ressemblant à ceci et regroupées dans un fichier ( appelé shellscript)

#!/bin/sh
#lecture d'un fichier de la banque de son midi
wget http://unsite web $1
pmidi $1


Il est à noter que si vous utilisez Jack couplé avec Qsynth vous pouvez passer par une entrée Jack que vous routerez sur une sortie audio ou bien passer directement par une entrée MIDI.


9. Les banques d'échantillons


Un chapitre entier traite des banque de sons SoundFont

10. Edition des synthés MIDI externes

Les synthétiseurs et expandeurs (synthé sans clavier en rack) MIDI peuvent être adressés par ordinateur pour différentes tâches de gestion. La plus simple est de transférer via SYSEX (expliquer ce terme dans le lexique, et mettre un lien) des banques qu'on aurait trouvé sur le net. Une application plus fine consiste à éditer interactivement les patchs (c-à-d les programmes constituant un son dans le synthé) depuis un éditeur-bibliothéquaire MIDI. Sous Linux, il existe principalement JSynthLib pour ce rôle.

➡️Monter un exemple pour faire des transferts de banques via SYSEX avec des commandes bas niveau


11. Liens

De la lecture pour les longues soirées d'hiver... 😎
http://fr.wikipedia.org/wiki/Musical_Instrument_Digital_Interface
http://www.linuxmao.org/tikiwiki/tiki-index.php?page=GlossaireM
http://ogloton.free.fr/midi/presentation.html
http://perso.orange.fr/getzen/norme.htm

Historique

Information Version
Sat 22 Jul 2017 10:05 minimoineau remplacement du lien (mort) vers le brochage du cable midi/to host (avec le bon lien!!!) 94
Afficher
Sat 22 Jul 2017 10:03 minimoineau remplacement du lien (mort) vers le brochage du cable midi/to host 93
Afficher
Sun 02 Mar 2014 20:22 romain_bar Déplacement de la description de l'interface MIDI vers la page MIDI - Les bases 92
Afficher
Sun 02 Mar 2014 19:59 romain_bar 91
Afficher
Sun 02 Mar 2014 19:57 romain_bar Correction liste des alias 90
Afficher
Sun 02 Mar 2014 19:54 romain_bar Alias après renommage 89
Afficher
Thu 07 Nov 2013 13:50 pianolivier wiki_up conversion 88
Afficher
Mon 04 Nov 2013 17:11 anonymous wiki_up conversion 87
Afficher
Wed 27 Feb 2013 23:03 utilisateur_anonyme2 86
Afficher
Sat 23 Feb 2013 19:18 Admin temporaire 85
Afficher
Thu 12 Jul 2012 18:39 olinuxx +3 alias 84
Afficher
Sun 20 mai 2012 01:34 xzu 83
Afficher
Tue 03 Apr 2012 22:25 pianolivier modif box 82
Afficher
Sat 10 Mar 2012 23:56 pianolivier 81
Afficher
Sat 10 Mar 2012 23:56 pianolivier mise en page 80
Afficher
Sat 10 Mar 2012 15:54 pianolivier mise en page 79
Afficher
Sun 19 Feb 2012 11:54 pianolivier suppression lien interne doublon 78
Afficher
Fri 18 Feb 2011 04:35 olinuxx 77
Afficher
Fri 17 Sep 2010 20:19 olinuxx correction taille image 76
Afficher
Fri 17 Sep 2010 20:01 olinuxx correction taille image 75
Afficher
Tue 31 Aug 2010 12:54 olinuxx liens 74
Afficher
Sun 29 Aug 2010 10:58 jmechmech stylo rouge 73
Afficher
Tue 17 Aug 2010 21:43 pianolivier lien kmid 72
Afficher
Mon 19 Apr 2010 00:17 pianolivier lien page "matos usb" remplacé par "interface de controle" 71
Afficher
Wed 17 Feb 2010 12:56 yanshee 70
Afficher
Wed 17 Feb 2010 12:18 yanshee 69
Afficher
Tue 16 Feb 2010 17:36 yanshee 68
Afficher
Tue 16 Feb 2010 17:36 yanshee 67
Afficher
Wed 03 Feb 2010 18:18 olinuxx déplacement infos en page dédiée 66
Afficher
Tue 22 Dec 2009 18:14 olinuxx aseqjoy lien interne 65
Afficher