Как рассчитать длительность midi-файла

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

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

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

или же

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

1 ответ

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

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

Другие вопросы по тегам