我遇到了一个相当奇怪的与 MIDI 相关的问题。
因此,每当我通过 USB-MIDI 接口向钢琴发送大量 midi 数据/音符时,MIDI 接口就会超出带宽,导致歌曲速度变慢,然后在发送到接口的音符减少后赶上速度,但是我只能通过观察接口上的状态 LED 和听到键盘上的歌曲变慢/追赶来注意到这一点,而无法捕捉到这一点。
所以我的问题是,有没有办法模拟 MIDI 电缆带宽并将结果输出到修改后的 MIDI 文件副本中,或者通过 MIDI 输出?
答案1
多年来我一直以此为生——没有任何方法可以真正测量数据流……
MIDI 传输是串行的,因此您只需将所有数据排列成大致正确的顺序到达目的地,即可避免瓶颈。解决您的问题的唯一方法是错开传输,或停止量化所有内容。
大多数 MIDI“模块”将优先考虑通道 10,因为传统上这是鼓通道。
此后,它将优先考虑 1 - 16。
因此,首先要做的事情是,根据频道是否准确播放节拍的重要性来对频道进行排序。任何具有缓慢启动的频道,都应将其提前或推迟 4 个或更多的节拍,启动速度越慢,您可以处理的节拍就越多。
您可以这样来做,因为由于瓶颈的存在,当一切都“不合时宜”时,整体的“凹槽”实际上比量化时更好。
另一个技巧是将所有控制器数据从重要的节拍中移开——你很少需要像处理音符那样精确地处理控制器。
第三 - 如果您发送任何类型的补丁更改或 sysex 等,也请将它们放在不妨碍的地方。如果您在音轨开头发送所有 16 个通道的完整设置,请在音轨开头为其添加一个自己的小节,以便在任何音符开始之前让机器有足够的时间对其进行处理。
此外 - 确保您的设置设置为使用运行状态 [虽然我怀疑现在任何东西都不会默认使用它] 运行状态将减少传输的数据量,通过不重复任何可以“假定仍然有效”的内容。
举个例子 - 这首曲目仅使用 16 个 MIDI 通道完成,在设备上“实时”播放,没有明显的减速。它是作为我以前工作过的公司的一个产品演示完成的。没有外部处理或操作,音频直接从设备的立体声输出录制。
[曲目需要一段时间才能进入节奏,数据峰值在管弦乐队进入时开始于 45 秒左右,随着曲目的运行变得越来越重,在下降部分有短暂的喘息]
https://soundcloud.com/graham-lee-15/ohmss-orig-propellerheads-used-with-permission-mu100-demo