Есть ли смысл в том, что эти высокие числа соответствуют среднему темпу?

Я использую миди-библиотеку для as3 и получаю эти значения как темп (слева временная шкала и справа темп)

1712 11424264

3632 11424264

3670 2325000

3708 1417992

Предполагая, что в момент времени = 0 темп = 500000. Первые значения в 200 раз выше, почему они слишком высоки? Может я неправильно читаю? Когда я пытаюсь рассчитать реальное время нот, используя этот темп, я получаю высокие значения, которые, вероятно, неверны.


person Alon    schedule 17.03.2011    source источник
comment
Вы читаете MIDI-файл или по сети? Если файл, можете ли вы опубликовать весь фрагмент заголовка в шестнадцатеричном формате? Если не в сети, можете ли вы опубликовать сообщения, о которых идет речь?   -  person Brad    schedule 17.03.2011
comment
проблема была в том, что я неправильно прочитал шестнадцатеричный файл. теперь все в порядке и синхронизация по времени отличная   -  person Alon    schedule 17.03.2011


Ответы (1)


Темп не выражается в ударах в минуту (например, 120 ударов в минуту), что, как мне кажется, вы ожидаете получить. темп MIDI указывается в микросекундах на четвертную ноту.

Что касается значений в 200 раз выше, то да, это, наверное, немного подозрительно. Либо вы задаете неправильный вопрос (т. е. вы получаете не фактические события темпа MIDI, а что-то еще, что не является событием изменения темпа), или файлы MIDI действительно сумасшедшие. Лучший способ убедиться в этом — просто загрузить их в секвенсор и посмотреть там события.

person Nik Reiman    schedule 17.03.2011
comment
Спасибо за вашу помощь. Я должен был написать, что эти значения (11424264 и т. д.) представляют собой микросекунды на четвертную ноту, что я уже знаю. Я перепроверю вещи. возможно, я неправильно читаю шестнадцатеричный код (хотя вроде все в порядке). У вас есть название миди-секвенсора, который я могу достать? если есть бесплатный простой только для проверки, то было бы лучше... - person Alon; 17.03.2011
comment
Возможно, я неправильно прочитал шестнадцатеричный файл - вот значение, которое я написал: 0xAE5208 = 11 424 264, но, возможно, я должен прочитать его в обратном направлении и получить: 0x0852AE = 545 454? - person Alon; 17.03.2011
comment
Я был прав! все, что мне нужно было сделать, это прочитать шестнадцатеричный файл в обратном направлении. значения правильные - время синхронизируется идеально. - person Alon; 17.03.2011
comment
Рад, что это сработало для вас! Обязательно отметьте ответ как правильный, если вы считаете, что он правильный, чтобы другие люди, наткнувшиеся на этот вопрос в Google, могли извлечь пользу из ваших знаний. ;) - person Nik Reiman; 18.03.2011