给定一个速度为 192 的 BPM(每分钟节拍数)MIDI 增量时间(最左边的位关闭):
0x00C0
我想将它转换为 FPS/TPM(每秒帧数/每分钟滴答声)增量时间(最左边的位),但如果您知道我的意思,它应该是相同(或最准确)的速度值。
有关 MIDI Delta Time 的更多信息,请查看Header Chunk -> Time Division 下的Midi File Format 。
我正在寻找一个可以在这两种 deltatime 类型之间进行转换的公式。
给定一个速度为 192 的 BPM(每分钟节拍数)MIDI 增量时间(最左边的位关闭):
0x00C0
我想将它转换为 FPS/TPM(每秒帧数/每分钟滴答声)增量时间(最左边的位),但如果您知道我的意思,它应该是相同(或最准确)的速度值。
有关 MIDI Delta Time 的更多信息,请查看Header Chunk -> Time Division 下的Midi File Format 。
我正在寻找一个可以在这两种 deltatime 类型之间进行转换的公式。
如果您说 0x00C0 是时分字段,那么您所指的不是 192 beats per minute,而是 192 ticks per beat,完全不同的野兽。BPM 是通过“Set Tempo”事件间接指定的,以每拍微秒为单位给出(假设开始时可悲的是无处不在的 120 BPM)。这种格式的时间划分的技巧在于,一个节拍的长度会根据歌曲中的速度变化而增长和缩小。
假设您要转换的时间划分F
为每秒帧数(24、25、29.97 或 30)和G
每帧的滴答声(注意:这不是每分钟滴答声!)。此外,我们假设当前每拍的速度(以微秒为单位)为p
。然后将给定持续时间(以旧刻度为单位)转换为新刻度的公式(单位分析真的很有帮助!)是:
y = x旧节拍* (1/192) 节拍/旧节拍* p μsec/节拍 * (1/10 6 ) sec/μsec * F 帧/秒 * G 节拍新/frame
= ((x * p * F * G)/(192*10 6 )) 勾选新