Chibi-nah::blog

Des geekeries, de la MAO, de tout et de rien…

Archives

Astuces MIDI

Quelques astuces en vrac pour le MIDI (Musical Instrument Digital Interface) sous GNU/Linux, plus particulièrement avec ALSA (Jack Audio permet de mieux gérer cela, mais ici, je veux de l'alsa "pur", sans surcouche). Ça tient plus de l'aide mémoire que de tutoriels, vu que je cherche souvent ces infos.

Lister les interfaces (qui est connecté à quoi)

alex@yue ~> aconnect -lio
client 0: 'System' [type=noyau]
    0 'Timer           '
    1 'Announce        '
    Connexion À: 15:0
client 14: 'Midi Through' [type=noyau]
    0 'Midi Through Port-0'
    Connecté Depuis: 128:0
client 24: 'USB Uno MIDI Interface' [type=noyau]
    0 'USB Uno MIDI Interface MIDI 1'

Ici, une appli (th08[1]) envoie des données midi vers "Midi Through Port-0" [2].

Changer la sortie MIDI sous Wine.

Je reprend l'exemple de th08. L'application fonctionne via Wine, et envoie ses données vers "Client 14". Or, comme aucun expandeur midi n'est raccordé dessus, aucune musique n'est jouée. Je veux que l'appli envoie les données vers "Client 24"[3]. Pour cela, il faut ajouter (ou modifier) une entrée dans la base de registre, pour indiquer qu'il ne faut pas prendre le premier périphérique midi, mais le second. (attention, on compte à partir de zéro et non de 1, donc le 1er a le n°0, le second, 1, le troisième 2, etc).

Le plus simple est de créer un fichier texte et d'y coller :

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Multimedia\MIDIMap]
"CurrentInstrument"="#1"

Puis d'ouvrir regedit (wine regedit), et d'ouvrir le fichier pour que la clé soit modifiée. On peut aussi le faire à la main, en créant les branches et la clef.

Plus de détails dans la doc wine : http://www.winehq.org/docs/winedev-guide/mm-conf

Le résultat est donc :

alex@yue ~> aconnect -lio
client 0: 'System' [type=noyau]
    0 'Timer           '
    1 'Announce        '
    Connexion À: 15:0
client 14: 'Midi Through' [type=noyau]
    0 'Midi Through Port-0'
client 24: 'USB Uno MIDI Interface' [type=noyau]
    0 'USB Uno MIDI Interface MIDI 1'
    Connecté Depuis: 128:0

Mapper une sortie MIDI vers une entrée MIDI.

Par exemple, Utiliser un clavier maître pour piloter Bristol :

aconnect 24 128

L'appui sur une touche sur le clavier maître provoquera alors le son (ou l'effet) désiré.


1 : th08, Imperishable Night (forcément). 2 : Ce qui est le comportement attendu, Cf. article touhou-08-imperishable-night-sous-gnu-linux 3 : Expandeur midi matériel (Roland SC-55), branché via une interface midi-usb(M-Audio USB UNO, reconnu et fonctionnel sous GNU/Linux.