MIDI RPN: Registered Parameter Numbers без плутанини
Зображення створено за допомогою генеративного ШІ для MIDITAUR. Концепція, композиція та текстове наповнення — MIDITAUR
Зміст публікації

RPN — Registered Parameter Number — розширює можливості стандартних Control Change повідомлень. Замість того щоб призначити кожному параметру окремий номер CC, MIDI дозволяє спочатку вибрати зареєстрований параметр, а потім передати його значення через Data Entry.
Як вибирається RPN
Для RPN у MIDI 1.0 використовують:
- CC101 — RPN MSB;
- CC100 — RPN LSB;
- CC6 — Data Entry MSB;
- CC38 — Data Entry LSB, коли потрібна додаткова точність;
- CC96/97 — Data Increment / Data Decrement для відносної зміни.
Послідовність виглядає так: спочатку CC101 і CC100 вибирають номер параметра, потім CC6 і, за потреби, CC38 задають його значення.
Типові RPN
Серед стандартизованих параметрів є Pitch Bend Sensitivity, Fine Tuning, Coarse Tuning, а пізніші доповнення визначили й інші RPN, наприклад Modulation Depth Range.
Актуальна таблиця основних RPN
Нижче — актуалізований навчальний зріз за поточною MIDI 1.0 Control Change reference. Він включає базові tuning RPN, Modulation Depth Range, сучасний MPE Configuration Message, групу 3D Sound Controllers і Null Function.
| RPN MSB | RPN LSB | Параметр | Data Entry / значення | Контекст |
|---|---|---|---|---|
| 00H | 00H | Pitch Bend Sensitivity | MSB: semitones; LSB: cents | Базовий RPN; чутливість Pitch Bend. |
| 00H | 01H | Channel Fine Tuning | 14-бітне fine tuning; 40H 00H = A440 | Уточнено RP-022. |
| 00H | 02H | Channel Coarse Tuning | MSB only; 40H = A440 | Крок 100 cents. |
| 00H | 03H | Tuning Program Change | Номер tuning program | Пов’язаний із MIDI Tuning. |
| 00H | 04H | Tuning Bank Select | Номер tuning bank | Пов’язаний із MIDI Tuning. |
| 00H | 05H | Modulation Depth Range | GM2: semitone/cents interpretation | Окремий MIDI 1.0 Addendum. |
| 00H | 06H | MPE Configuration Message | Значення визначає MPE specification | Сучасний стандартизований RPN. |
| 3DH | 00H–08H | Three Dimensional Sound Controllers | Azimuth, elevation, gain, distance та ін. | Див. RP-049. |
| 7FH | 7FH | Null Function Number | Вимикає Data Entry / Increment / Decrement до нового RPN/NRPN | Безпечне завершення вибору параметра. |
Важливо: таблиця MIDI.org прямо попереджає, що це огляд, а для точної реалізації треба звірятися з відповідною специфікацією та документацією пристрою.
RPN і NRPN — не те саме
RPN має значення, погоджені MIDI-стандартом. NRPN (CC99 і CC98) залишає номери параметрів виробникам, тому один і той самий NRPN на різних моделях може означати різні речі.
Data Increment / Data Decrement
Після вибору RPN можна змінювати поточне значення відносно через CC96 Data Increment або CC97 Data Decrement. У поточній MIDI.org reference для їхнього value вказано N/A: старе твердження, що data byte обов’язково має дорівнювати нулю, не варто використовувати як сучасне правило.
Практичне правило
Після роботи з RPN корисно надіслати RPN Null = 7FH/7FH. Поточна MIDI.org reference прямо зазначає, що це вимикає Data Entry, Data Increment і Data Decrement до вибору нового RPN або NRPN. Для точного програмування звіряйтеся з актуальною MIDI specification та MIDI Implementation Chart конкретного пристрою.
RPN як двокрокова команда
RPN легше зрозуміти, якщо не сприймати його як одну «магічну» команду. Логіка така: спочатку вибираємо, який параметр хочемо змінити, потім передаємо його значення. Це схоже на налаштування в меню: спершу відкриваємо потрібний пункт, а вже потім змінюємо число всередині нього.
Саме тому послідовність повідомлень важлива. Якщо параметр не вибрано правильно, наступне значення може стосуватися не того налаштування, яке ви мали на увазі. Звідси й практичне правило після роботи з RPN — не залишати випадково активним попередній вибір параметра.
Чому RPN і NRPN не варто змішувати
RPN використовує зареєстровані параметри, тобто їхнє призначення визначається стандартом. NRPN залишає простір для параметрів виробника. Для користувача головне не запам’ятати всі номери, а зрозуміти різницю в логіці: RPN — спільно визначене значення, NRPN — залежне від конкретної реалізації.
Розбір послідовності
Коли бачите групу Control Change, пов’язану з RPN, поставте собі три запитання:
- Який параметр зараз обирають?
- Яке значення йому передають?
- Чи завершено роботу так, щоб наступний Data Entry не змінив попередній параметр випадково?
Такий алгоритм корисніший за механічне заучування номерів контролерів, особливо на початковому етапі.
Мініпрактика
Намалюйте схему з трьох блоків: вибір параметра → передавання значення → завершення/скидання вибору. Під кожним блоком напишіть, навіщо він потрібний.
Перевірте себе
- Чому RPN зручно мислити як послідовність, а не одну команду?
- У чому принципова різниця між RPN і NRPN?
- Яка небезпека виникає, якщо залишити попередній параметр вибраним?