USB 上可接受的 MIDI 带宽是多少?

Posted

技术标签:

【中文标题】USB 上可接受的 MIDI 带宽是多少?【英文标题】:What is an acceptable MIDI bandwidth over USB? 【发布时间】:2015-04-09 01:32:48 【问题描述】:

我正在使用 C++ 中的 Juce 框架制作 MIDI 效果(一个修改传入 MIDI 的 VST 插件生成新数据并将其转发出去)。我发现在技术上可以使用每个样本生成新的 MIDI 消息,使我的 MIDI 流以 16 到 24 位每秒 41,000 次或更多次。这对于 MIDI 硬件来说似乎完全不可能处理。

当我决定通过 USB 连接新旧硬件合成器的 MIDI 带宽时,是否必须遵守任何准则或规则?

编辑: 我应该补充一点,对于我正在尝试做的事情,更高的带宽会有所帮助,但应该与 Arturia Minibrute 等硬件一起使用。我正在尝试做一些新颖的事情,例如将包络和 LFO 应用于调制和音高轮。

【问题讨论】:

确实离题,但你不需要太多。 MIDI 不传输声音,只传输命令。每分钟一千或两个就足够了。 实际上在我的情况下,更多会更好。我正在尝试做一些奇怪的事情,例如将包络和 LFO 应用于调制和音高轮。 MIDI 设备预计 31.25 kbps,即每秒约 1000 条消息。 @Jeff-Russ:您最终可能会遇到同步问题。您是否期望命令之间处理的音频样本数量保持一致?祝你好运。 没有。 Juce 框架处理 MIDI 的方式是每个样本缓冲区具有可变数量的 MIDI 消息。每个 MIDI 消息都与一个样本编号同步(其中每个缓冲区的第一个样本是样本编号为零)。如果缓冲区大小为 64 个样本,理论上可以有 64 条 MIDI 消息,但考虑到采样率和缓冲区大小,我会尝试限制每个缓冲区中的 MIDI 事件。 【参考方案1】:

通过 DIN 电缆的 MIDI 以 31250 位/秒的速度运行,即 3125 字节/秒。

USB MIDI 规范没有指定任何带宽,但底层 USB 批量传输协议隐含地允许接收设备决定何时接受新数据包。 换句话说,USB MIDI 设备可以决定它的运行速度,但是没有简单的机制来确定这个限制(特别是如果你的操作系统只是丢弃设备驱动程序无法足够快地传递的 MIDI 消息)。

USB/MIDI 接口以 3125 字节/秒的速度运行。 不涉及“真实” MIDI 接口的 USB MIDI 设备可能运行得更快;例如,我的 SC-8820 可以处理大约 10 KB/s。

实际上,您无法知道某个通用 MIDI 端口后面的硬件是什么。 除非您对设备有专门的了解,否则您应该使用 3125 字节/秒的限制。

【讨论】:

以上是关于USB 上可接受的 MIDI 带宽是多少?的主要内容,如果未能解决你的问题,请参考以下文章

控制器没有足够的带宽可利用为USB

控制器没有足够的带宽供usb大容量存储设备

控制器没有足够的带宽供USB大容量存储设备

控制器没有足够的带宽可利用为USB大容量存储设备的解决方法

PCIe3.0x16带宽是多少

LTE频段和常用带宽是多少