Le MIDI et General MIDI

LE MIDI est une technologie permettant de piloter des instruments de musique électroniques avec des fichiers contenant des commandes de type «Tempo: 600000µs; Canal 1: instrument 37; Canal 1: début de note 57, vélocité 67; délai: croche; fin de note 67, vélocité 76…". Les fichiers MIDI, qui contiennent ces informations, sont ainsi bien plus courts que les fichiers sonores WAV stéréo 16bits/44 100, où chaque seconde est codée en 176400 octets, (la compression .ogg ou mp3 réduisant ce poids d'un facteur 10), mais ils ont besoin d'un instrument MIDI (boîte de sons, expander, clavier avec banque de sons…) capable de produire un son à chaque note déclenchée.
Cette page explique le minimum à connaître sur un système GNU/Linux (ligne de commande, système de fichiers…)

La puissance d'un PC actuel permet de lancer une application telle que Rosegarden, tout en produisant lui-même les sons comme s'il était l'instrument MIDI: c'est ce qu'on appelle l'émulation MIDI.

Le serveur Jack (paquet jackd) est automatiquement installé avec le logiciel rosegarden. Il permet la communication entre les différentes entrées et sorties MIDI et est utilisé par les applications dont il est question ici.

1. Connectique

1.1 Connexion DIN-5
1.2 Connexion USB
1.3 Connexion DIN-USB
1.4 Clavier virtuel

2. General MIDI

2.1 Instruments GM
2.2 Batterie GM
2.3 Extensions

3. Ressources externes

1. Connectique

En général, si jack est présent et bien configuré, un logiciel MIDI comme rosegarden détectera le périphérique lorsqu'il sera correctement raccordé et le proposera dans Studio» Gérer les périphériques MIDI. Il faudra éventuellement cocher le Oui du Midi input system Device et préciser le clavier proposé, éventuellement en duplex si le clavier contient de plus une boîte de son.

Il ne sera pas question ici des raccordements aux vieilles interfaces série 9DB ou 25DB (COM), ni firewire.

1.1 Connexion DIN-5

La sortie MIDI historique des appareils du début des années '80 est du type DIN 180° à 5 broches (de grosses fiches et prises rondes, mâle du côté cable). L'Atari ST en possédait d'origine à sa sortie en 1985, ce qui a contribué à son succès.

Il existait des câbles se connectant par le port joystick sur compatibles IBM/PC (selon la dénomination d'époque), mais ce dernier est de plus en plus rare, les joysticks modernes étant connectés sur un port USB. Actuellement, certaines cartes son ont encore des prises MIDI, micro et sorties Cinch.

        2
  5     o     4
   o         o

3 o           o 1

1.2 Claviers USB

Les instruments et ordinateurs actuels utilisent les connecteurs USB, ce qui simplifie les choses: il suffit de brancher le clavier ou la boîte de son (expander) avec un cable USB et laisser le temps au système d'exploitation de reconnaître le matériel.

1.3 Connexion DIN-USB

Pour utiliser des instruments MIDI à connecteur DIN, il existe des boîtiers convertisseurs qui permettent le raccordement de claviers disposant des sorties DIN à un port USB d'ordinateur. Les Midisport sont de ce type, mais requièrent le driver fxload.

Certains de ces boîtiers sont parfois tellement réduits qu'ils ressemblent à une grosse clé USB, comme le CME U2MIDI v2, qui ne requiert pas de driver. Attention: la fiche «IN» du câble s'introduit dans la prise «OUT» du clavier, et vice-versa.

1.4 Clavier virtuel

global keymap
set keymap {
  {a 0}
  {eacute 1}
  {z 2}
  {quotedbl 3}
  {e 4}
  {r 5}
  {parenleft 6}
  {t 7}
  {section 8}
  {y 9}
  {egrave 10}
  {u 11}

  {i 12}
  {ccedilla 13}
  {o 14}
  {agrave 15}
  {p 16}

  {less 17}
  {q 18}
  {w 19}
  {s 20}
  {x 21}
  {d 22}
  {c 23}

  {v 24}
  {g 25}
  {b 26}
  {h 27}
  {n 28}
  {comma 29}
  {k 30}
  {semicolon 31}
  {l 32}
  {colon 33}
  {m 34}
  {equal 35}
}

Il est possible d'utiliser un logiciel d'édition MIDI sans clavier, à condition d'utiliser l'éditeur de partition (score) ou l'éditeur matriciel (roll-paper). Il existe également une méthode, celle du clavier midi virtuel, composé des touches du clavier de l'ordinateur. Pour Debian, c'est

#En mode super-utilisateur: su - [Enter] apt install vkeybd

Le second menu est intéressant, il permet de décaler les trois octaves vers le haut ou vers le bas, de préciser la vélocité (force), le canal, la profondeur du vibrato, le timbre.

Dans rosegarden, il faudra cocher le Oui du Midi input system Device dans le menu Studio» Gérer les périphériques MIDI et préciser xxx:0 Virtual Keyboard (read).

Pour utiliser directement le serveur de son (par exemple FluidSynth), lancer Jack, bouton Connect» Audio/MIDI/ALSA et établir la connexion en cliquant à gauche sur Virtual Keyboard, à droite sur FluidSynth et enfin sur le bouton Connect.

Il faut que la fenêtre du clavier virtuel soit active pour que les impulsions soient détectées: après le lancement de l'enregistrement du séquenceur, survoler ou cliquer (selon le mode d'activation des fenêtres) la fenêtre vkeybd.

La disposition des touches par défaut est celle du clavier qwerty-us. Pour l'adapter au clavier azerty-be, il faudra éditer le fichier caché .vkeybdmap (pour l'utilisateur toto, c'est /home/toto/.vkeybdmap). Le paramètrage donné en exemple permet de caser les trois octaves qu'offre vkeybd sur un clavier azerty belge de 105 touches (< à gauche du W):

clavier belge pour vkeybd

Si vous avez un autre clavier à adapter, il vous faudra peut-être d'autres codes (si les touches ne représentent pas un caractère ASCII: entre 32 et 127 inclus, ou { et }?). De façon non-exhaustive:

( parenleft      ! exclam        ` grave (egrave agrave ugrave)
) parenright     " quotedbl      ´ acute (eacute)
< less           § section       ˆ circumfl        { braceleft
> greater        = equal         ¨ diaresis        } braceright
- minus          , comma         ç ccedilla    …et Return
+ plus           ; semicolon     & ampersand         BackSpace
@ at             : colon         % percent           Delete
' apostrophe     . period        µ mu                Shift_L
/ slash          \ backslash     £ sterling          Shift_R

La commande xev (du paquet x11-utils) permet de trouver les noms des caractères à employer pour désigner les touches (troisième ligne, deuxième terme de la parenthèse).

2. General MIDI

La norme General Midi assigne un instrument bien défini à chaque "programme" ou "patch", ce qui harmonise les sons associés aux événements MIDI: un quatuor à cordes chez l'un ne devient pas une fanfare chez l'autre.

2.1 Instruments GM

PianosXylophonesOrguesGuitares
x00Acoustiquex08Célestax10Hammondx18Cordes en Nylon
x01Brillantx09Glockenspielx11Percussivex19Cordes en acier
x02Électriquex0ABoîte à musique   x12Rockx1AJazz
x03Bastringuex0BVibraphonex13Églisex1BClaire
x04Électrique 1x0CMarimbax14Harmoniumx1CÉtouffée
x05Électrique 2x0DXylophonex15Accordéonx1DSaturée
x06Clavecinx0ETubular bellsx16Harmonicax1EDistortion
x07Clavinettex0FDulcimerx17Bandonéonx1FHarmoniques
BassesCordesOrchestreCuivres
x20Acoustiquex28Violonx30Cordes 1x38Trompette
x21Au doigtx29Altox31Cordes 2x39Trombone
x22Au plectrex2ACellox32Synthé 1x3ATuba
x23Fretlessx2BContrebassex33Synthé 2x3BTrompette bouchée
x24Slap 1x2CSection trémolox34Chœur «Aah!»x3CCor d'harmonie
x25Slap 2x2DSection pizzicatox35Chœur «Ooh!»x3DSection
x26Synthé 1x2ESectionx36Voixx3ESynthé 1
x27Synthé 2x2FTimbalesx37Coupsx3FSynthé 2
AnchesFlûtesPrimitivesSynthés
x40Sax soprano   x48Piccolox50Ondes carréesx58New Age
x41Sax altox49Flûtex51Dent de sciex59Chaud
x42Sax ténorx4APlûte à becx52Calliopex5APoly
x43Sax barytonx4BFlûte de Panx53Chiffx5BChœur
x44Hautboisx4CBouteillex54Charangx5CArchet
x45Cor anglaisx4DSakuhachix55Voixx5DMétallique
x46Bassonx4ESiffletx56Quintesx5EHalo
x47Clarinettex4FOcarinax57Bass+Leadx5FSweep
SynthésEthniquesPercussionsEffets
x60Pluiex68Sitarx70Clochex78Bruit de guitare
x61Soundtrackx69Banjox71Agogox79Respiration
x62Cristalx6AShamisenx72Steel drumx7APlage
x63Atmosphèrex6BKotox73Woodblockx7BCui-cui
x64Brillancex6CKalimbax74Taikox7CTéléphone
x65Goblinsx6DCornemusex75Tomx7DHélicoptère
x66Échox6EViolex76Synthéx7EApplaudissements
x67SFx6FShanaix77Cymbale inverse   x7FRevolver

2.2 Batterie GM

Il existe un canal (#10) réservé à la batterie, ce qui permet d'en jouer au clavier. Par souci d'adaptation aux claviers restreints, les 58 sons se répartissent du Eb2 au C7:.

La traduction des percussions est empruntée à l'article General MIDI de Wikipedia.

x28E3Caisse claire 2x38Cencerro ou Cowbellx48C6Sifflet grave
x29F3Tom basse gravex39A4Crash 2x49Guiro court
x2ACharley frappéx3AVibraslapx4AD6Guiro long
x1BBalaisx2BG3Tom basse aigux3BB4Cymbale ride aiguex4BClaves
x1CE2Roulement de balaisx2CCharley au piedx3CC5Bongo aigux4CE6Woodblock aigu
x1DF2Roulement de caisse claire   x2DA3Tom médium 4x3DBongo gravex4DF6Woodblock grave
x1ECastagnettesx2ECharley ouvertx3ED5Congas aigu sourdx4ECuica assourdie
x1FG2Caisse claire 0x2FB3Tom médium 3x3FCongas aigu ouvertx4FG6Cuica ouverte
x20Coup de baguettex30C4Tom médium 2x40E5Congas gravex50Triangle tenu
x21A2Grosse caisse 0x31Cymbale crashx41F5Timbales aigux51A6Triangle libre
x22Caisse claire avec rimshotx32D4Tom aigux42Timbales gravex52Shaker
x23B2Grosse caisse médiumx33Ridex43G5Cloche agogo aiguëx53B6Grappe de clochettes
x24C3Grosse caisse hautex34E4Cymbale chinax44Cloche agogo gravex54C7Arbre à cloches
x25Coup de métronomex35F4Cymbale ride/cup   x45A5Cabasa
x26D3Caisse claire 1x36Tambourinx46Maracas
x27Claquement de mainx37G4Cymbale splashx47B5Sifflet aigu

2.3 Extensions

Il existe trois extension à la norme General-MIDI:

3. Autres ressources

http://www.linuxmao.org/ (.fr)
http://linux-sound.org/ (.en)