Управление параметрами звука по midi
В руководстве пользователя звуковой карты семейства AWE вы не найдете ни одного слова о способах управления такими параметрами генерации звука, как, например, частота среза фильтра и уровень резонанса, или о том, как изменять формы огибающих громкости и модуляции. Непосвященный человек может подумать, что таких возможностей нет, что все параметры, хранящиеся в SoundFont, фиксированы и не поддаются изменениям. Однако это не так.
Возможно, авторы руководства пользователя посчитали, что описанных возможностей звуковой карты и так достаточно, а любознательные пользователи могут найти все ответы на свои вопросы в Internet. Этот раздел книги — наш маленький вклад в борьбу за права потребителя, ведь, как мы уже говорили, покупатель звуковой карты не обязан быть пользователем Internet и не обязан знать английский язык.
Что касается описанных возможностей, то их иногда бывает недостаточно. Например, ни одна современная танцевальная композиция не обходится без эффектов, связанных с изменением параметров резонансного фильтра. А если и обходится, то у ценителей такой музыки может возникнуть вполне справедливый вопрос: “Почему бы этому DJ не покрутить колесо управления фильтром хотя бы ради приличия?” И это не просто наше личное мнение. Не зря ведь фирма Yamaha в своем самом современном стандарте XG определила, что любой инструмент, соответствующий данному стандарту, обязан иметь манипуляторы управления параметрами звука (такими как уровень резонанса и частота среза фильтров). Звуковые карты семейства AWE стандарт XG не поддерживают. Однако возможность управления параметрами звука при помощи хитрых, но не сложных MIDI-сообщений имеется. Об этой возможности мы и расскажем.
Кроме RPN бывают еще и NRPN (Non Registered Parameter Number) — номер нефиксированного (изменяемого) параметра. Главное его отличие от RPN состоит в том, что одни и те же NRPN у разных производителей MIDI-оборудования могут соответствовать различным параметрам генерации звука. Задав NRPN можно выбрать интересующий параметр генерации звука и определить его значение с помощью манипуляторов Data entry.
Для звуковых карт семейства AWE значение NRPN MSB всегда должно быть равно 127, а в NRPN LSB нужно передавать номер интересующего вас параметра звука. Значение этого параметра передается через манипуляторы Data Entry. Таким образом, процесс управления параметрами звука сводится к выполнению последовательности MIDI-сообщений, приведенной в табл. 3.2.
Таблица 3.2. MIDI-сообщения управления параметрами звука
Номер MIDI-сообщения | Номер манипулятора (controller) | Название манипулятора | Положение манипулятора (value) |
1 | 99 | NRPN MSB | 127 |
2 | 98 | NRPN LSB | N |
3 | 6 | Data Entry MSB | X |
4 | 38 | Data Entry LSB | Y |
X = (ЗПЗ+ 8192) / 128
Y = (ЗПЗ + 8192) % 128,
где символ “ / ” означает целую часть от деления на 128, а “ % ” — остаток от деления; ЗПЗ — значение параметра звука.
Чтобы определить значение параметра звука, исходя из данных, хранящихся в MIDI-файле, нужно совершить обратное преобразование, воспользовавшись следующей формулой:
ЗПЗ = [(Data entry MSB)x128 + Data entry LSB)] – 8192.
Однако в реальной жизни компьютерного музыканта управление параметрами звука осуществляется более простым способом. Во-первых, если вы собираетесь управлять только каким-либо одним параметром, достаточно однократного выполнения MIDI-команд 1 и 2 (см. табл. 3.2), а далее можно многократно изменять только значения параметра через манипуляторы Data entry. Во-вторых, скорее всего, вам не придется каждый раз рассчитывать числа X и Y с помощью калькулятора. вы можете написать простенькую программку на языке C++... Не пугайтесь, это шутка. Дело вот в чем.