Язык MIDI
Язык MIDI состоит только из команд управления и параметров этих команд. Ничего другого по MIDI-кабелю не передается. Любые, даже такие непростые музыкальные моменты, как, например, игра баса легато с "подъездом" к каждой ноте на сильной доле такта, — это всего лишь результат обработки команд тон-генератором. Команды в языке MIDI называются сообщениями. Сообщения логично разделить на два основных типа: одни управляют звукообразованием, то есть говорят, например, какую ноту и как громко играть, вторые выполняют служебные функции, вроде изменения настроек тон-генератора и синхронизации. Поскольку извлечение звуков происходит в MIDI на определенном канале, сообщения первого типа называются сообщениями канала (Channel Messages). Сообщения второго типа называются системными (System Messages). Сообщения канала всегда относятся к какому-либо MIDI-каналу и обрабатываются тон-генератором только в том случае, если он настроен на прием данного канала. Выше говорилось, что соединение нескольких тон-генераторов через разъем MIDI Thru, при соответствующих настройках инструментов, позволяет передавать "каждому свое". Системные сообщения предназначаются всем устройствам в MIDI-системе, независимо от того, на прием каких каналов они настроены.
Голосовые сообщения канала посылают в тон-генератор информацию об управлении звуком. Они "докладывают" тон-генератору о том, что сейчас делает исполнитель — нажимает клавишу, крутит колесо модуляции, двигает фейдер или отпускает педаль. То есть голосовые сообщения описывают действия исполнителя в цифровой форме. Тон-генератор, получая эти сообщения, анализирует их и реагирует на них примерно так: "Ага, это нажатие клавиши До первой октавы — нужно воспроизвести ноту; это поворот звуковысотного колеса — нужно сместить у ноты высоту тона; а это — неизвестное мне сообщение, ничего делать не буду". Тон-генератор может работать в нескольких режимах (о них поговорим далее), и в каждом режиме он реагирует на голосовые сообщения по-разному. Сообщения режима канала как раз и нужны для переключения этих режимов, но они выполняют и еще несколько полезных действий. Общесистемные сообщения выполняют несколько разнородных задач. В их числе — синхронизация MIDI- и аудиоустройств (например, магнитофонов) посредством протокола MIDI Time Code (MTC), передача позиции песни, выбор песни и даже запрос на подстройку осцилляторов синтезатора. Системные сообщения реального времени предназначены для синхронизации MIDI-устройств, например, секвенсоров и драм-машин, по протоколу MIDI Clock. Сюда же входят сообщения начальной инициализации ("сброса") устройства и предотвращения некорректной работы (выключения зависших нот). Сообщения реального времени отличаются от всех других тем, что имеют наивысший приоритет передачи, то есть, например, легко могут вклиниться между частями другого сообщения. Это и понятно — ритмическая точность дороже всего. Системные эксклюзивные сообщения (обозначаемые для краткости SysEx) — это своеобразная палочка-выручалочка для производителей устройств. Сегодня на рынке существует множество типов оборудования, и каждый конкретный прибор имеет свои специфические возможности. Организации MMA и JMSC могли пойти по пути постоянных обновлений спецификации MIDI: появилась какая-то новая функция, скажем, в дымовой машине — выделить под нее новое сообщение и занести в стандарт. Понятно, что это тупиковый путь. За всем не уследишь, а абсолютной совместимости между устройствами все равно не добиться (да и какая совместимость может быть у дымовой машины и синтезатора?). Поэтому было решено дать возможность каждому производителю определять свои собственные (эксклюзивные, исключительные) сообщения, даже под конкретное устройство. Представьте, что, например, фирма Roland выпустила новый звуковой модуль с необычной функцией. Для управления этой функцией нет стандартного голосового сообщения, предусмотренного спецификацией MIDI. Что делает фирма Roland? Она придумывает свое эксклюзивное сообщение, с помощью которого и происходит управление функцией. Для того, чтобы эксклюзивные сообщения одних фирм не мешали другим, каждый производитель получает свой уникальный идентификатор и использует его в заголовке сообщения. Так что звуковой модуль, скажем, фирмы Yamaha, увидев в заголовке сообщения SysEx идентификатор Roland, говорит себе: "Так, это не для меня, я тут все равно ничего не пойму, пропускаю все сообщение". Несколько сообщений SysEx являются универсальными и поддерживаются устройствами разных производителей. Эти сообщения применяются для настройки таких параметров тон-генератора, как общая громкость и панорама, а также для реализации дополнительных протоколов в рамках MIDI, например, протокола передачи семплов (MIDI Sample Dump Standard), управления сценическим светом и пиротехническими устройствами (MIDI Show Control), управления транспортными функциями оборудования (MIDI Machine Control). Ну вот, разобрались с тем, какие сообщения бывают. Теперь пора выяснить, как их передавать. Понятно, что каждому сообщению нужно присвоить свой код, однако прежде чем перейти к этому, необходимо четко представлять, как хранится информация в цифровых устройствах.
|