Como enviar dados brutos de MIDI para um nó de dispositivo MIDI?

1

Contexto e experiências

Eu tenho um dispositivo MIDI virtual, como o cartão # 1, chamado VirMIDI . Existem clientes associados ao sequenciador ALSA (não MIDI bruto), como Virtual Raw MIDI 1-0 to Virtual Raw MIDI 1-3 . Existem nós de dispositivos /dev/snd/midiC1D0 to /dev/snd/midiC1D3 .

Um teclado MIDI de software é conectado a Virtual Raw MIDI 1-0 e um sintetizador de fonte de som é conectado a hw:VirMIDI,0 .

Quando eu toco o teclado do software, há sons (só para verificar se está tudo bem).

Eu posso cat do nó do dispositivo: se eu usar cat /dev/snd/midiC1D0 >data.bin e tocar o teclado do software, o arquivo data.bin será preenchido com eventos MIDI brutos e o sintetizador reproduzirá sons (ambos e cat receberão os eventos ).

No entanto, se mais tarde eu fizer cat data.bin >/dev/snd/midiC1D0 nada ocorrer: sem erros e também sem sons, o sintetizador não recebe eventos MIDI.

Parece que funciona apenas com acesso de leitura, embora a escrita não acione um erro e pareça não fazer nada.

Se isso for importante, embora não seja um acesso ao nó do dispositivo, amidi -p hw:1,0 -s data.bin não faz nada, enquanto amidi -p hw:1,0 -r data.bin se comporta como esperado.

Pergunta

Como escrever em um nó de dispositivo MIDI como /dev/snd/midiCnDn , com efeitos esperados, da mesma maneira que se pode ler a partir do mesmo nó de dispositivo MIDI? Ou é para ser usado apenas para leitura?

    
por Hibou57 07.06.2015 / 01:25

1 resposta

1

O driver VirMIDI é projetado como uma interface entre programas que acessam dispositivos RawMIDI (na verdade, dispositivos OSS /dev/midi* ) e clientes sequenciadores ALSA.
Tudo recebido no dispositivo MIDI bruto ( hw:1,* ou /dev/* ) é enviado para a porta do seqüenciador.
Tudo recebido na porta do seqüenciador ( Virtual Raw MIDI 1-* ) é enviado para o dispositivo MIDI bruto.

Para conectar vários dispositivos MIDI brutos, você precisa passar por várias portas do seqüenciador:

+-------+       +--------+----------------------+
| synth |  <--  | hw:1,0 | Virtual Raw MIDI 1-0 |  <-+
+-------+       +--------+----------------------+    |
                                                     |aconnect
+-----+         +--------+----------------------+    |
| cat |    -->  | hw:1,1 | Virtual Raw MIDI 1-1 |  --+
+-----+         +--------+----------------------+
    
por CL. 07.06.2015 / 12:03