1

给定一个速度为 192 的 BPM(每分钟节拍数)MIDI 增量时间(最左边的位关闭):

0x00C0

我想将它转换为 FPS/TPM(每秒帧数/每分钟滴答声)增量时间(最左边的位),但如果您知道我的意思,它应该是相同(或最准确)的速度值。

有关 MIDI Delta Time 的更多信息,请查看Header Chunk -> Time Division 下的Midi File Format 。

我正在寻找一个可以在这两种 deltatime 类型之间进行转换的公式。

4

1 回答 1

2

如果您说 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 )) 勾选

于 2010-07-08T19:45:55.153 回答