Распознавание мелодии с помощью нечеткого поиска

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?татус байта F0 следует последовательность значений переменной длины. Можем получить 32-битовое значение, которое равно количеству следующих далее байтов, образующих SYSEX событие. Эта длина не включает в себя статус байт (F0).

Конец трека - FF 2F 00. Это событие является обязательным. Оно обязано быть последним событием каждой MTrk записи. Оно представляет собой явное обозначение конца MTrk записи. Допускается использование единственного мета-события Конец трека для каждой MTrk записи. Должно быть последним событием внутри блока трека. Точный момент окончания трека необходим секвенсорам для возможности воспроизведения трека в цикле или стыковки его с другим треком.

Темп FF 51 03 tt tt tt. Это мета-событие указывает на изменения в темпе. Три байта данных tt tt tt представляют собой величину темпа в терминах продолжительности одной четвертной длительности в микросекундах. Иными словами, величина tt tt tt сообщает секвенсору, что каждая четвертная длительность имеет продолжительность tt tt tt микросекунд.

Например, если мы указываем следующие 3 байта 07 A1 20, то каждая четверть должна составлять 0x07A120 (или 500000) микросекунд.

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

Время PPQN. PPQN - количество тиков, приходящихся на одну четвертную длительность, значение, устанавливаемое для паттерна в MIDI-файле. Секвенсор, как правило, использует внутренний счетчик времени, расположенный в аппаратной части оборудования, и на основе получаемого от него времени вычисляет значение PPQN, которое используется в качестве базовой единицы времени (один тик=v неделимая единица времени в файле MIDI). Для определения длительности музыкального события удобно использовать следующий формат времени: количество тактов: количество долей: количество тиков.

Такое представление оказывается гораздо более удобным и наглядным, чем указание количества микросекунд, истекших от начала до конца фрагмента. К тому же это привычный для музыкантов метод исчисления музыкального времени. Темп в терминах микросекунд указывает количество микросекунд, приходящихся на одну четвертную длительность. Из этого можно легко установить, что продолжительность одного тика будет равна темпу, выраженному числом микросекунд в четвертной длительности, деленном на величину PPQN. Так, если в MIDI-файле установлена величина PPQN в 96 единиц, то это значит, что продолжительность одного тика при заданном темпе в 500000 микросекунд на четверть составит 500,000 / 96 (или 5,208.3) микросекунд. Иными словами, между соседними MIDI-тиками должно вмещаться 5,208.3 микросекунд, если установлен темп 120 BPM и значение количества тиков в одной четвертной PPQN = 96. При этом в каждой четвертной длительности будет укладываться 96 тиков, в восьмой длительности - 48 тиков, в шестнадцатой - 24 тика и т.д. Отметим, что для любого значения темпа может быть выбрано любое значение временного разрешения, т.е. любое значение PPQN. Например, при темпе в 100 BPM можно установить временное разрешение PPQN = 96 или PPQN = 192, или для временного разрешения PPQN = 96 можно установить темп BPM = 100 или BPM = 120.

Временное разрешение и темп - это две совершенно не зависимые друг от друга величины. Обе эти величины необходимы, чтобы определить параметры вашего секвенсора или внешней MIDI-аппаратуры.

MIDI-часы (MIDI Clock). Временные байты MIDI-часов используются при передаче MIDI-сообщений для того, чтобы синхронизировать воспроизведение на двух устройствах. Первое устройство генерирует импульсы MIDI-часов в соответствии со своим темпом, а второе устройство подстраивается под них, синхронизируя воспроизведение. MIDI-часы связаны с текущим музыкальным темпом пьесы. Поскольку на каждую четвертную длительность приходится 24 импульса MIDI-часов, то продолжительность одного промежутка времени MIDI-часов составит величину равную темпу, выраженному в микросекундах, деленному на 24. Именно через такое количество микросекунд посылается очередное сообщение MIDI-часов. В вышеприведенном примере промежуток MIDI-часов составляет 500000/24, т.е. 20833.3 микросекунды. Легко посчитать, сколько приходится PPQN-тиков на один интервал MIDI-часов.

Если установлена величина PPQN = 96, то в одном промежутке MIDI-часов содержится 96/24 = 4 тика.

Временной отступ в терминах: SMPTE - SMPTE Offset FF 54 05 hr mn se fr ff. Это мета-событие устанавливает время начала воспроизведения данной MTrk-записи. Событие должно находиться в начале MTrk-записи. В файлах формата 1 временной отступ должен храниться там же, где указание темпа, т.е. в первой MTrk-записи. Здесь величина ff всегда обозначает количество сотых долей кадра (фрейма).

Обозначение размера: FF 58 04 nn dd cc bb. Обозначение размера представляется в виде набора четырех чисел. Числа nn и dd представляют собой числитель и степень числа 2 знаменателя в обозначении музыкального размера в том виде, в котором оно используется при нотной записи. Знаменатель всегда представляет собой степень числа 2. Второй степени соответствует четвертная длительность, третьей степени v восьмая. Число bb выражает количество используемых 32-длительностей в четвертной ноте.

Обозначение тональности: FF 59 02 sf mi. sf = -7, если используется 7 бемолей; -1, если используется 1 бемоль, и т.д.; 0, если тональность до-мажор или ля-минор; 1, если используется 1 диез; 2, если используется 2 диеза и т.д. mi = 0 и если тональность мажорная, 1 и если тональность минорная.

В файлах формата 0 обозначения темпа и размера могут быть разбросаны по разным местам в пределах одной MTrk-записи. В файлах формата 1 первая MTrk-з?/p>