Program
Change — сообщение о смене MIDI-инструмента (тембра, патча,
программы). Параметры сообщения — способ выбора банка, номер
банка, номер инструмента в банке.
Поскольку MIDI-инструменты
распределены по банкам, в спецификации MIDI сообщению Program Change
соответствует совокупность сообщений: Program Change, Bank Select MSB и
Bank Select LSB.
Для выбора MIDI-инструмента предназначено
сообщение Program Change формата Ck pp, где k — номер
MIDI-канала, pp — номер MIDI-инструмента.
Для переключения банков служат контроллеры:
* № 0 — Bank Select MSB — контроллер выбора банка (старший байт);
* № 32 — Bank Select LSB — контроллер выбора банка (младший байт).
Одним MIDI-устройствам для переключения банков требуется только один из
этих контроллеров, другим — оба. Обработка MIDI-устройством
команды смены банка и MIDI-инструмента может занять значительное время
(десятки миллисекунд и более).
В спецификации General MIDI
регистрируемые (Registered Parameter Number — RPN) и
нерегистрируемые (Non-Registered Parameter Number — NRPN)
параметры введены дополнительно для расширенного управления синтезом.
Номера RPN и NRPN передаются при помощи контроллеров:
* № 98 — NRPN LSB — контроллер младшего байта параметра NRPN;
* № 99 — NRPN MSB — контроллер старшего байта параметра NRPN;
* № 100 — RPN LSB — контроллер младшего байта параметра RPN;
* № 101 — RPN MSB — контроллер старшего байта параметра RPN.
MIDI-устройство запоминает однажды переданные ему сообщения RPN или NRPN, после которых передаются значения соответствующего параметра при помощи контроллеров:
* № 6 — Data Entry MSB — контроллер вводимых данных (старший байт);
* № 38 — Data Entry LSB — контроллер вводимых данных (младший байт).
Такой механизм передачи сообщений можно охарактеризовать как "контроллер в контроллере". Стандартом определена интерпретация только трех RPN (их значения задаются старшими байтами параметров Data Entry):
* RPN 0 — Pitch Bend Sensitivity — контроллер для изменения чувствительности колеса сдвига тона (Pitch Bend);
* RPN I — Fine Tuning — контроллер для точной подстройки строя синтезатора;
* RPN 2 — Coarse Tuning — контроллер для грубой подстройки строя синтезатора.
RPN 0 определяет количество полутонов, на которое смещается высота тона
при получении сообщения Pitch Bend Change с максимально допустимым
абсолютным значением параметра. По умолчанию принимается диапазон
перестройки частоты на плюс-минус два полутона.
В сообщении RPN 0
содержится параметр X, определяющий ширину диапазона перестройки тона.
Он рассчитывается по формуле X = 1284N+C, где N — ширина
диапазона в полутонах, С — уточнение ширины диапазона в центах
(сотых долях полутона). Некоторые синтезаторы (например, поддерживающие
спецификации GS или XG) воспринимают только целое число полутонов
(значение параметра С игнорируется). Чтобы, например, установить ширину
диапазона перестройки частоты колеса сдвига тона равной плюс-минус
одной октаве, нужно передать сообщение NRPN 0 1536. Число 1536
рассчитано следующим образом: 128412 = 1536 (12 — количество
полутонов в октаве).
RPN 1 и RPN 2 позволяют сместить строй
инструмента в MIDI-канале на заданное количество центов при точной или
полутонов при грубой подстройке. За относительный ноль принимается
значение 64.
Интерпретация остальных контроллеров RPN и NRPN
стандартом не определена. Каждый производитель MIDI-аппаратуры может
использовать их по своему усмотрению.
Спецификацией Roland GS (General Synth) определены дополнительные контроллеры:
* № 91 — Reverb Level — контроллер глубины реверберации;
* № 93 — Chorus Level — контроллер глубины хоруса.
Спецификацией Yamaha XG (extended General) определены контроллеры, которые не предусмотрены спецификацией Roland GS:
* № 71 — Harmonic Content — контроллер глубины резонанса фильтра;
* № 72 — Release Time — контроллер времени затухания звука после выключения ноты;
* № 73 — Attack Time — контроллер времени нарастания звука после включения ноты;
* № 74 — Brightness — контроллер частоты среза фильтра;
* № 84 — Portamento Control — контроллер номера ноты,
начиная с которой будет выполнено плавное скольжение по частоте до
очередной включенной ноты (портаменто);
* № 94 — Variation Level — контроллер глубины эффекта Variation;
* № 96 — RPN Increment — контроллер увеличения значения RPN на 1, значение контроллера RPN Increment игнорируется;
* № 97 — RPN Decrement — контроллер уменьшения значения RPN на 1, значение контроллера RPN Decrement игнорируется.
Таким образом, устройства, соответствующие спецификациям GM, GS и XG,
обладают различными возможностями по управлению параметрами синтеза.
Исчерпывающие сведения о контроллерах, регистрируемых и
нерегистрируемых параметрах можно найти только в документации на
конкретные модели звуковых карт, синтезаторов и модулей синтеза.
Aftertouch — сообщение о силе давления на нажатые клавиши
Aftertouch — сообщение о силе давления на все нажатые клавиши, с
которыми связан текущий MIDI-канал. Параметр сообщения —
давление. В спецификации MIDI этому сообщению соответствует сообщение
Channel Pressure, или Channel Aftertouch, формата Dk pp, где k —
номер MIDI-канала, рр — давление.
Сообщение Aftertouch
несет информацию об изменении давления на клавиши после прикосновения к
ним. Простые модели клавиатур не имеют датчика давления. Модели средней
сложности имеют датчик, общий для всех клавиш, и посылают сообщения
Channel Pressure, предварительно усреднив давление на все нажатые
клавиши. Сложные модели оборудованы отдельным для каждой клавиши
датчиком и посылают сообщения об изменении состояния каждого датчика.
Реакция синтезатора на эти сообщения стандартом не определена. Обычно
синтезаторы с функцией Aftertouch поддерживают команды ассоциирования
сообщений с выбранным параметром синтеза (с громкостью, модуляцией,
параметром фильтра или эффекта и т. п.).
Pitchband — управление регулятором тона
Pitchband —
управление регулятором тона. Параметр сообщения — положение
регулятора тона, задаваемое числом от -8192 до 8191. В спецификации
General MIDI этому сообщению соответствует сообщение Pitch Bend Change
формата Ek II mm, где k — номер MIDI-канала, 11 — младший
байт, mm — старший байт значения контроллера. Контроллер задает
смещение высоты тона для всех сообщений типа Note, передаваемых по
данному MIDI-каналу. Значение контроллера изменяется от 0 до 16 383;
среднее значение (8192) принимается за относительный ноль.
Чувствительность контроллера Pitchband может изменяться при помощи
регистрируемого параметра RPN 0. По умолчанию в качестве предельного
значения смещения тона принимается интервал в два полутона (с любым
знаком).
SysEx (System Exclusive) — привилегированные системные сообщения
SysEx (System Exclusive) — сообщения, предназначенные для обмена
специфической информацией, которая по усмотрению производителя
MIDI-устройства может иметь различное назначение. С помощью сообщений
этих типов синтезатору подаются такие команды, как, например, сброс
(Reset), смена типа эффекта и т. п. В спецификации MIDI эти сообщения
относятся к привилегированным системным сообщениям (System Exclusive).
Параметром таких сообщений является блок данных —
последовательность шестнадцатеричных чисел. В начале блока данных
обязательно передается число FO, а завершает его число F7.
Привилегированные системные сообщения чем-то похожи на машинные коды и
предназначены для интерпретатора MIDI-команд синтезатора.