Русский
Шпаргалка по сообщениям MIDI: все типы, байты статуса и диапазоны
Это приложение полностью бесплатное. Создавать учётную запись не нужно. Нет подписок, нет сложных загрузок, и ничего не заблокировано. Оптимизировано для Apple Silicon.
Сообщение MIDI 1.0 это байт статуса, который говорит, что это за сообщение, и следом ноль, один или два байта данных. Есть семь канальных сообщений, от Note Off на 80 hex до Pitch Bend на E0, каждое несёт свой канал в последней цифре, и набор системных сообщений от F0 до FF, у которых канала нет вообще. В таблицах ниже есть все они, с диапазонами, которые принимает каждый байт данных, и каждая строка ведёт на страницу этого сайта, где такое сообщение разобрано подробно.
Значения взяты из собственной сводки сообщений MIDI 1.0 MIDI Association и её списка Control Change, просмотренных 27 октября 2026 года. Я делаю InputConfig, бесплатное приложение для Mac, которое читает и отправляет MIDI, поэтому одна из таблиц показывает, какие из этих сообщений оно обрабатывает.
Шаги
- Прочитайте первый байт сообщения в шестнадцатеричном виде.
- Если он от 80 до EF, первая цифра называет сообщение, а вторая цифра это канал: 0 для канала 1 и так до F для канала 16.
- Если он от F0 до FF, это системное сообщение без канала, поэтому найдите его в системной таблице.
- Прочитайте следующие за ним байты данных, каждый от 0 до 127, по таблице канальных сообщений.
- Для Control Change найдите номер контроллера в таблице CC.
Отличите байт статуса от байта данных
Каждый байт в MIDI 1.0 это либо байт статуса, либо байт данных, и это решает старший бит. В таблице MIDI Association каждый байт статуса записан с 1 в начале двоичной записи, а каждый байт данных с 0.
- Байты статуса. От 80 до FF hex, от 128 до 255. Они начинают сообщение.
- Байты данных. От 00 до 7F hex, от 0 до 127. Поэтому почти любое значение в MIDI заканчивается на 127.
- Канал. В канальном сообщении вторая шестнадцатеричная цифра это канал, от 0 до F, который приложения показывают как каналы с 1 по 16. Так 90 это Note On на канале 1, а 9F это Note On на канале 16.
- 14-битные значения. Когда 128 шагов не хватает, два байта данных объединяются: младшая половина, LSB, и старшая половина, MSB. Вместе они дают от 0 до 16383, а Pitch Bend помещает свой центр на 8192, то есть 2000 hex.
Байт от 128 и выше начинает сообщение, а байт меньше 128 несёт значение. Подробнее об обоих в статьях каналы MIDI и MSB и LSB.
Читайте канальные сообщения
Эти семь сообщений несут музыку: ноты, давление, ручки, смену патчей и колесо высоты тона. Столбец статуса записан в hex, а младшая цифра задаётся каналом.
| Сообщение | Статус (hex) | Байт данных 1 | Байт данных 2 | Подробнее |
|---|---|---|---|---|
| Note Off | от 80 до 8F | Номер ноты, от 0 до 127 | Скорость отпускания, от 0 до 127 | номера нот |
| Note On | от 90 до 9F | Номер ноты, от 0 до 127 | Velocity, от 0 до 127 (0 действует как Note Off) | velocity |
| Полифоническое давление клавиши | от A0 до AF | Номер ноты, от 0 до 127 | Давление, от 0 до 127 | aftertouch |
| Control Change | от B0 до BF | Контроллер, от 0 до 119 | Значение, от 0 до 127 | список CC |
| Program Change | от C0 до CF | Программа, от 0 до 127 | Нет | program change |
| Давление канала | от D0 до DF | Давление, от 0 до 127 | Нет | aftertouch |
| Pitch Bend | от E0 до EF | Младшая половина (LSB), от 0 до 127 | Старшая половина (MSB), от 0 до 127 | pitch bend |
Note On с velocity 0 считается Note Off, и собственное руководство MIDI Association по Arduino использует это, чтобы закончить ноту. Номер контроллера в Control Change заканчивается на 119, потому что 120-127 заняты сообщениями режима канала ниже. Диапазон Pitch Bend в полутонах вообще не входит в сообщение: его решает приёмник, а в таблице MIDI отмечено, что его можно задать через RPN 0. Program Change и давление канала несут один байт данных, а остальные пять несут два.
Узнайте сообщения режима канала
Сообщения режима канала используют байт статуса Control Change, от B0 до BF, с номерами контроллеров от 120 до 127. Они меняют поведение канала, а не звук.
| Контроллер | Название | Что делает |
|---|---|---|
| 120 | All Sound Off | Разом заглушает все голоса |
| 121 | Reset All Controllers | Возвращает контроллеры в состояние по умолчанию |
| 122 | Local Control | 0 выключает, 127 включает: играют ли клавиши собственный звук синтезатора |
| 123 | All Notes Off | Отпускает все удерживаемые ноты |
| 124 и 125 | Omni Mode Off и On | Слушает ли устройство один канал или все |
| 126 и 127 | Mono Mode On и Poly Mode On | Одна нота на канал или аккорды |
В списке MIDI Association отмечено, что 124-127 тоже выключают все ноты. Кнопка паники это в основном CC 123 и CC 120, отправленные на всех 16 каналах. Точные байты перечислены в статье паника MIDI.
Читайте системные сообщения
Системные сообщения начинаются с F и не несут канала, поэтому их может прочитать любое устройство на кабеле. F0-F7 это общие системные сообщения, а F8-FF это сообщения реального времени, единственные, которые разрешено вставлять в середину сообщения SysEx.
| Статус (hex) | Сообщение | Данные | Подробнее |
|---|---|---|---|
| F0 | System Exclusive | ID производителя, затем любое число байтов данных до F7 | SysEx |
| F1 | MIDI Time Code quarter frame | Один байт: часть тайм-кода | |
| F2 | Song Position Pointer | Два байта: 14-битный счёт долей от начала, где доля равна 6 тактам синхронизации | |
| F3 | Song Select | Один байт: какая песня или последовательность | |
| F6 | Tune Request | Нет. Просит аналоговые синтезаторы подстроить генераторы | |
| F7 | End of Exclusive | Нет. Завершает сообщение SysEx | |
| F8 | Timing Clock | Нет. Отправляется 24 раза на четвертную ноту | такт MIDI |
| FA, FB, FC | Start, Continue, Stop | Нет | такт MIDI |
| FE | Active Sensing | Нет. Необязательно, не реже раза в 300 мс, если устройство начало его отправлять | |
| FF | Reset | Нет. Возвращает приёмники в состояние после включения |
F4, F5, F9 и FD не определены. Clock, Start и Stop это системные сообщения, поэтому канала у них никогда нет. О дампах SysEx и приложениях, которые их отправляют, см. страницу SysEx librarian для Mac.
Найдите номера CC, которые стоит знать
Многие из 120 номеров Control Change остаются неопределёнными, но у нескольких есть имена в стандарте MIDI, которым следуют синтезаторы и приложения. Эти данные взяты из списка Control Change MIDI Association.
| CC | Название | Подробнее |
|---|---|---|
| 0 и 32 | Bank Select, MSB и LSB | MSB и LSB |
| 1 | Колесо модуляции | список CC |
| 2 | Дыхательный контроллер | |
| 4 | Ножной контроллер | |
| 6 и 38 | Data Entry, MSB и LSB | NRPN и RPN |
| 7 | Громкость канала | |
| 10 | Панорама | |
| 11 | Экспрессия | |
| 64 | Педаль сустейна (демпфера): от 0 до 63 выключена, от 64 до 127 включена | педаль сустейна |
| 65, 66, 67 | Портаменто, состенуто и мягкая педаль, включено или выключено | |
| 98 и 99 | Номер NRPN, LSB и MSB | NRPN и RPN |
| 100 и 101 | Номер RPN, LSB и MSB | NRPN и RPN |
Контроллеры с 32 по 63 это младшие половины, LSB, контроллеров с 0 по 31, так Bank Select превращается в CC 0 плюс CC 32. CC 64 это переключатель, поэтому любое значение от 64 и выше означает, что педаль нажата. В списке MIDI CC перечислены все номера.
Посмотрите, что InputConfig читает и отправляет
InputConfig превращает MIDI с клавиатуры, пэд-контроллера или DAW в клавиши, щелчки, громкость Mac и многое другое, а также отправляет MIDI с игрового контроллера или клавиатуры через виртуальный порт с именем InputConfig. Вот честный список по сообщениям.
| Сообщение | Привязка как вход | Отправка как выход |
|---|---|---|
| Note On и Off | Да, как удерживаемая кнопка | Да, с velocity, заданной в строке |
| Control Change | Да, как переключатель, регулятор или поворот | Да, фиксированное значение или положение стика либо курка |
| Pitch Bend | Да, плюс и минус, как у стика | Да, с оси стика или с кнопки |
| Aftertouch | Да | Нет |
| Program Change | Да, и он может активировать пресет | Да |
| Start, Continue, Stop | Да | Да |
| Timing Clock | Нет | Нет |
| System Exclusive | Нет | Нет |
| NRPN и RPN | Нет | Нет, отправляются отдельные сообщения |
Две детали сбивают людей с толку. Кнопки не чувствительны к силе нажатия, поэтому каждый выход MIDI Note играет с velocity, заданной в его строке, от 1 до 127, а курок на CC 11 это способ получить динамику. И ручка в режиме Switch срабатывает, когда значение переходит за середину, что превращает педаль сустейна в переключатель включено и выключено.


Если элемент управления отправляет ноту, CC, pitch bend или Program Change, InputConfig может его привязать. Настройку описывают страницы MIDI в нажатие клавиш и выход MIDI.
Если сообщение не такое, как вы ожидали
Большинство сюрпризов связано с нумерацией, а не с неисправным оборудованием. Поднимайтесь по этой лестнице, начиная с самого простого шага:
- Проверьте нумерацию каналов. В байте от 0 до 15, а в приложении от 1 до 16. Устройство на канале 10 отправляет 99 для Note On.
- Проверьте нумерацию программ. В сообщении от 0 до 127, а во многих списках патчей от 1 до 128, поэтому патч 1 отправляется как 0.
- Проверьте скрытый Note Off. Note On с velocity 0 завершает ноту, поэтому журнал, полный Note On, всё равно может отпускать клавиши.
- Расшифруйте сырые байты. Вставьте их в декодер сообщений MIDI или понаблюдайте за их приходом в тестере MIDI.
Ошибка на единицу это самая частая ошибка MIDI.
Углубитесь в одно сообщение
- Ноты. Velocity, номера нот и карта ударных General MIDI.
- Давление. Aftertouch канала и полифонический.
- Контроллеры. Педаль сустейна, MSB и LSB, NRPN и RPN и MIDI learn.
- Патчи. Program Change.
- Высота тона. Pitch Bend.
- Такт и безопасность. Такт MIDI, паника MIDI и MIDI Thru.
- Данные. SysEx.
Каждая страница здесь берёт одну строку таблиц и объясняет её на примерах. Если для вас всё это внове, начните со статьи что такое MIDI.
Коротко
- Сначала статус. Байт от 80 hex и выше начинает сообщение, а следующие за ним байты это значения от 0 до 127.
- Канальные сообщения. От 80 до EF, канал в последней цифре.
- Системные сообщения. От F0 до FF, без канала: SysEx, такт, Start, Stop и остальные.
- Большие числа. Два байта данных дают от 0 до 16383, как в Pitch Bend.
Прочитайте первую цифру байта статуса, и вы знаете, что это за сообщение.
Вопросы
Сколько существует типов сообщений MIDI?
В MIDI 1.0 семь канальных сообщений (Note Off, Note On, полифоническое давление, Control Change, Program Change, давление канала и Pitch Bend), сообщения режима канала на CC 120-127 и системные сообщения от F0 до FF.
Что такое байт статуса MIDI?
Это первый байт сообщения, от 80 до FF hex. Он говорит, что это за сообщение, а для канальных сообщений ещё и на каком из 16 каналов оно передаётся.
Чем CC отличается от NRPN?
CC это одно сообщение с номером контроллера и значением от 0 до 127. NRPN выбирает параметр через CC 99 и 98 и задаёт его через Data Entry на CC 6 и 38, поэтому одно изменение занимает три или четыре сообщения.
Какие сообщения MIDI поддерживает InputConfig?
Он привязывает ноты, Control Change, pitch bend, aftertouch, Program Change и Start, Continue и Stop, а отправляет ноты, Control Change, pitch bend, Program Change и транспорт. Такт, SysEx и NRPN он не обрабатывает.
Является ли такт MIDI канальным сообщением?
Нет. Timing Clock, F8, это системное сообщение реального времени без канала, отправляемое 24 раза на четвертную ноту.
Ещё на русском
Подробные руководства на английском
Кто это пишет. Ryleigh Newman разрабатывает InputConfig и каждый день управляет своим Mac с помощью геймпада, потому что руки плохо слушаются. Эта страница переведена с английского. Если на Mac выбран русский язык, основные кнопки и меню приложения показываются по-русски; на этой странице они названы так же, с английским названием в скобках. Остальная часть приложения и сайта на английском языке.
Эта страница на других языках: English, Deutsch, Español, Français, Italiano, 日本語, 한국어, Polski, Português, ไทย, 繁體中文, 简体中文
Бесплатно. macOS 14 или новее. Без учётной записи, ничего не покидает ваш Mac. Исходный код на GitHub.