20

我想知道如何将 MIDI 节拍转换为实际播放秒数。

例如,如果 MIDI PPQ(每四分音符的脉冲数)为 1120,我如何将其转换为真实世界的播放秒数?

4

2 回答 2

27

公式是60000 / (BPM * PPQ)(毫秒)。

其中 BPM 是曲目的速度(每分钟节拍)。

(即 120 BPM 音轨(60000 / (120 * 192))对于 1 个滴答声的 MIDI 时间为 2.604 毫秒。

如果您不知道 BPM,那么您必须先确定它。MIDI 时间完全取决于轨道速度。

于 2010-01-10T19:56:41.050 回答
16

您需要两条信息:

  • PPQ(每四分音符的脉冲数),在 midi 文件的标题中定义一次。
  • 速度(以每四分音符微秒为单位),由“设置速度”元事件定义,并且可以在乐曲中改变。

刻度可以转换为播放秒数,如下所示:

ticks_per_quarter = <PPQ from the header>
µs_per_quarter = <Tempo in latest Set Tempo event>
µs_per_tick = µs_per_quarter / ticks_per_quarter
seconds_per_tick = µs_per_tick / 1.000.000
seconds = ticks * seconds_per_tick

请注意,在上面链接的文档中,PPQ 也称为“除法”或“每四分音符的记号” 。

请注意,速度通常以 BPM(一个频率)表示,但原始 MIDI 以每四分之一微秒(一个周期)表示。

于 2019-02-18T20:01:46.783 回答