Исходным источником информации о временной метке MIDI является метасобытие в файле MIDI;
Мета-события начинаются с FF и имеют следующий формат:
FF xx nn dd
байт;
«Метасобытие настройки скорости ноты», «Метасобытие настройки тактового размера» и «Основное время заголовка файла» в MIDI-файле определяют флаг события MIDI-песни;
ссылка 【BLE MIDI】MIDI Сводка анализа формата файла ★★★ 8. ФФ 51 03 продолжительность четвертной ноты Глава блога , могу знать , FF 51 03
это признак установки времени ;
FF 51 03 07 A1 20
: 32 ~ 37 байт , Обратите внимание на флаг скорости ;
FF 51 03
да Обратите внимание на флаг скорости Кусочек , позади 07 A1 20
3 байтдаодининдивидуальныйчисло Характер , представлять четвертная нота продолжительность , Единица измерения — микросекунды. ;
07 A1 20
Соответствующее десятичное число 500000 , полмиллиона ,То естьодининдивидуальныйчетвертная нотада 50 Десять тысяч микросекунд ;
в предыдущем 【BLE MIDI】MIDI Анализ формата файла ( MIDI Анализ заголовка файла | MIDI Идентификатор заголовка файла | MIDI Длина заголовка файла | MIDI Формат файла | MIDI Количество дорожек | основное время ) 2. МИДИ Анализ заголовка файла 5、основное время Глава блога разобрать наодининдивидуальныйчетвертная нотаиметь 480 индивидуальный tick ;
этотчас Можетк Рассчитать Каждыйиндивидуальный tick продолжительностьдля
микросекунды;
Давайте рассмотрим расчет дельты-времени:
8E 7E
Соответствующие двоичные цифры : 1000 1110 0111 1110
Нет.одининдивидуальныйбайт 8E Соответствующие биты двоичных данных 1000 1110,Седьмой среди них 1 значит это delta-time извысокий Кусочекбайт, позади 000 1110 фактические числовые данные ;
Нет.одининдивидуальныйбайт 7E Соответствующие биты двоичных данных 0111 1110,Седьмой среди них 0 значит это delta-time из Низкий Кусочекбайт, позади 111 1110 фактические числовые данные ;
тогда delta-time Фактические данные 000 1110 111 1110 , После перегруппировки это 111 0111 1110 , Должен delta-time Значение 1918 , То есть 1918 индивидуальный tick число ;
выше delta-time да 1918 индивидуальный tick , Соответствует извремяда
микросекунды
FF 58 04 04 02 18 08
: 39 ~ 45 байт , тактовый размер ;
FF 58 04 датактовый размеризлоготип ;
04 02 18 08 соответственно означает:
, Знаменатель да 4 ;
позади 00 да delta-time , и Внизодининдивидуальный midi разнесенный по событиям tick число ;
delta-time ссылка 【BLE MIDI】MIDI Анализ формата файла ( MIDI Орбитальный анализ | MIDI гусеничная головка | MIDI длина пути | delta-time интервал ) 4. дельта-время интервал Глава блога ;
ссылка 【BLE MIDI】MIDI Сводка анализа формата файла ★★★ 2. МИДИ Анализ заголовка файла 5、основное время Глава блога ;
01 E0
: 12 ~ 13 байт , используется для указания время ;
2 индивидуальныйбайт , быть разделенным на 3 часть , наивысшая позиция ( Нет. 15 Кусочек ) как логотип , Нет. 8 ~ 14 Кусочек как часть , Нет. 0 ~ 7 Кусочек как часть ;
Из-за организации формата с прямым порядком байтов , mid Файл Нет. 12 байт ( нижний адрес ) да высокий Кусочек , mid Файл Нет. 13 байт ( высокий адрес ) да Низкий Кусочек ;
01 E0
Бинарная форма : 0000 0001 11110 0000 ;
наивысшая позиция 0000 0001 11110 0000 да 0 ,красныйизданаивысшая позиция,Указывает текущий представлятьизсобытие Форматда Тип 1, Нет. 0 ~ 14 Кусочек представлятьизда четвертная нотаиз tick число ;
шестнадцатеричный 01 E0
Перепискадесятичныйчисло Характерда 480 ,То естьобъяснятьодининдивидуальныйчетвертная нотаиметь 480 tick ;
tick давремяодин Кусочек, Да mid Файлсерединарасчетвремяиз основной единицы Кусочек ;
существовать Заголовок файлаизосновное времясередина , Можетк Получать Каждыйиндивидуальный четвертная нотаиз tick или pulse число ;
существовать Meta событие Обратите внимание на настройки скоростисобытие середина , Можетк Получать Каждыйиндивидуальный четвертная нотаизмикросекундычисло ;
В это время вы можете tick или pulse ценить , и реалистичныймикросекунды время соответствуют ;
Если вы хотите рассчитатьспецифическийиз Раздел Кусочекнабор , Необходимо рассчитывать на основе тактового размера ,
Только да было получено выше четвертная нота изчасценить информацию , Прямо сейчас четвертная нотаиз tick число , а также четвертная нота измикросекундычисло ;
Если вы хотите рассчитать бить время ,Хочу увидеть Тактовый размерсерединаиз Знаменательценить,
, но Каждыйстрелятьизчасценить Используйте напрямую четвертная нота часценитьумножить на
;
, но Каждыйстрелятьизчасценить Да четвертная нотаизчасценить ;
, но Каждыйстрелятьизчасценить Используйте напрямую четвертная нота часценитьудалятьк
;
Каждыйиндивидуальный Разделизчасценить Да Каждыйстрелятьизчасценить умножить на числитель тактового размера ;