USB midi协议理解

USB midi protocol understanding

我有一个通过 USB 连接 MIDI 接口的声音处理器设备。除了官方应用程序之外,我还想从我的电脑控制设备。但是我没有命令协议描述。 在 usbmon 的帮助下,我可以设法将几个 USB 数据包转储到设备。他们看着像是: 0x0B 0xB0 0x00 0x00 0x0C 0xC0 0x05 0x00

如果我从我的应用程序发送此命令,则设备会激活程序 5。

协议似乎是 MIDI,但如果我遵循它并尝试与设备的其他功能进行交互,我得不到想要的结果。

因此,我正在寻求任何帮助以使其正常工作。例如,我需要学习如何 select 效果或控制音量和其他参数。

此致, 德米特里

您会在 Universal Serial Bus Device Class Definition for MIDI Devices 和 MIDI 规范中找到您需要的内容。

您的示例包含两个数据包,每个数据包包含一个 MIDI 事件。它们可以解码如下:

cable: 0
event: control change
channel number: 0
controller number: 0 (bank select)
controller value: 0

cable: 0
event: program change
channel number: 0
program number: 5

Zoom G3X 设备使用 standard USB MIDI protocol

但是,仅仅因为它使用了 MIDI 消息并不自动意味着您知道这些消息的含义。 还有其他标准,例如通用 MIDI,但是当设备不是 'normal' 合成器而是效果处理器时,大多数标准消息都没有意义。

要了解设备接受哪些 MIDI 消息,请查看文档。

如果消息没有记录(比如在这种情况下,设备只能与提供的软件一起使用),您必须在设备上进行更改,并记录它发送的任何 MIDI 消息出(amidi --dump,或aseqdump)。

如果设备没有发送消息来显示其当前状态的变化,您必须使用USB监视器捕获官方应用程序发送的消息(如usbmon in Linux) .