2012-06-09 2 views
2

Edit: Добавлено/видео сайта Production Audio https://video.stackexchange.com/questions/4148/creating-midi-files-explanation-of-time-division-in-header-chunkСоздание MIDI-файлов - Объяснение разделения времени в заголовке фрагмента

Я читал о структуре файлов MIDI, как я заинтересован в написании приложений, которые читать/записывать файлы в этом формате, но я немного смущен о тайм-ауте в заголовке.

Мое понимание состоит в том, что эта часть представляет собой по существу 16 бит, где, если знаковый бит равен 1, остальные биты определяют таймкод SMPTE, а если он равен 0, то бит указывает количество тиков/импульсов на четвертную ноту (PPQ) ,

Мои вопросы, в частности, являются:

  • Что делает выше/ниже PPQ сделать в MIDI-файл? Это меняет качество звука? Я понимаю, что он не влияет на темп
  • Как временный код SMPTE влияет на воспроизведение MIDI-файла?

По существу, я пытаюсь понять, что это на самом деле означает для конечного результата.

+0

Поскольку вы не запрашиваете помощь в кодировании, я поставил вопрос. Это должно быть на AV –

+0

Мои извинения, я новичок в этом сообществе. У вас есть ссылка на нужное место, чтобы опубликовать этот вопрос? – rakemanyohneth

+0

У меня нет ссылки. Но обмен стека имеет один на своих сайтах. –

ответ

1

Я не зарегистрировал более на этом форуме, так что я буду вставить здесь:

Я могу ответить на часть 1.

PPQ абсолютно влияет на темп MIDI-файла. Он не меняет качество звука, он меняет скорость обработки событий.

Темп определяется в виде микросекунд за четвертную ноту. Если вы изменяете количество тиков (импульсов) в четвертной ноте (PPQ), вы эффективно изменяете скорость воспроизведения файла. Стандартное значение для PPQ равно 480. Если единственное изменение, которое вы делаете в файле, это удвоить PPQ, вы вдвое уменьшите скорость воспроизведения (темп).

+0

Gotcha! Поэтому дайте мне знать, подходит ли следующий сценарий: Если я первоначально установил PPQ, скажем, 480, это не отличается от файла, который был создан с PPQ 96 (и темпом по умолчанию). Если я затем изменил PPQ первого файла на 240, он будет больше похож на воспроизведение на 240 BPM (темп 2 * по умолчанию из-за уменьшения количества импульсов между нотами)? Аналогично, если второй файл (96 PPQ один) был 240 BPM для запуска, темп двух файлов MIDI был бы таким же после изменения PPQ первого? – rakemanyohneth

-1

@LeffelMania получил это право, но я просто хотел добавить, что SMPTE - это просто другой способ сохранить время в вашей договоренности. Если вы используете SMPTE, вы получаете абсолютное время для каждого события, но в противном случае события относятся к предыдущим.

По моему опыту, большинство MIDI-файлов используют традиционный способ относительной синхронизации событий (т. Е. Не SMPTE), поскольку с этим легче работать.

+0

А, спасибо! Да, я посмотрел на SMPTE и не мог понять, что нужно. Я думаю, если бы вы синхронизировались с видео, но я не понимаю, почему это нужно сделать. – rakemanyohneth

+1

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

+0

Это «Если вы используете SMPTE, то вы получаете абсолютное время для каждого события» неверно. – Slight

0

Я знаю, что это старый вопрос, но на него не ответил полностью или полностью точно.

Все файлы MIDI используют дельта-времена. Нет абсолютных таймингов в MIDI-файле, SMPTE или нет.

В исходных файлах формата MIDI информация о времени заголовка указывает PPQN или импульсы на четвертную заметку. Мета-событие SetTempo определяет количество микросекунд за четвертную ноту (темп). Информация о событиях MIDI-события определяет количество импульсов между этим событием и последним событием.

В MIDI-файлах в формате SMPTE информация о времени заголовка указывает два значения - кадры в секунду и фрейм-подразделения. Кадры в секунду - это буквально FPS (некоторые значения нужно скорректировать, например 29, 29,97). Подразделения кадров можно рассматривать как количество импульсов на кадр. Информация о событиях MIDI-события определяет количество фреймовых подразделов (или импульсов) со времени последнего события.

Важным отличием является то, что файлы SMPTE не используют мета-событие SetTempo. Все временные шкалы фиксируются полем времени заголовка.