Как рассчитать длительность midi-файла
Я читаю файлы midi в as3 (flash cs5) с помощью полезной библиотеки, которая называется midas ( http://code.google.com/p/midas3/) - библиотека midi-as3.
Я пытаюсь выяснить простой способ рассчитать всю продолжительность файла midi (например - общее время 4 минуты или 6 минут...). Я предполагаю, что мог бы рассчитать последнюю ноту каждого трека + проверить темп и выяснить это, но мне было интересно, если:
Является ли продолжительность файла midi записана где-то в данных, которые я мог бы просто извлечь и использовать?
или же
Есть ли простой способ рассчитать его, не пробегая весь файл и сравнить последние заметки / темпы.
1 ответ
Нет, вам нужно прочитать весь файл и определить время, когда вы читаете последнюю заметку. MIDI-файлы, по сути, являются потоковыми данными, поэтому в заголовке файла нет поля "длина".
Редактировать: После дальнейшего размышления, "потоковое" не совсем хороший способ описать MIDI-файлы. MIDI-файлы имеют фиксированную длину в байтах, которая хранится в заголовке блока IFF. Тем не менее, нет никакого свойства, как для длины файла в секундах, но при условии, что вы можете прочитать все байты в последовательность (и не забудьте учесть изменения темпа!), Это не должно быть слишком сложным определить длину файла в секундах.