MIDI ACTIVE SENSING
Зображення створено за допомогою генеративного ШІ для MIDITAUR. Концепція, композиція та текстове наповнення — MIDITAUR.
Зміст публікації
Active Sensing — необов’язкове системне повідомлення MIDI 1.0, яке допомагає пристроям контролювати, чи залишається MIDI-з’єднання активним. Воно особливо корисне для захисту від «завислих» нот, якщо кабель або з’єднання обірвалося під час звучання.
Який байт передає Active Sensing
Active Sensing має status byte FE у hexadecimal, тобто 254 у decimal або 11111110 у binary. Це однобайтове System Real-Time Message: воно не має data bytes.
Як і інші System Real-Time messages, FE може з’являтися в MIDI-потоці між іншими повідомленнями. Приймач, який не підтримує Active Sensing, може просто його ігнорувати.
Правило 300 мс
Коли сумісний приймач отримує перший Active Sensing, він входить у режим контролю з’єднання. Після цього він очікує наступний Active Sensing не пізніше ніж приблизно через 300 мс. Якщо наступний FE не приходить у цей час, приймач вважає, що з’єднання припинилося.
За описом MIDI 1.0, у такій ситуації приймач має вимкнути всі активні voices і повернутися до звичайного режиму без active sensing.
Навіщо це потрібно: приклад із завислою нотою
Уявімо, що MIDI-клавіатура надіслала Note On, і звуковий модуль почав відтворювати ноту. Поки нота звучить, MIDI-кабель випадково висмикнули.
Клавіатура вже не може передати відповідний Note Off. Без додаткового механізму модуль може продовжити відтворення — виникає stuck note.
Якщо ж обидва пристрої підтримують Active Sensing і приймач уже отримав перший FE, відсутність наступного FE дозволяє йому швидко визначити втрату з’єднання й вимкнути активні voices.
Active Sensing передається не лише під час простою
У первинному матеріалі була фраза, що під час гри звичайні MIDI-дані нібито замінюють повідомлення Active Sensing. Це не відповідає формулюванню MIDI 1.0. Після того як приймач увійшов у режим Active Sensing, специфікація очікує саме наступне повідомлення Active Sensing у межах 300 мс. Інші Note On, Control Change або Program Change не є заміною FE.
Active Sensing — необов’язковий
Цей механізм не є обов’язковим для кожного MIDI-пристрою. Саме тому не можна припускати, що будь-який синтезатор, контролер або інтерфейс його підтримує.
Перевіряти підтримку найкраще в MIDI Implementation Chart конкретного пристрою або в його технічній документації. У класичній implementation chart символ O означає, що функція підтримується, а X — що ні.
Чим Active Sensing відрізняється від інших Real-Time messages
Active Sensing не задає темп і не запускає секвенсор. Для синхронізації та керування transport використовуються інші System Real-Time messages: Timing Clock, Start, Continue і Stop. Active Sensing має іншу мету — перевірити, що зв’язок між пристроями не зник.
Практична перевірка
- Відкрийте MIDI Implementation Chart обох пристроїв.
- Знайдіть рядок Active Sense / Active Sensing.
- Переконайтеся, що передавач може надсилати FE, а приймач — розпізнавати його.
- Для діагностики використайте MIDI monitor і перевірте, чи з’являється
FEприблизно кожні 300 мс або частіше. - Не висмикуйте кабелі під час гучного відтворення без потреби: перевірку аварійної поведінки краще робити на безпечній гучності.
Що варто запам’ятати
- Active Sensing — status byte FE.
- Це необов’язкове MIDI 1.0 System Real-Time message.
- Після першого FE сумісний приймач очікує наступний FE максимум приблизно через 300 мс.
- Якщо FE не надходить, приймач може вимкнути активні voices і вийти з Active Sensing mode.
- Головна практична користь — захист від stuck notes при втраті MIDI-з’єднання.
- Підтримку потрібно перевіряти для конкретного обладнання.