У меня есть виртуальное MIDI-устройство, как карта № 1, с именем VirMIDI
. Есть связанные клиенты секвенсора ALSA (не сырые MIDI), как от Virtual Raw MIDI 1-0
до Virtual Raw MIDI 1-3
. Существуют узлы устройства /dev/snd/midiC1D0
- /dev/snd/midiC1D3
.
Программная MIDI-клавиатура подключена к Virtual Raw MIDI 1-0
, а синтезатор звукового шрифта - к hw:VirMIDI,0
.
Когда я играю на программной клавиатуре, появляются звуки (просто чтобы убедиться, что все в порядке).
Я могу cat
развернуть узел устройства: если я выполняю cat /dev/snd/midiC1D0 >data.bin
и играю на программной клавиатуре, файл data.bin
заполняется необработанными событиями MIDI, и синтезатор воспроизводит звуки (и он, и cat
получают события ).
Однако, если я позже сделаю cat data.bin >/dev/snd/midiC1D0
, ничего не произойдет: без ошибок, а также без звуков, синтезатор не получит MIDI-события.
Похоже, что он работает только с доступом для чтения, хотя запись не вызывает ошибку и, похоже, ничего не делает.
Если когда-либо это имеет значение, хотя нет доступа к собственному узлу устройства, amidi -p hw:1,0 -s data.bin
ничего не делает, в то время как amidi -p hw:1,0 -r data.bin
ведет себя как ожидалось.
Как записать на узел устройства MIDI, например /dev/snd/midiCnDn
, с ожидаемыми эффектами, так же, как можно читать с того же узла устройства MIDI? Или это будет использоваться только для чтения?
VirMIDI
драйвер разработан как интерфейс между программами что доступ устройства RawMIDI (на самом деле, устройства OSS /dev/midi*
) и клиенты секвенсера ALSA.
Все полученное в необработанном MIDI-устройстве (hw:1,*
или /dev/*
) переслано к порту секвенсера.
Все полученное в порте секвенсера (Virtual Raw MIDI 1-*
) переслано к необработанному MIDI-устройству.
Для подключения нескольких необработанных MIDI-устройств необходимо пройти несколько портов секвенсера:
+-------+ +--------+----------------------+
| synth | <-- | hw:1,0 | Virtual Raw MIDI 1-0 | <-+
+-------+ +--------+----------------------+ |
|aconnect
+-----+ +--------+----------------------+ |
| cat | --> | hw:1,1 | Virtual Raw MIDI 1-1 | --+
+-----+ +--------+----------------------+