Как отправить необработанные MIDI-данные на узел устройства MIDI?

Контекст и эксперименты

У меня есть виртуальное 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? Или это будет использоваться только для чтения?

1
задан 7 June 2015 в 08:46

1 ответ

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 |  --+
+-----+         +--------+----------------------+
0
ответ дан 7 June 2015 в 08:46

Другие вопросы по тегам:

Похожие вопросы: