MIDI Pan CC#10: формула RP-036 і точний центр панорами
Зображення створено за допомогою генеративного ШІ для MIDITAUR. Концепція, композиція та текстове наповнення — MIDITAUR.
Зміст публікації

RP-036 Default Pan Formula — MIDI Recommended Practice, випущена 13 вересня 2002 року для уніфікації реакції на Control Change CC#10 Pan. Її мета — дати виробникам спільну equal-power формулу панорамування, яка забезпечує коректний центр і плавний перерозподіл сигналу між лівим та правим каналами.
RP-036 пов’язана з General MIDI 2 (RP-024), GM Lite (RP-033) та DLS2 (RP-025). Загальну роль таких документів описано окремо: Специфікації MIDI: як працюють Recommended Practices і доповнення.
Чому для Pan потрібна окрема формула
CC#10 використовує звичайний MIDI-діапазон 0–127. Якщо дивитися на нього як на числову шкалу, геометричний центр лежить між значеннями 63 і 64 — тобто в точці 63,5.
Самого лише простого лінійного розподілу недостатньо. У стереопанорамі потрібно не тільки визначити позицію між left і right, а й зберегти рівномірний розподіл потужності, щоб у центрі сигнал не сприймався як провалений або, навпаки, надмірно гучний.
Equal-power panning
RP-036 використовує синус і косинус для побудови equal-power curve. У такій моделі gain лівого каналу поступово зменшується, а правого — зростає, причому сумарна потужність залишається сталою.
Для MIDI CC#10 рекомендовано використовувати такі формули:
Left gain [dB] = 20 × log10(cos((π / 2) × max(0, CC#10 − 1) / 126))
Right gain [dB] = 20 × log10(sin((π / 2) × max(0, CC#10 − 1) / 126))
Ключова деталь — віднімання 1 від CC#10 перед нормалізацією. Саме воно зміщує розрахунок так, щоб значення 64 дало математично точний центр.
Що відбувається в центрі
Для CC#10 = 64 маємо:
max(0, 64 − 1) / 126 = 63 / 126 = 0.5
Тоді кут дорівнює π/4, а:
cos(π/4) = √2 / 2;sin(π/4) = √2 / 2.
Отже, left і right отримують однаковий gain приблизно −3.01 dB. Це і є equal-power center: обидва канали мають однаковий рівень, а сумарна потужність відповідає крайнім положенням панорами.
Крайні значення CC#10
Формула дає очікувану поведінку на краях діапазону:
- CC#10 = 0 або 1 — повністю ліворуч: left gain = 0 dB, right gain прямує до тиші;
- CC#10 = 64 — точний центр: left і right приблизно −3.01 dB;
- CC#10 = 127 — повністю праворуч: right gain = 0 dB, left gain прямує до тиші.
Таким чином значення 64 стає однозначним MIDI-центром, попри те що арифметична середина діапазону 0–127 дорівнює 63,5.
Навіщо це було потрібно виробникам
До RP-036 різні MIDI implementations могли використовувати різні pan curves. Навіть коли всі вони прагнули equal-power distribution, фактична поведінка в центрі та між центром і краями могла відрізнятися.
Для MIDI-файлу або sequence це означало, що той самий CC#10 міг трохи по-різному звучати на різних synth engines. RP-036 дала спільну рекомендовану математичну модель і тим самим покращила передбачуваність playback.
Плавна зміна Pan під час звучання
RP-036 стосується не лише статичного значення pan. Якщо CC#10 змінюється під час звучання ноти, implementation має змінювати gain плавно, без audible clicks, crackles або інших артефактів.
Це особливо важливо для automation, realtime controllers і MIDI-файлів, у яких pan рухається в процесі відтворення.
Практичний сенс для програміста
Якщо synth engine або software instrument реалізує MIDI CC#10 за RP-036, достатньо:
- обмежити вхідний Pan до 0–127;
- обчислити нормалізовану позицію
max(0, pan − 1) / 126; - перетворити її на кут від 0 до π/2;
- одержати linear gains через cosine і sine;
- за потреби перевести їх у dB через
20 × log10(gain).
Так отримується однакова логіка для hardware synth, software instrument або MIDI playback engine.
Джерела
- The MIDI Association — Default Pan Formula (RP-036)
- The MIDI Association — MIDI 1.0 Addenda
- The MIDI Association — MIDI 1.0 Control Change Messages