Поделиться через


Сведения о времени

Сведения о времени для события MIDI хранятся в члене dwDeltaTime структуры MIDIEVENT. Время задается в тиках, как это определено в спецификации Standard MIDI Files 1.0. Длина тика определяется форматом времени и, возможно, темпом, связанным с данным потоком. Дополнительные сведения о потоках см. в разделе MIDI Streams.

Тик выражается либо как микросекунды на четвертную ноту, либо как тики времени SMPTE (Общество кино и телевизионных инженеров). Приложения, отправляющие сообщения MIDI по отдельности или использующие необработанные сообщения MIDI, используют информацию о четвертной ноте и темпе для определения длительности тика. Приложения, которые предварительно обрабатывают сообщения MIDI, могут хранить истекшее время в виде количества используемых единиц SMPTE.

Длительность четверти указывается нулем в старшем бите (бит 15) слова временного деления. Оставшаяся часть слова содержит количество тиков на четвертную ноту. Темп, связанный с потоком данных MIDI, хранится в единицах (микросекундах за четвертную ноту) в соответствии с спецификацией Standard MIDI Files 1.0. Например, четвертная нота в размере 4/4, использующая темп 500 000 микросекунд за четверть ноты, играет со скоростью 120 ударов в минуту.

Форматы деления времени SMPTE полностью определяют продолжительность тика без необходимости использования информации о темпе. При использовании форматов времени SMPTE последовательности MIDI можно синхронизировать с другими событиями SMPTE, такими как видео или полосатый звук. Время SMPTE указывается с 1 в бите старшего разряда (бит 15) слова, разделяющего время. Остальная часть наиболее значимых байтов указывает формат SMPTE, используемый в качестве отрицательных значений. Поддерживаемые форматы SMPTE и соответствующие значения (в скобках) — 24 (-24), 25 (-25), 30 (-30) и 30 раскрывающихся (-29). Младший байт слова временного деления указывает количество тиков на кадр SMPTE.