2009-07-03 9 views
5

Довольно простой вопрос, для которого у меня есть предположение, но я не могу найти окончательный ответ нигде.Как сообщение Midi TEMPO относится к другим трекам?

Фон: У меня есть многодорожечный midi-файл с элементами управления TEMPO на первом треке. Мне нужно перевести счет ABSOLUTE_TICK в другие дорожки на «Секунды» (смещение в дробных секундах от начала midi-файла).

У меня есть формула, связывающая ABSOLUTE_TICK с секундами на основе PulsePerQuarterNote (PPQN) для файла в темпе (MS за четверть ноты).

Вопрос: происходит ли изменение TEMPO на первом треке (дорожка 0) применительно ко всем остальным трекам?

Если да, тогда, когда я разбираю другие дорожки (например, трек 4, в котором меня интересуют сообщения NOTE_ON и NOTE_OFF), мне нужно будет держать палец, указывающий на изменения TEMPO в дорожке 0 параллельно. Это правильно?

Спасибо,

Марк

ответ

6

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

От MIDI fanatic's technical brainwashing center:

В формате 0 файла, изменения темпа разбросаны по одной МТРК. В формате 1 самый первый MTrk должен состоять только из событий темпа (и времени), чтобы его можно было прочитать некоторым устройством, способным генерировать «карту темпа». Лучше не размещать MIDI-события в этом MTrk. В формате 2 каждый MTrk должен начинаться с хотя бы одного начального события темпа (и времени).

Это говорит о том, что некоторые секвенсоры нарушают это правило и помещают фактические MIDI-события в первый трек вместе с информацией о времени, поскольку стандарт не является таким конкретным в этом отношении. Ваша программа должна иметь дело с обоими случаями, поскольку она, скорее всего, встретит MIDI-файлы в дикой природе, которые отформатированы таким образом.

+0

Спасибо Nik ... и ссылка, которую вы дали, на сегодняшний день является самой полезной ссылкой на MIDI, которую я нашел. –

+0

Да, я очень люблю эту веб-страницу. Это сокровищница для всех вещей MIDI, а также хорошая догадка юмористки, чтобы вещи не становились слишком сухими. Если вы еще не поняли это, главная страница портала находится на http://home.roadrunner.com/~jgglatt/ –

+0

Новый дом: http://www.blitter.com/~russtopia/MIDI/ ~ jglatt/tech/midifile.htm –