Работа с привилегированными системными сообщениями

Вероятно, вы уже заметили, что в раскрывающемся списке Insert есть строка SysEx, это означает, что в окне List Editor можно создавать и редактировать привилегированные системные MIDI-сообщения (SysEx — System Exclusive Message).
Управление большинством скрытых ресурсов MIDI-синтезаторов осуществляется посредством системных сообщений. С помощью системных сообщений можно управлять, например, параметрами эффект-процессора, осуществлять доступ к ячейкам памяти синтезатора, в которых хранятся те или иные параметры синтеза, загружать в память синтезатора установки патчей и т. п. 
Системные сообщения представляют собой последовательность двузначных шестнадцатеричных чисел (одно такое число соответствует байту). Каждое системное сообщение начинается с числа F0 — идентификатора начала системного сообщения. Затем следует идентификатор устройства (фирмы-производителя этого устройства) или устройства, с которым совместим данный синтезатор. Например, синтезаторы фирмы Yamaha кодируются числом 43, фирмы Roland — 41, EMU — 18. После идентификатора следует последовательность кодов, длина и формат которой определяется моделью синтезатора (устанавливается производителем) и типом передаваемых сообщений. Завершается системное сообщение всегда числом F7 — идентификатором конца системного сообщения (ЕОХ — End Of eXclusive). 
О том, какие системные сообщения "понимает" ваш синтезатор, можно узнать из его технического описания. Как правило, эти сведения приводятся в виде таблицы, содержащей тип системного сообщения, его формат и назначение отдельных байтов. Например, сведения о поддерживаемых синтезаторами стандарта XG системных сообщениях могут выглядеть следующим образом:
11110000 F0 Exclusive status 
01000011 43 YAMAHA ID 
00010001 In Device Number
01001100 4C XG Model ID 
0aaaaaaa aa Address High 
0aaaaaaa aa Address Mid 
Qaaaaaaa aa Address Low 
0dddddd dd Data
11110111 F7 End of Exclusive
В первом столбце содержатся двоичные коды системных сообщений, во втором — их шестнадцатеричные коды. Прописными (большими) буквами обозначаются шестнадцатеричные цифры от А до F, а строчными (маленькими) — переменные. В приведенном примере пппп — номер устройства (синтезатора), которому адресовано сообщение; аа — адрес одной или нескольких ячеек памяти синтезатора, содержащих параметр, значение которого нужно изменить. В данном случае для передачи адреса используется три сегмента: старший (High), средний (Mid) и младший (Low) байты. Переменные dd — это данные, которые необходимо записать в память по указанному адресу. В правом столбце приведены сведения о назначении байта. Конкретные значения переменных в системных сообщениях следует искать в других таблицах, которые, в свою очередь, могут содержать ссылки на следующие таблицы. Разобраться с этими таблицами не так-то просто, но можно, если захотеть. Чтобы, например, для звуковой карты, поддерживающей спецификацию XG, выбрать реверберацию типа Tunel (звук, как в тоннеле), последовательность системных сообщений должна выглядеть так: F0 43 10 4С 02 01 00 11 00 F7. О применении системных сообщений для смены типа эффекта в некоторых звуковых картах мы подробно рассказали в книгах [6, 9, 11, 46]. Наиболее распространенное применение системных сообщений — передача синтезатору команды сброса в исходное состояние.
Итак, если вы хотите получить доступ ко всем без исключения ресурсам синтезатора, без редактора системных сообщений SysEx вам не обойтись. Как добраться до такого редактора в Cubase SX? Сейчас мы вам об этом расскажем на примере записи сообщения о системном сбросе синтезатора, соответствующего спецификации GM. Оно необходимо для того, чтобы привести систему управления синтезатора в правильное исходное состояние. Подобное сообщение желательно вставлять в начале каждого проекта в часть на один из его MIDI-треков. Слово "подобное" означает здесь то, что сообщение о сбросе должно соответствовать стандарту, который поддерживается синтезатором. Конкретно, следует формировать следующие сообщения: 

  •  Для GM-синтезатора — F0 7E 7F 09 01 F7; 
  •  Для ХС-синтезатора — FO 43 10 4С 00 00 7Е 00 F7;
  •  Для GS-синтезатора — F0 41 10 42 12 40 00 7F 00 41 F7.

В раскрывающемся списке Insert выберите строку SysEx и известным вам способом вставьте в начало списка сообщение типа SysEx .
Сообщение типа SysEx вставлено, но оно пока пусто (содержит только признаки начала и конца SysEx). Обратите внимание на ячейку в столбце Comment, именно там отображается содержание сообщения, в данном случае символы F0,F7. Щелкните на этой ячейке для того, чтобы открыть окно редактора системных сообщений MIDI-Sysex-Editor .
Сообщение может быть очень длинным, тогда оно займет много строк. Чтобы легче было в строках ориентироваться, по мере ввода байтов сообщения они автоматически нумеруются: в столбце Address приводится шестнадцате-ричный номер первого байта в строке. Для сведения в правом столбце (ASCII) приводится содержание каждой строки сообщения, отображенное в виде символов, соответствующих ASCII-кодировке. Это всё вспомогательные элементы окна. Главное здесь столбцы 1 — 7 и инструменты записи байтов. Напомним, что мы собираемся сформировать следующее содержание сообщения: F0 7E 7F 09 01 F7 (здесь все числа шестнадцатеричные).
Начальный и конечный байты уже введены (удалить их невозможно). Для ввода нового байта первым делом нажмите кнопку Insert. Строка удлинится на одну позицию, в которой пока будет записаны два нуля. Щелчком на этой позиции сделайте ее доступной для ввода и с клавиатуры введите 01. Дело в том, что последовательность вводится в обратном порядке, и сейчас для ввода доступно содержание предпоследнего байта. Затем опять нажмите кнопку Insert и введите 09. Повторяйте так, пока не введете все содержание сообщения.
Если содержание сообщения в руководстве пользователя представлено в десятеричной или двоичной системах счисления — не беда. В окно редактора системных сообщений MIDI-Sysex-Editor встроен калькулятор. Он позволяет вам в поле Binary вводить двоичное число, которое после нажатия клавиши <Enter> программа автоматически преобразует в десятичное (поле Decimal) и введет в ту позицию на рабочем поле окна, которая в данный момент выделена зеленой рамкой. Аналогичным образом будет обстоять дело, если начать с ввода десятичного числа в поле Decimal. Оно будет преобразовано и в двоичную и в шестнадцатеричную формы. Калькулятор "умеет считать" до десятичного числа 127, а большего от него и не требуется. Введенную последовательность байтов есть смысл сохранить в файле с расширением SYX, воспользовавшись кнопкой Export. В Internet можно разыскать "готовые к употреблению" банки системных сообщений и загрузить их в свой синтезатор. Для этого служит кнопка Import.
После проверки и исправления (при необходимости) введенной последовательности байтов нажмите ОК. Содержание SysEx появится в столбце Comment окна List Editor .
Редактирование нот с MIDI-клавиатуры
Всем хороши описанные выше способы редактирования MIDI-сообщений в окне List Editor. Но есть одно неудобство: пользуясь ими, трудно передать ощущение, присущее реальной игре на инструменте. Нота разложена на некие математические составляющие. И не каждый музыкант сможет научиться быстро оценивать влияние того или иного редактируемого параметра на звучание, получающееся в итоге всех манипуляций с кнопками и полями ввода. Хорошо бы иметь возможность вместо этого просто сыграть необходимую ноту с необходимой громкостью! И, конечно, в программе Cubase SX предусмотрена такая функция. Она включается кнопкой   (MIDI Input). Панель инструментов после этого несколько меняет свой вид. Становятся доступны кнопки, расположенные в ее правой области.

Параметры сообщения, которые будут восприниматься редактором при нажатии вами MlDI-клавиш, выбираются специальными кнопками.
(Record Pitch) — будет записываться номер MIDI-ноты.
(Record NoteOn Velocity) — будет записываться Velocity сообщения Note On (скорость перемещения клавиши при ее нажатии, которую можно считать пропорционально связанной с громкостью звучания ноты).
(Record NoteOfF Velocity) — будет записываться Velocity сообщения Note Off (скорость возвращения нажатой клавиши в исходное положение после того, как вы ее отпустите). Трудно однозначно ассоциировать Note Off Velocity с конкретным свойством звучания ноты, тем более что далеко не все клавиатуры формируют в сообщении Note Off значение Velocity. Итак, подключите MIDI-клавиатуру. Нажмите кнопку (MIDI Input). Нажмите в любом необходимом сочетании кнопки (Record Pitch), (Record NoteOn Velocity), (Record NoteOff Velocity). В окне List Editor выберите ноту, которую вы хотите отредактировать.
Сыграйте на MIDI-клавиатуре необходимую ноту с необходимой силой удара по клавише. Выделение "перескочит" на следующее сообщение в списке. Но главное, что в столбцах Data 1 и Data 2 того сообщения, редактированием которого вы занимались, появятся значения параметров, введенные в результате вашей "живой" игры. Если результат не понравится, можно вновь выделить необходимое сообщение и повторить попытку.
Обращаем ваше внимание на то, что таким путем меняется только высота тона и громкость звучания ноты. Временные параметры сообщения (время начала и продолжительность звучания) остаются прежними. Поэтому можем предложить вам такое применение описанному способу редактирования. Не задумываясь о мелодической составляющей, создайте заранее необходимый ритмический рисунок, записав любым путем произвольную последовательность нот. Например, можно в режиме записи просто "отстучать" ритм на одной и той же клавише MIDI-клавиатуры. В вашем распоряжении окажется ритмический шаблон, который теперь будет легче наполнить мелодическим содержанием.