【发布时间】:2012-12-20 15:38:33
【问题描述】:
我的目标是从标准 MIDI 文件中检索确切的音符开/关时间。 该文件是类型 1(它有几个轨道),计时模式是每季度滴答声。
我的做法:
我在每首曲目中搜索 setTempo-Events 并将它们全部放入一个列表中。我还将成功的 setTempo-Events 之间的滴答数存储在我的列表中。
然后我将每个事件的所有 deltaTimes 相加,并获得每个事件相对于零刻度的绝对刻度数。
最后,我从绝对滴答数和包含 tempi 的列表中计算出时间(以秒为单位)
这是从 MIDI 文件获取音符开始的正确方法,还是我也必须考虑时间签名? - setTempo-event 的数据是微秒/季度还是微秒/节拍?
另一个问题: 假设我有一个包含两条轨道的文件。轨道二在文件的最后只有 1 个事件,假设 deltatime=1000。 Track 1 有两个 setTempo-Event,一个 deltatime=0,另一个 deltatime=500。
哪个速度用于等待第二轨中的 1000 个滴答声 - 第一个速度、第二个或两者兼而有之?
【问题讨论】:
标签: midi milliseconds