Как рассчитать продолжительность миди-файла - PullRequest
3 голосов
/ 18 мая 2011

Я читаю миди-файлы в as3 (flash cs5) с помощью полезной библиотеки, которая называется midas (http://code.google.com/p/midas3/) - библиотека midi-as3.

Я пытаюсь найти простой способ рассчитать всю продолжительность файла midi (например, общее время 4 минуты или 6 минут ...). Я предполагаю, что мог бы рассчитать последнюю ноту каждого трека + проверить темп и выяснить это, но мне было интересно, если:

Является ли продолжительность файла midi записанной где-то в данных, которые я мог бы просто извлечь и использовать?

или

Есть ли простой способ рассчитать его, не просматривая весь файл, и сравнить последние заметки / темпы.

1 Ответ

4 голосов
/ 18 мая 2011

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

Редактировать: После дальнейших размышлений «потоковая передача» не совсем хороший способ описания MIDI-файлов. MIDI-файлы имеют фиксированную длину в байтах, которая хранится в заголовке блока IFF. Тем не менее, нет никакого свойства, как для длины файла в секундах, но при условии, что вы можете прочитать все байты в последовательность (и не забудьте учесть изменения темпа!), Это не должно быть слишком сложным определить длину файла в секундах.

...