Converting MIDI ticks to actual playback seconds

Tah*_*aha 14 midi

I want to know how to convert MIDI ticks to actual playback seconds.

For example, if the MIDI PPQ (Pulses per quarter note) is 1120, how would I convert it into real world playback seconds?

Aar*_*ght 19

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

BPM是赛道的节奏(每分钟节拍).

(即,120 BPM音轨的MIDI时间为2 (60000 / (120 * 192))或2.604 ms,1 个音符.

如果您不了解BPM,那么您必须首先确定.MIDI时间完全取决于音轨速度.

  • BPM不是MIDI的原生概念.它来自每季度微秒注(来自SET_TEMPO)和时间签名.有关如何计算的详细信息,请参阅[此博客文章](http://www.lastrayofhope.com/2009/12/23/midi-delta-time-ticks-to-seconds/). (6认同)
  • @Oddthinking:从什么计算它? (4认同)
  • 我正在读一个MIDI文件,并试图计算每个事件的相对时间.听起来像原来的问题.乐器的轨道提供事件的刻度号.您还需要在MIDI文件的标题中找到***每个四分音符的刻度或每秒的刻度.如果是前者,那么为了回答原始问题,您还需要查看提供0,1个或更多SET TEMPO的Track 0.它们*提供*微秒/四分音符.如果您想计算BPM(不是必需的),您可以从那里开始.您不需要任何先验知识. (4认同)

Vit*_*uel 8

您需要两条信息:

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

滴答声可以转换为播放秒数,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

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

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