Alsa 虚拟 rawmidi 端口将仅接收任何消息的第一个和最后一个 midi 字节

Alsa 虚拟 rawmidi 端口将仅接收任何消息的第一个和最后一个 midi 字节

我一直在尝试以下代码: alsarawmidiin.c

alsa rawmidi 声明您可以通过将输入端口命名为“virtual”来创建虚拟 rawmidi 端口

所以我编译了代码并使用以下命令启动它:

alsarawmidiin 虚拟

这有效,我可以使用 aconnect 连接其他 MIDI 端口。问题是操作系统显示的 MIDI 数据仅显示 MIDI 消息的第一个和最后一个字节。大多数 MIDI 消息都是三个字节,但使用虚拟驱动程序时仅显示两个字节。

直接连接到 rawmidi 设备(非虚拟设备)确实有效。但我想将多个 MIDI 设备连接到同一个 rawmidi 端口。这是 alsa rawmidi 库中的错误吗?

答案1

这是virtual插件中的一个错误。处理小于 MIDI 消息的缓冲区的代码似乎从未经过测试。

这将在 alsa-lib 1.1.4 中修复;在该软件包到达您的分发版之前,您可以申请补丁手动,或通过使用更大的缓冲区来解决此问题。

相关内容