Chargement...
 
Skip to main content

6 - Le MIDI


[RÉSOLU] Envoyer un message midi à un contrôleur

Belgique
Bonjour,
Une question toute bête.
Comment puis-je envoyer un message du type 'B0 00 02' à mon Launchpad S, directement depuis un terminal, lorsque je suis connecté à Jack ?

J'ai essayé :
Copy to clipboard
amidi -p hw:1,0,0 -S 'B0 00 02'

... mais ça ne fonctionne pas sous Jack. Il me répond :
Copy to clipboard
ALSA lib rawmidi_hw.c:233:(snd_rawmidi_hw_open) open /dev/snd/midiC1D0 failed: Device or resource busy cannot open port "hw:1,0,0": Device or resource busy


Merci d'avance.
Je cherchais à faire ça depuis longtemps, et j'ai enfin trouvé une solution aujourd'hui. Cette solution ne passe pas par Jack, mais directement par ALSA.
En fait il faut charger le module kernel snd-virmidi:
Copy to clipboard
$ sudo modprobe snd-virmidi
ou encore, si on ne veut que 1 périphérique virtuel (au lieu de 4 par défaut):
Copy to clipboard
$ sudo modprobe snd-virmidi midi_devs=1
Après avoir fait ça, on peut voir de nouvelles entrées en lançant amidi -l (ou dans Qjackctl):
Copy to clipboard
$ amidi -l Dir Device Name [...] IO hw:3,0 Virtual Raw MIDI (16 subdevices)
On note que le nouveau périph Midi virtuel porte le nom hw:3,0 (peut bien sûr être différent).
Il faut alors connecter le nouveau périphérique virtuel vers le périphérique réel choisi : soit avec Qjackctl en quelques clics (onglet ALSA), soit en ligne de commande:
Copy to clipboard
$ aconnect -i " Affiche les périph existants, chez moi: client 0: 'System' [type=noyau] 0 'Timer ' 1 'Announce ' client 14: 'Midi Through' [type=noyau] 0 'Midi Through Port-0' client 24: 'USB Device 0x7104:0x2202' [type=noyau] 0 'USB Device 0x7104:0x2202 MIDI 1' 1 'USB Device 0x7104:0x2202 MIDI 2' client 28: 'Virtual Raw MIDI 3-0' [type=noyau] 0 'VirMIDI 3-0 '
L'info importante est le numéro de client pour le périph midi virtuel (ici, 28), et celui pour le périphérique choisi (ici, j'ai un périph USB en 24). On connecte les deux comme ceci:
Copy to clipboard
$ aconnect 28:0 24:0
Voilà, maintenant il suffit d'envoyer des codes Midi vers le nouveau périph virtuel, ici hw:3,0:
Copy to clipboard
$ amidi -p hw:3,0 -S 'B0 00 02'
Si on cherche à envoyer des codes Midi à une application qui ne possède que des ports Midi-Jack (exemple: Ardour), il faut en plus lancer un bridge midi comme a2j:
Copy to clipboard
$ a2j -e
Voici les liens qui m'ont aidé dans mes recherches:
http://www.tldp.org/HOWTO/MIDI-HOWTO-10.html
http://askubuntu.com/questions/633185/how-to-send-midi-raw-data-to-a-midi-device-node
Belgique
Parfait ! Ça fonctionne, merci beaucoup !
France
@kodamazone : chouette d'avoir pris le temps de faire un retour. Il est temps de mettre un [RÉSOLU] dans le titre de ton premier message en l'éditant.
Belgique
Ah oui, c'est vrai. Je fais ça tout de suite.
France
Super, merci kodamazone 😊