J'ai un périphérique virtuel MIDI, comme la carte # 1, nommé VirMIDI
. Il y a des clients séquenceurs ALSA associés (pas du MIDI brut), comme Virtual Raw MIDI 1-0
à Virtual Raw MIDI 1-3
. Il existe des nœuds de périphérique /dev/snd/midiC1D0
à /dev/snd/midiC1D3
.
Un logiciel MIDI est connecté à Virtual Raw MIDI 1-0
et un synthétiseur de polices sonores est connecté à hw:VirMIDI,0
.
Quand je joue sur le clavier du logiciel, il y a des sons (juste pour vérifier que c'est OK).
Je peux cat
le nœud de l'appareil: si je le fais cat /dev/snd/midiC1D0 >data.bin
et jouez sur le clavier du logiciel, le fichier data.bin
est rempli de bruts MIDI et le synthétiseur jouent des sons (lui et cat
reçoivent les événements).
Cependant, si je fais plus tard cat data.bin >/dev/snd/midiC1D0
rien ne se passe: pas d'erreurs ni de sons, le synthétiseur ne reçoit aucun événement MIDI.
Il semble que cela fonctionne uniquement avec un accès en lecture, bien que l'écriture ne déclenche pas d'erreur et semble ne rien faire.
Si jamais cela importe, bien qu'il ne s'agisse pas d'un accès au nœud de périphérique proprement dit, amidi -p hw:1,0 -s data.bin
ne fait rien non plus, tandis que amidi -p hw:1,0 -r data.bin
se comporte comme prévu.
Comment écrire sur un nœud de périphérique MIDI comme /dev/snd/midiCnDn
, avec les effets attendus, de la même manière que l'on peut lire à partir du même nœud de périphérique MIDI? Ou est-il destiné à être lu uniquement?
Le pilote VirMIDI
est conçu comme une interface entre les programmes qui accèdent aux périphériques RawMIDI (en fait, les périphériques OSS /dev/midi*
) et les clients séquenceurs ALSA.
Tout ce qui a été reçu sur le périphérique brut MIDI (hw:1,*
ou /dev/*
) est envoyé au port séquenceur.
Tout ce qui est reçu sur le port du séquenceur (Virtual Raw MIDI 1-*
) est envoyé au périphérique brut MIDI.
Pour connecter plusieurs périphériques raw MIDI, vous devez passer par plusieurs ports séquenceurs:
+-------+ +--------+----------------------+
| synth | <-- | hw:1,0 | Virtual Raw MIDI 1-0 | <-+
+-------+ +--------+----------------------+ |
|aconnect
+-----+ +--------+----------------------+ |
| cat | --> | hw:1,1 | Virtual Raw MIDI 1-1 | --+
+-----+ +--------+----------------------+