c - USB MIDI协议(protocol)理解

标签 c usb midi

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

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

该协议(protocol)似乎是 MIDI,但如果我遵循它并尝试与设备的其他功能进行交互,我不会得到预期的结果。

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

问候, 德米特里

最佳答案

您将在 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

关于c - USB MIDI协议(protocol)理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34383761/

相关文章:

macos - 如何在 Mac 主机上将 USB 与 QEMU 一起使用?

go - 在Linux中通过USB连接到USBTMC设备

python - 为什么我无法播放以编程方式下载的 MIDI 文件,但手动下载后却可以播放?

c - 从 32 位寄存器读入 16 位

c - 带括号的int32和int64的算术运算

java - Eclipse - 将鼠标悬停在标记上时的自定义文本

ios - 如何使用 Swift 通过 LE 蓝牙将 MIDI 数据从 iOS 发送到 OS X

c - 函数返回错误值

macos - 我如何在 Delphi 中使用 Apple OSX API?

performance - 可视化钢琴演奏评估