Программирование чувствительности колеса изменения тона
Что же такое RPN? Это аббревиатура от английского словосочетания Registered Parameter Number (номер фиксированного параметра). Спецификация MIDI определяет три таких параметра: RPN 0 — чувствительность манипулятора (колеса) изменения тона (Pitch Wheel), RPN 1 — грубая подстройка высоты тона, RPN 2 — точная настройка высоты тона. Однако звуковые карты семейства AWE поддерживают только один из этих параметров (нулевой). По умолчанию диапазон изменения тона составляет ±2 полутона (или плюс-минус один тон). Положение колеса задается числом от –8192 до 8191.
Часто бывает так, что диапазона шириной в 2 тона оказывается не достаточно для реализации эффекта плавного изменения высоты звука. Эта проблема решается довольно просто. Через два манипулятора ввода данных (Data entry LSB и Data entry MSB) устанавливается новое значение RPN 0.
MIDI-протокол предусматривает передачу данных байтами. Некоторые их биты зарезервированы для служебных целей. Если от каждого байта “отщипнуть” по биту, то останутся этакие семибитные “недобайты”, с помощью которых можно передавать числа от 0 до 127 (вспомните о диапазоне возможных значений манипуляторов). Но, например, для программирования чувствительности манипулятора изменения тона диапазона в 128 значений оказывается недостаточно. Поэтому для передачи данных используется два семибитных фрагмента одного большого четырнадцатибитного числа. С помощью него можно передавать числа от 0 до 16383 (или от –8192 до 8191). Младшие 7 бит (Least Significant Bit, LSB — младший байт) передаются через манипулятор 38, старшие 7 бит (Most Significant Bit, MSB — старший байт) передаются через манипулятор 6.
Итак, для изменения чувствительности колеса высоты тона вызовите список MIDI-сообщений из Вашего музыкального редактора. В самом начале списка поместите последовательность MIDI-команд, указанную в табл. 3.1.
Таблица 3.1. MIDI-команды изменения чувствительности колеса высоты тона
Номер MIDI-сообщения |
Номер манипулятора (controller) |
Название манипулятора |
Положение манипулятора (value) | ||||
1 |
101 |
RPN MSB |
0 | ||||
2 |
100 |
RPN LSB |
0 | ||||
3 |
6 |
Data Entry MSB |
X | ||||
4 |
38 |
Data Entry LSB |
Y |
В табл. 3.1 X — число, задающее диапазон высоты звука в полутонах, а Y — число, уточняющее ширину диапазона (точная настройка, заданная в сотых долях полутона — центах). Если нет необходимости задавать диапазон с такой точностью, просто не вводите последнее MIDI-сообщение. Диапазон возможных значений параметров X и Y: от 0 до 127. Чувствительность колеса высоты тона можно задавать индивидуально для каждого MIDI-канала.
На рис. 3.50 показан пример последовательности MIDI-сообщений в окне Event List музыкального редактора Cakewalk.
Рис. 3.50. Пример установки чувствительности колеса высоты тона
В результате выполнения этой последовательности (после нажатия кнопки Play) чувствительность манипулятора высоты тона для первого MIDI-канала будет ±1 октаву (или ±12 полутонов).