MIDI 1.0 Channel Messages: Note On, Control Change, Program Change та інші
Зображення створено за допомогою генеративного ШІ для MIDITAUR. Концепція, композиція та текстове наповнення — MIDITAUR
Зміст публікації

У MIDI 1.0 більшість подій виконання належать до Channel Messages. Номер каналу закодований у молодших чотирьох бітах status byte, тому доступні 16 MIDI-каналів.
Основні Channel Voice Messages
- Note Off — завершити ноту;
- Note On — почати ноту;
- Polyphonic Key Pressure — тиск після натискання для окремої ноти;
- Control Change — контролери, педалі, гучність, панорама та багато інших параметрів;
- Program Change — вибір програми/тембру;
- Channel Pressure — aftertouch для всього каналу;
- Pitch Bend Change — безперервне відхилення висоти.
Status byte і data bytes
Status byte для channel voice повідомлень має старший біт 1, тип повідомлення та номер каналу. Data bytes мають старший біт 0 і зазвичай містять значення 0–127.
Наприклад, Note On передає номер ноти та velocity. Program Change потребує лише одного data byte — номера програми.
Channel Mode Messages
Контролери 120–127 у групі Control Change зарезервовані для Channel Mode, зокрема All Sound Off, Reset All Controllers, All Notes Off, Omni та Mono/Poly Mode.
Polyphonic Key Pressure і Channel Pressure: у чому різниця
Обидва повідомлення належать до aftertouch, але працюють на різному рівні. Polyphonic Key Pressure передає номер конкретної ноти та pressure 0–127, тому одна затиснута клавіша може отримати вібрато або інший ефект незалежно від інших нот. Channel Pressure передає лише одне pressure-значення для всього MIDI-каналу.
Не кожна MIDI-клавіатура вміє генерувати polyphonic aftertouch. Тому перед налаштуванням такого керування перевіряйте MIDI implementation chart або документацію конкретного контролера.
Pitch Bend: 14-бітне значення і центр
Pitch Bend використовує два 7-бітні data bytes і разом утворює 14-бітне значення. Центр, тобто відсутність зміни висоти, дорівнює 8192 decimal або 2000H. Повний діапазон сирого значення — 0–16383; наскільки це змінює висоту в півтонах, визначає приймач, а стандартно налаштовувати чутливість можна через RPN 0 — Pitch Bend Sensitivity.
Це важливе уточнення до старого формулювання «від -8191 до 8191»: у самому MIDI-повідомленні передається unsigned 14-bit value 0–16383 із центром 8192.
Не всі пристрої підтримують усе
Реальна підтримка залежить від implementation chart конкретного пристрою. Два MIDI-пристрої можуть обмінюватися Note On/Off, але один із них може не реагувати на певний pressure або контролер.
Як уявити Channel Messages
Channel Message — це повідомлення, яке стосується конкретного MIDI-каналу. Зручно уявляти канал як окрему лінію розмови: на одній лінії може бути партія фортепіано, на іншій — бас, на третій — інший інструмент. Повідомлення передає не «готовий звук», а інструкцію: почати ноту, змінити параметр, вибрати програму тощо.
Найкорисніше спочатку навчитися впізнавати роль повідомлення. Note On пов’язаний із початком ноти, Control Change — зі зміною керованого параметра, Program Change — з вибором програми/тембру. Коли ця логіка зрозуміла, байтова структура вже не виглядає набором випадкових чисел.
Status і data: хто що означає
Подумайте про повідомлення як про коротке речення. Status byte відповідає на запитання «що за дія і для якого каналу?», а data bytes несуть потрібні для цієї дії значення. Різні типи повідомлень потребують різного набору даних, тому не варто вчити всі байти як один шаблон. Спочатку визначте тип повідомлення, а вже потім дивіться на його дані.
Типова помилка
Не слід очікувати, що кожен MIDI-пристрій однаково реагуватиме на всі можливі повідомлення. Сам факт підтримки MIDI не означає підтримку кожної функції. Саме тому для реального пристрою важливо дивитися implementation chart.
Практична вправа
Для кожного з трьох повідомлень — Note On, Control Change, Program Change — напишіть одним реченням: «що воно просить зробити пристрій?». Потім уявіть просту композицію й поясніть, у який момент кожне з цих повідомлень могло б знадобитися.
Перевірте себе
- Чим MIDI-повідомлення відрізняється від аудіосигналу?
- Яку роль виконує status byte?
- Чому не можна вважати, що всі пристрої реалізують усі MIDI-функції?
- Який тип повідомлення ви шукали б, щоб змінити програму інструмента? Уявіть MIDI-канал як окремий чат у месенджері: повідомлення має потрапити саме в потрібний чат, а всередині нього ще треба зрозуміти, яку дію воно наказує виконати.