Преобразование MIDI-тиков в реальные секунды воспроизведения - PullRequest
12 голосов
/ 10 января 2010

Я хочу знать, как преобразовать MIDI-тики в реальные секунды воспроизведения.

Например, если MIDI PPQ (количество импульсов на четвертную ноту) равно 1120, как мне преобразовать его в секунды воспроизведения в реальном мире?

Ответы [ 2 ]

16 голосов
/ 10 января 2010

Формула составляет 60000 / (BPM * PPQ) (миллисекунды).

Где BPM - темп дорожки (ударов в минуту).

(т. Е. Дорожка 120 ударов в минуту будет иметь время MIDI (60000 / (120 * 192)) или 2,604 мс на 1 такт.

Если вы не знаете BPM, сначала вам нужно будет это определить. Время MIDI полностью зависит от темпа дорожки.

4 голосов
/ 18 февраля 2019

Вам нужно две части информации:

  • 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 представляет его в мкс на квартал (период).

...