给定BPM(每分钟节拍)MIDI增量时间(最左边的位),速度为192:
0x00C0
我想将其转换为FPS / TPM(每秒帧数/每分钟刻度数)增量时间(最左边的位),但如果您知道我的意思,它应该是相同(或最准确)的速度值
有关MIDI Delta Time的更多信息,请查看Header Chunk下的Midi File Format - >时间划分。
我正在寻找一种能在这两种deltatime类型之间进行转换的公式。
答案 0 :(得分:2)
如果你说的是0x00C0是时分区域,你所指的不是每分钟192 节拍,而是每次击打192 节拍,完全不同的野兽。 BPM是通过“Set Tempo”事件间接指定的,以每次拍子的微秒数给出(假设普遍无处不在的120 BPM开始)。使用这种格式进行时间划分的棘手问题在于,嘀嗒声的长度会根据歌曲中的速度变化而增大和缩小。
假设您要转换为的时间段为每秒帧数F
(24,25,29.97或30),而G
为每帧帧数(注释) :这不是每分钟的滴答声!)。此外,我们假设每节拍的当前速度为微秒,为p
。然后将给定持续时间转换为刻度 old 到ticks new 的公式(单位分析确实有帮助!)是:
y = x ticks old *(1/192)beat / ticks old *pμsec/ beat *(1/10 6 )sec /μsec* F帧/秒* G勾选 new / frame
=((x * p * F * G)/(192 * 10 6 ))勾选 new