Студопедия — Мета-события
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Мета-события







Мета-события, как говорилось ранее, предназначены для хранения дополнительной информации (необходимой секвенсорам и проигрывателям файлов), которая не передается по MIDI-интерфейсу. Мета-событие начинается со статус-байта 0xFF (который в протоколе MIDI означает команду сброса, System Reset; таким образом, в SMF он переопределен). Затем идет тип мета-события (один байт, так что всего возможно до 128 мета-событий), затем — длина данных, выраженная в форме величины переменной длины, затем — сами данные (рис. 19). Метасобытия, происходящие в одно и то же время, могут выполняться в любом порядке.


На сегодняшний день определены 17 мета-событий. Так же, как и с блоками, в будущем могут быть определены их новые типы, которые не будут узнаваться старыми программами. Секвенсор или другая программа не обязаны поддерживать все мета-события, определенные спецификацией.

Sequence Number (0x00). Это необязательное мета-событие имеет структуру, показанную на рис. 20. Оно задает номер секвенции (паттерна), на который можно ссылаться в дальнейшем при помощи сообщений MIDI Cueing. В таком виде это мета-событие имеет смысл только для формата 2, поскольку в файлах формата 0 и 1 есть только одна секвенция (то есть целая композиция). Событие должно располагаться в начале трека, перед любым событием с ненулевым дельта-временем, и перед любым другим MIDI-событием. Если номер секвенции опущен, то считается, что секвенции (паттерны) следуют в порядке расположения блоков трека в файле. Если необходимо сохранить несколько многотрековых композиций в виде группы файлов формата 0 или 1, то событие Sequence Number может использоваться в качестве номера файла.


Text Event (0x01). Событие задает любое количество текста, описывающего все, что угодно. Структура события показана на рис. 21. Длина текста задается переменным способом (то есть в виде величины переменной длины). Текстовые мета-события могут располагаться в любом месте трека и использоваться в качестве "подстрочника" (то есть, слов песни, lyrics) или описания опорных точек (маркеров). Текст должен представлять собой печатные ASCII-символы. Допускаются символы за пределами этого набора (верхние 128, там, где обычно располагаются национальные кодировки). Программы, которые не поддерживают расширенный набор, должны игнорировать такие символы (на деле многие секвенсоры вместо русских букв выводят "кракозяблы").


К текстовым событиям относятся еще несколько (до типа 0x0F). Ко всем им применимо сказанное ранее, только служат эти события разным целям.

Copyright Notice (0x02). Содержит заметку об авторских правах. Заметка должна содержать символы "(", "C" и ")", год и владельца авторских прав. Если в одном файле содержатся несколько произведений, все заметки об авторских правах должны быть размещены в начале файла. Заметка должна быть первым событием в первом блоке трека в момент времени 0.

Sequence/Track Name (0x03). Содержит название произведения (если находится в файле формата 0 или в первом блоке трека в файле формата 1), в остальных случаях — название трека.

Instrument Name (0x04). Содержит название инструмента, которым должен исполняться трек.

Lyric (0x05). Задает слова песни, которые должны быть исполнены в указанное время. Обычно каждый слог представлен отдельным событием Lyric, то есть для каждого слога четко задано время исполнения. В 1997 году организация MMA расширила это событие, добавив команды форматирования при выводе текста на экран, поддержку многобайтовой кодировки символов и Unicode, а также информацию о произведении (название, композитор, исполнитель). Расширенное мета-событие Lyric предложено называть Lyric/Display Meta Event.

Marker (0x06). Событие располагается обычно на первом блоке трека в файле формата 1 (или на единственном треке формата 0). Определяет позицию внутри произведения и одновременно задает ее имя.

Cue Point (0x07). Задает точку привязки партитуры к моменту кино-, видео- или сценического действия и одновременно описание момента (например, "Машина въехала в дерево", "Герой получил пощечину").

Program Name (0x08). Это мета-событие служит для визуальной ориентировки и информирования пользователя об используемом имени пэтча на данном канале. Непосредственно за этим событием должны следовать события Bank Select и Program Change, посредством которым реально выбирается пэтч. Если на протяжении звучания трека на том же MIDI-канале изменяется пэтч, событие Program Name может встречаться перед каждым таким изменением.

Device Name (0x09). Это мета-событие позволяет в одном MIDI-файле задать несколько устройств воспроизведения (тон-генераторов), то есть реализовать более 16 MIDI-каналов. Например, в аранжировке могут быть задействованы два тон-генератора, первый подключен к порту "MIDI Out 3" интерфейса, второй — к порту "MIDI Out 4" (такое имя портам присвоила операционная система). Выход одного трека направлен на пятый MIDI-канал порта "MIDI Out 3", выход другого — также на пятый MIDI-канал, но порта "MIDI Out 4". Тогда в SMF формата 1 будут сохранены два блока треков, в каждом из которых события будут происходить на пятом канале, но у треков будет разное мета-событие Device Name ("MIDI Out 3" и "MIDI Out 4" соответственно).

Имя устройства можно задавать произвольно, ориентируясь на текущее оборудование и способ его подключения. При работе на одном компьютере с одним набором и способом коммутации внешних устройств событие Device Name со своей задачей справляется прекрасно. Но стоит загрузить полученный MIDI-файл на компьютер, оснащенный другими устройствами, названия устройств из файла окажутся бесполезными (остается только рассчитывать на интеллектуальные способности секвенсора, который по названию устройств сможет "догадаться" о том, на какой синтезатор лучше направить выход с трека).

Событие Device Name должно присутствовать только один раз, в самом начале трека, перед любыми MIDI-событиями. Таким образом, файл формата 0 может иметь только одно устройство воспроизведения.

MIDI Channel Prefix (0x20). Структура события показана на рис. 22. Поскольку SysEx-события и мета-события не содержат в статус-байте номер MIDI-канала, нужен способ привязки этих событий к MIDI-каналу. Событие MIDI Channel Prefix содержит номер MIDI-канала, с которым ассоциируются все последующие SysEx- и мета-события. Канал, заданный таким образом, остается действительным до следующего нормального MIDI-события (которое содержит номер канала) или до следующего мета-события MIDI Channel Prefix.


Если каждый трек в секвенсоре соответствует одному MIDI-каналу, то при записи аранжировки в формате 0 это мета-событие помогает сохранить связь мета-событий с конкретным треком. Подобная возможность предусмотрена и в формате файлов Yamaha ESEQ.

End of Track. (0x2F). Это обязательное мета-событие (рис. 23) указывает момент окончания трека. Должно быть последним событием внутри блока трека. Точный момент окончания трека необходим секвенсорам для возможности воспроизведения трека в цикле или стыковки его с другим треком.


Set Tempo (0x51). Задает текущий темп в необычном измерении — микросекунды на четверть (структура события показана на рис. 24). Представление темпа в виде "время на четверть" вместо "четверть за время" позволяет осуществить точную долговременную синхронизацию при работе по протоколу MTC или SMPTE. В этом случае конец четырехминутной композиции при темпе 120 BPM будет определяться с точностью не хуже 500 микросекунд. Например, при темпе 120 BPM в одной четверти содержится 500000 микросекунд (три байта данных события равны 0x07A120).


Преобразование дельта-времени в миллисекунды

Для преобразования дельта-времени в миллисекунды необходимы два блока информации: количество тиков в четверти и текущий темп (обычно задан соответствующим мета-событием в треке темпа/размера). Темп выражается в микросекундах на четверть (т. е. 500000 мкс соответствуют темпу 120 BPM, так как 120 BPM — это одна четверть в 0,5 с). Для преобразования дельта-времени в миллисекунды используется следующая формула:


Так, если число тиков 3240, темп 120 BPM (500000 мкс на четверть), 96 тиков в четверти (96 PPQN), время в миллисекундах равно 3240 x (500000/96) / 1000 = 16875 мс (или 16,875 с).

В реальной жизни SMF может содержать изменения темпа и размера, так что поиск расчетного времени для каждого тика оказывается непростой задачей.

SMPTE Offset (0x54). Структура показана на рис. 26. Это необязательное мета-событие задает время SMPTE, с которого начинается трек. Событие должно располагаться в начале трека, перед любым другим событием с ненулевым дельта-временем, и перед любым MIDI-событием. В файле формата 1 смещение SMPTE должно храниться с картой темпа на первом треке. Поле ff содержит сотые доли кадра, даже в том случае, если в блоке заголовка определено другое количество тиков на кадр.


Time Signature (0x58). Событие задает музыкальный размер, структура показана на рис. 27. Поля nn и dd — числитель и знаменатель размера, при этом знаменатель является степенью числа 2. Поле cc задает число сообщений MIDI Clock, приходящихся на один удар метронома. Параметр bb — это число тридцать вторых нот, приходящихся на 24 сообщения MIDI Clock (то есть на четверть). Зачем он нужен, если в четверти всегда восемь тридцать вторых? Дело в том, что некоторые секвенсоры позволяют задавать для нотации четверть произвольного размера (например, равную 48-ми сообщениям MIDI Clock). В этом случае на 24 сообщения MIDI Clock будет приходить не восемь, а четыре тридцать вторых. Событие Time Signature при размере 6/8, клике метронома на каждые три восьмых и 24-х MIDI Clock в четверти будет выглядеть как 0xFF 0x58 0x04 0x06 0x03 0x24 0x08.


Key Signature (0x59). Событие задает текущую тональность (точнее, ладотональность — высоту и наклонение лада, мажор/минор), рис. 28. Поле sf содержит количество ключевых знаков в тональности (от -7 до +7, отрицательные значения — бемоли, положительные — диезы, нулевое значение — тональность До мажор или Ля минор). Поле mi уточняет наклонение: 0 (мажор), 1 (минор).


Sequencer-Specific Meta-Event (0x7F). Это событие (рис. 29) применяется аналогично системным эксклюзивным сообщениями в протоколе MIDI. То есть, позволяет записывать в MIDI-файл информацию, специфичную для конкретного секвенсора. Длина события выражается переменным способом. Первый байт данных (или три байта) содержат ID производителя. Остальной формат события определяется конкретным производителем под конкретную программу или семейство программ. Так же, как и с SysEx, производителям рекомендуется публиковать формат событий Sequencer-Specific, чтобы другие могли знать, как их использовать.


Файлы для караоке

Появление стандартных MIDI-файлов привело к развитию целой индустрии караоке — специальных программ-проигрывателей, отображающих тексты песен синхронно с инструментальной версией композиции, воспроизводимой синтезатором звуковой платы. В большинстве своем файлы для караоке имеют расширение KAR и представляют собой самые обыкновенные MIDI-файлы с добавленным "подстрочником". Это означает, что если вы наткнулись на подобный файл, но в системе не установлен караоке-плеер, достаточно изменить расширение KAR на MID, и вы получите стандартный MIDI-файл.

Расширение KAR впервые применила известная компания Tune 1000 Corp (www.tune1000.co.uk), которая сегодня является признанным лидером в индустрии караоке и продает десятки тысяч файлов любителям "попеть в микрофон". Особенность файлов KAR — слова песни в них хранятся не в мета-событиях Lyric, а в текстовых событиях общего назначения (Text Meta Event).

Существуют и другие караоке-форматы, такие как TXK, CRT, ST3, TAB. Они содержат, наряду со звуком и текстом, графику и даже гитарные табулатуры. Естественно, ни о какой совместимости с SMF в этом случае речи не идет, хотя внутри себя такие файлы могут скрывать SMF в чистом виде.







Дата добавления: 2015-08-30; просмотров: 724. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

БИОХИМИЯ ТКАНЕЙ ЗУБА В составе зуба выделяют минерализованные и неминерализованные ткани...

Типология суицида. Феномен суицида (самоубийство или попытка самоубийства) чаще всего связывается с представлением о психологическом кризисе личности...

ОСНОВНЫЕ ТИПЫ МОЗГА ПОЗВОНОЧНЫХ Ихтиопсидный тип мозга характерен для низших позвоночных - рыб и амфибий...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия