Note — сообщение о нажатии MIDI-клавиши

Note — это сообщение о том, что нажата клавиша MIDI-клавиатуры. Параметры сообщения — нота (используется символьное обозначение), громкость и длительность.
Сообщения Note формируются программой на основе стандартных канальных MIDI-сообщений Note On (включение ноты) формата 9k nn vv и Note Off (выключение ноты) формата 8k nn vv, где k — номер MIDI-канала, nn — номер ноты, w — скорость (Velocity) нажатия клавиши (в Note On), no умолчанию соответствующая громкости звучания ноты, или скорость ее отпускания (в Note Off). Причем числа 9k, 8k, nn и w — шестнадцатеричные.
Сообщение о включении/выключении ноты MIDI-клавиатура генерирует при нажатии/отпускании клавиши. При этом MIDI-синтезатор включает/ выключает генератор соответствующего звука.
В MIDI номер ноты задается абсолютным номером полутона в диапазоне 0-127, причем центральной фортепианной клавише — ноте до первой октавы — соответствует десятичный номер 60. В соответствии с принятой стандартом MIDI нумерацией октав (с нуля) эта нота имеет обозначение С5. Однако в Cubase SX система нумерации MIDl-октав несколько иная: отсчет октав начинается не с 0, а с —2. Поэтому центральная нота обозначена как СЗ.
Скорость (Velocity) нажатия/отпускания клавиши характеризуется десятичным числом от 0 до 127. Скорость нажатия соответствует силе удара по клавише. Чувствительная к скорости нажатия (динамическая) клавиатура выдает реальные значения этого параметра. Нечувствительная — значения 64 (десятичные).
Сообщение Note On с параметром vv = 00 эквивалентно сообщению Note Off для этой же клавиши. В простых синтезаторах информация о скорости нажатия клавиши используется для управления громкостью извлекаемого звука, в более сложных — еще и для управления фильтрами (например, большей громкости соответствует более звонкий звук) либо для выбора нужного сэмпла.
Хотя MIDI-клавиатурой формируются два сообщения (Note On и Note Off), программа преобразует их в одно типа Note, с тремя временными параметрами: временем включения ноты (нажатия MIDI-клавиши), временем выключения ноты (отпусканием MIDI-клавиши) и продолжительностью удержания MIDI-клавиши нажатой. Независимыми являются только два параметра.
Controller — сообщение о состоянии контроллера
Controller — сообщение о состоянии контроллера. Параметры сообщения — тип контроллера и его состояние. В спецификации MIDI этому сообщению соответствует сообщение Control Change формата Bk cc vv, где k — номер MIDI-канала, ее — номер, vv — значение контроллера. В литературе принято обозначать сообщение Control Change сокращенно, например, СС91 — сообщение о смене значения контроллера глубины эффекта реверберации.
MIDI-контроллеры делятся на контроллеры непрерывного действия (связанные с рукоятками, движками, регуляторами и т. п.) и переключатели (педали, кнопки и т. п.), имеющие два дискретных состояния (On/Off— включено/выключено). Для переключателей значения контроллера 0—63 означают выключенное состояние, а 64—127 — включенное.
В соответствии со спецификацией General MIDI принята следующая нумерация контроллеров:

  •  № 0-31 — старший байт значения контроллеров непрерывного действия;
  •  № 32-63 — младший байт значений контроллеров непрерывного действия;
  •  № 64-95 — переключатели;
  •  № 96-119 — зарезервированы;
  •  № 120-127 — специальные канальные сообщения.

На сообщения, содержащие старший или младший байт значения контроллера, MIDI-устройства реагируют немедленно. Причем в качестве недостающего байта значения контроллера используется либо ранее переданное, либо установленное по умолчанию значение. Это позволяет, передав однажды неизменный байт, в дальнейшем передавать только изменившийся байт значения контроллера.
Спецификацией General MIDI определены следующие контроллеры: 

  •  № 1 — Modulation — контроллер глубины частотной модуляции;
  •  № 2 — Breath — духовой контроллер;
  •  № 4 — Foot Controller — ножной контроллер;
  •  № 5 — Portamento Time — контроллер времени портаменто (портаменто — плавный переход по частоте от ноты к ноте);
  •  № 7 — Volume — контроллер громкости звука в канале; 
  •  № 8 — Balance — контроллер баланса стереоканалов; 
  •  № 10 — Pan — контроллер панорамы; 
  •  № 11 — Expression — контроллер экспрессивности звука;
  •  № 64 — Sustain Pedal, Holdl — контроллер педали удержания звучания нот;
  •  № 65 — Portamento — контроллер включения/выключения режима портаменто;
  •  № 66 — Sostenuto Pedal — контроллер педали удержания звучания нот, включенных во время действия педали;
  •  № 67 — Soft Pedal — контроллер педали приглушения звука.

 

. Program Change — сообщение о смене MIDI-инструмента
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, обладают различными возможностями по управлению параметрами синтеза. Исчерпывающие сведения о контроллерах, регистрируемых и нерегистрируемых параметрах можно найти только в документации на конкретные модели звуковых карт, синтезаторов и модулей синтеза.