我正在读MIDI文件而我无法确定下一个事件何时触发。
假设我有一个midi文件有这样的轨道(其中T = n是增量时间):
[T=0: Note On, C4] [T=128: Note Off, C4] [T=0: Note On, D4] [T=128: Note Off, D4]
第二个音符开(D4)是否与前一音符关闭(C4)完全相同/同时发生?或者你在下一个时间点触发它?
答案 0 :(得分:2)
理论上,这两个事件同时发生。
实际上,事件需要通过MIDI发送一定时间(三个字节大约一毫秒),但第二个事件将在第一个事件发生后尽快发送。 当没有涉及实际的MIDI电缆时,事件实际上可以同时生效。
答案 1 :(得分:2)
所有事件都发生在勾选上。然而,由于MIDI既是串行协议又是串行硬件,它们一次一个地通过MIDI电缆发出。这成为发送大量控制器更改消息的设备的问题,最初像MIDI吉他控制器。他们每秒发送的MIDI信息比电缆传输的数量更多。
在备用传输(如USB)上,这些事件可以更紧密地发生,但由于它们是串行的,因此它们必须一个接一个地发生。那个时间框架可能是不可分割的,(我们希望),但总会有一个小的滞后。
对于他们在“相同”时间发生的事情,你必须要么a)缓冲或b)使它们在不同的地方发生,就像并行玩家一样,这仍然会使你的同步延迟。