我正在尝试在 rpi3 上创建具有一个通道输入和一个输出的虚拟 midi 端口。
我首先使用创建虚拟端口
$ modprobe snd-virmidi snd_index=1
我可以看到它是使用创建的
$ aconnect -lio
client 0: 'System' [type=kernel]
0 'Timer '
1 'Announce '
client 14: 'Midi Through' [type=kernel]
0 'Midi Through Port-0'
client 20: 'Virtual Raw MIDI 1-0' [type=kernel]
0 'VirMIDI 1-0 '
client 21: 'Virtual Raw MIDI 1-1' [type=kernel]
0 'VirMIDI 1-1 '
client 22: 'Virtual Raw MIDI 1-2' [type=kernel]
0 'VirMIDI 1-2 '
client 23: 'Virtual Raw MIDI 1-3' [type=kernel]
0 'VirMIDI 1-3 '
然后尝试使用以下方式将 21 号路由路由到 20 号路由
$ aconnect 21:0 20:0
看起来很成功
$ aconnect -l
...
client 20: 'Virtual Raw MIDI 1-0' [type=kernel]
0 'VirMIDI 1-0 '
Connected From: 21:0
client 21: 'Virtual Raw MIDI 1-1' [type=kernel]
0 'VirMIDI 1-1 '
Connecting To: 20:0
然后当我尝试通过以下方式在一个终端窗口中转储 ch 20 的内容时
$ amidi -p hw:1,0 -d
并使用另一个终端发送原始 midi
$ amidi -p hw:1,1 -S 'A0'
无论我输入的字节序列或值有多长,我的第一个终端上都什么也没有得到。最后,我通过 ctrl+c 终止读取,它终止并显示以下消息
^C
0 bytes read
关于我做错了什么,有什么建议吗?或者是否可以通过虚拟 midi 实现?
答案1
该snd-virmidi
驱动程序是 ALSA 音序器端口和 OSS MIDI 端口之间的桥梁。
要获得环回端口(将收到的内容发回),请使用snd-seq-dummy
驱动程序。它会自动加载;您已经拥有“Midi 直通端口”。