Note Off в программах ударных
Для некоторых звуков (открытые тарелки, свист и др.) управление длительностью весьма желательно, и многие тон-генераторы в этом случае реагируют на Note Off как и положено.
Теперь уже можно рассмотреть полноценный пример. Итак, мы нажимаем ноту До первой октавы на первом MIDI-канале с динамикой 110, а потом отпускаем ее. Наша клавиатура, нечувствительная к скорости снятия клавиш, выдает на выход MIDI Out последовательность из шести байт (рис. 33).
Это давление измеряют сенсоры клавиатуры. Делать сенсор под каждую клавишу — дорогое удовольствие, поэтому большинство клавиатур имеют один сенсор, который измеряет общее давление. Исходя из этого, спецификация определяет два варианта послекасания: монофоническое (или послекасание канала, Channel Pressure) — это сообщение генерируют клавиатуры с одним-единственным сенсором, и полифоническое (Polyphonic Key Pressure) — для клавиатур с сенсором на каждую клавишу. Бывают клавиатуры, которые не генерируют послекасания вообще. Понятно, что для изменений в звуке генератор должен понимать сообщения послекасания и как-то на них реагировать. Обычно изменяются уровень поддержки (Sustain) на огибающей громкости или фильтра, или глубина/скорость модуляции, производимой генератором низкой частоты. Спецификация не определяет конкретной реакции устройства на сообщения послекасания, и многие синтезаторы их игнорируют. Послекасание канала менее информативно и не имеет такой гибкости и выразительности, как полифоническое. Так, если вы дожмете одну клавишу больше другой на устройстве, передающем послекасание канала, оба давления будут усреднены, словно вы дожали обе клавиши с одинаковой силой. Если в аккорде вы хотите выделить басовую ноту, ничего не выйдет — эффект будет применен ко всем нотам, звучащим на канале. Обычно клавиатура посылает один вид послекасания. Но бывают клавиатуры (с сенсором на каждую клавишу), которые могут посылать оба вида сообщений сразу: полифоническое послекасание формируется как обычно, а послекасание канала вычисляется как среднее от полифонического по каждой клавише. Послекасание — типичный непрерывный контроллер низкого разрешения, с характерной особенностью: оба типа сообщений довольно сильно загружают канал передачи данных. Давить на клавиши с постоянным усилием получается редко, а при любом изменении давления передается новая порция байт. Послекасание канала загружает канал передачи значительно меньше, чем полифоническое, так как производит меньше байт в единицу времени. Первый байт данных сообщения полифонического послекасания содержит MIDI-номер ноты, второй — давление на клавишу после нажатия. Пример: если после взятия аккорда Ре-Фа-Ля первой октавы дожать клавиши так, чтобы давление на каждую стало разным (например, 92, 84, 90), то сообщение будет представлено девятью байтами (рис. 34, аккорд взят на втором MIDI-канале).
Сообщение послекасания канала состоит из одного байта данных, следующего за статус-байтом. Байт данных содержит давление канала. Сообщение Channel Pressure для аккорда из предыдущего примера (с усредненным давлением, равным 89), показано на рис. 35.
Звуковысотное колесо (Pitch Wheel) используется для плавного изменения высоты тона звучащей ноты. Процесс изменения высоты называется питч-бендом (Pitch Bend), а соответствующее MIDI-сообщение — Pitch Wheel Change (его часто и называют Pitch Bend). Сообщение об изменении высоты относится сразу ко всему MIDI-каналу, поэтому нельзя, например, сыграть на одном канале аккорд, а сдвинуть высоту тона только у его басовой ноты. Именно по этой причине полноценная имитация эффекта "подтяжки" струнного инструмента возможна только в режиме канала 4, о чем говорилось ранее. Pitch Wheel Change — сообщение высокого разрешения, то есть позволяет использовать 16384 значений изменения высоты, и относится к контроллерам непрерывного типа. При движении колеса высота ноты скачкообразно изменяется во времени, но благодаря маленьким шагам (равным 1/16384 диапазона изменения) эти скачки обычно незаметны, и создается ощущение плавного изменения высоты. Первый байт данных сообщения содержит младшие семь бит 14-битной величины изменения, второй — старшие семь бит. За центральное положение колеса (сдвиг высоты тона отсутствует) принято значение 8192 (16384 / 2, шестнадцатеричное 0x2000). Значения больше 8192 означают повышение высоты тона, меньше — понижение. Пара MSB:LSB для центрального положения колеса имеет вид 64:0 (8192 / 128 = 64 без остатка), в шестнадцатеричном виде — 0x40:0x00. Каков диапазон изменения высоты тона? Спецификация оставляет этот вопрос на совести производителя тон-генератора. MIDI-клавиатура (или другое средство ввода) всегда передает значения от 0 до 16383 (0x3FFF), получаемые с колеса, а тон-генератор интерпретирует их так, как считает нужным. Так что нет никакой гарантии, что, соединив два синтезатора по MIDI и вращая звуковысотное колесо на одном из них, мы получим на втором синтезаторе ту же самую величину изменения высоты нот. Обычно диапазон составляет +/-2 полутона от центрального значения, но его можно изменять с помощью PRN-параметра Pitch Bend Sensitivity, о чем поговорим далее. Большинство тон-генераторов позволяют устанавливать независимый диапазон для каждого канала, но есть и такие, в которых диапазон задается глобально, на все каналы, или фиксирован на значении +/-2 полутона. Попадаются инструменты, которые вообще не реагируют на сообщение Pitch Wheel Change. Посмотрим, что посылает MIDI-клавиатура тон-генератору в момент, когда звуковысотное колесо находится на одной трети пути от центра к верхней точке. Очевидно, что положение колеса соответствует 4/6 (или двум третям) от всего диапазона значений: 16384 x 2/3 = 10923. Разобьем это значение на составляющие MSB и LSB: MSB = 10923 / 128 = 85, остаток — 43. Следовательно, пара MSB:LSB будет иметь вид 85:43. (0x55:0x2B). Если сообщение передается на пятом MIDI-канале, то оно будет выглядеть так, как показано на рис. 36.
|