【发布时间】: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 事件。
标签: c++ midi audiounit vst juce