Как говорить МИДИ

Dec 04 2022
Первоначально я написал эту статью в мае 2019 года, но переместил ее сюда после того, как мой старый веб-сайт был объявлен устаревшим. Наслаждаться! Содержание Приложение I: Сообщения режима канала Приложение II: Диаграмма высоты тона MIDI Приложение III: Стандартные назначения CC Приложение IV: Сообщения об изменении банка Приложение V: Дополнительные ресурсы MIDI является древним, но чертовски полезным.

Первоначально я написал эту статью в мае 2019 года, но переместил ее сюда после того, как мой старый веб-сайт был объявлен устаревшим. Наслаждаться!

Содержание

  1. Что такое MIDI
    1.1 Чем MIDI не является
  2. Как это работает
    2.1 Разделение сообщений
    2.2 Байты состояния и байты данных
  3. Типы сообщений
    3.1 Note Off / Note On (0x8n, 0x9n)
    → 3.1.1 О номерах высоты тона MIDI
    3.2 Изменение управления (0xBn)
    3.3 Изменение высоты тона (0xEn)
    3.4 Полифоническое давление клавиш и давление канала (0xAn, 0xDn)
    3.5 Изменение программы (0xCn) )
    3.6 Система (0xFn)
  4. О шестнадцатеричном формате
  5. Прикладной пример: Пятая симфония Бетховена.
  6. Бонусный урок: рабочий статус

Приложение I: Сообщения режима канала
Приложение II: Диаграмма высоты тона MIDI
Приложение III: Стандартные назначения CC
Приложение IV: Сообщения об изменении банка
Приложение V: Дополнительные ресурсы

MIDI древний, но очень полезный. Он управляет клавишными, которые вы видите в Guitar Center, управляет такими вещами, как освещение и пиротехника на концертах¹, и использовался практически для каждого фильма за последние несколько десятилетий.

Если вы современный музыкант, практические знания MIDI необходимы. Если вы относитесь к тому типу людей, которые читают подобные сообщения в блогах, велика вероятность, что у вас уже есть некоторый опыт работы с ними; тем не менее, я думаю, что полезно знать не только, как его использовать, но и как читать его на побитовом уровне. Перевод и ассемблирование ваших собственных MIDI-сообщений поначалу может показаться пугающим, но на самом деле это очень просто, и я думаю, что это важный навык для любого современного композитора. Это все равно что инженеру звукозаписи знать, как работают микрофоны.

Эта статья послужит исчерпывающим введением и руководством по MIDI-сообщениям, поскольку они применимы к производству музыки. Чем это руководство не является , так это учебником по MIDI-композиции или тому, как использовать MIDI-редактор в вашей DAW. Тем не менее, это руководство предназначено исключительно для композиторов, так как вы обнаружите, что фундаментальные знания MIDI очень помогут при освоении более продвинутых (и сложных) MIDI-инструментов. Давайте начнем.

Prophet 600 был одним из первых синтезаторов, когда-либо поддерживавших MIDI.

1. Что такое MIDI

Мне нравится начинать обучение с самого начала. Однако, если вы уже понимаете, что такое MIDI и для чего он нужен, смело переходите к разделу « Как это работает» , где мы перейдем непосредственно к гайкам и болтам. В противном случае давайте пересмотрим.

MIDI — это аббревиатура, расшифровывающаяся как «цифровой интерфейс музыкальных инструментов». По сути, это способ для компьютеров описывать и передавать друг другу музыкальные исполнения. На самом деле, это путь . Если вы родились после 80-х, то, вероятно, каждая клавишная или драм-машина, которую вы когда-либо видели, использует MIDI. Хотя за эти годы было предпринято много попыток переделать или заменить MIDI, производители и разработчики инструментов, похоже, просто не заботятся об использовании чего-либо еще.

С MIDI вы можете:

  • Записывайте музыкальные выступления и редактируйте их с хирургической точностью
  • «Подключите» исполнение к любому инструменту практически без работы
  • Процедурно генерировать или изменять последовательность выступлений
  • Устраивайте ансамблевые выступления с помощью одного соединения
  • Выполните элементарное микширование, дополненное «автоматизацией».

И это если партитура вообще будет исполнена. В то время как виртуальные оркестры 80-х звучали смехотворно фальшиво, современные инструменты звучат настолько хорошо, что случайные слушатели даже не могут отличить их. И это все изменило. В малобюджетных фильмах и телешоу в финальной версии саундтрека часто используются MIDI-оркестры, и зрители об этом не подозревают. И что удивительно, такие инструменты доступны музыкантам почти с любым уровнем дохода.

1.1 Чем MIDI не является

Прежде чем продолжить, я хочу развеять пару заблуждений, которые иногда возникают у новичков. Это не займет много времени.

Во-первых, MIDI не создает музыку: он просто сообщает другим устройствам, как создавать музыку. Но он может делать и другие вещи. Например, в профессиональных программах для работы с видео MIDI-сообщения используются для управления такими вещами, как параметры анимации. Многие пульты управления студиями используют MIDI для управления программным обеспечением для микширования, а это модное пианино использует его для запуска роботизированных приводов. Я пытаюсь подчеркнуть, что, хотя MIDI-данные в основном используются для управления виртуальными инструментами, их можно использовать вообще для чего угодно, и они не «звучат» сами по себе.

Инструменты, которые использует MIDI-композитор, абстрагируют компьютерный код во что-то, что легче визуализировать. (Скриншот Nuendo 8)

Во-вторых, MIDI-данные — это не просто «ноты для компьютеров», какой бы полезной ни была аналогия. В то время как западные ноты — это средство, которое закодировало всю самую выразительную музыку в истории, правда в том, что она оставляет значительное пространство для интерпретации — а компьютеры не очень хорошо справляются с двусмысленностью.

Вместо этого MIDI, вероятно, лучше всего рассматривать как язык программирования, а ваш MIDI-редактор — как среду визуального программирования. MIDI-редакторы представляют MIDI-команды в виде фигур на пианино, а не в том, чем они являются на самом деле: прославленными цифровыми инструкциями. И, как и все языки программирования, MIDI подвержен всевозможным ошибкам и сбоям. Например, если сообщение «заметка включена» неправильно сочетается с сообщением «заметка выключена», то заметка просто будет воспроизводиться вечно, потому что у компьютеров не хватает здравого смысла, чтобы остановиться.

В любом случае, я устал писать это введение. Давайте откинем все эти слои абстракции и изучим на фундаментальном уровне, как говорить MIDI.

2. Как это работает

Как почти все в компьютерах, MIDI сводится к набору нулей и единиц. Каждая цифра называется битом (сокращение от «двоичная цифра»), а восемь из них образуют байт . Когда вы играете на цифровом пианино, MIDI-сообщения генерируются внутри и отправляются на тон-генератор инструмента, где они интерпретируются и преобразуются в слышимый звук. Если вы взглянете на сигнал, сгенерированные сообщения могут выглядеть примерно так:

Это бинарная форма простого MIDI-исполнения: первые четыре ноты Квинты Бетховена. Если бы вы записали эту последовательность и повторили ее на другом MIDI-инструменте точно так, как она была поставлена, результатом была бы идентичная копия исполнения. Если бы вы напортачили с таймингом, вы бы изменили темп выступления. Все остальное о производительности закодировано в самих данных.

Довольно интересно осознавать, что в наши дни композиторы в основном тратят свое время на создание, редактирование и настройку того, что сводится к своевременной доставке номеров. В любом случае, давайте разберем задачу интерпретации этого беспорядка, шаг за шагом.

2.1 Разделение сообщений

Первое, что нужно знать о MIDI-сообщениях, это то, что они почти всегда занимают более одного байта. Это имеет смысл, если учесть, что существует всего 256 уникальных 8-битных чисел, и нам, вероятно, нужно закодировать гораздо больше информации, чем это, чтобы описать что-то столь выразительное, как музыкальное событие.

Итак, если вы получаете сообщение несколькими небольшими пакетами, возможно, все сразу, как узнать, где заканчивается одно сообщение и начинается следующее? На самом деле, если вы знаете, сколько байтов ожидать в сообщении, и начинаете сверху, вы сможете отличить их друг от друга, пока ни один из них не будет потерян при передаче. Тем не менее, MIDI предлагает нам безошибочный способ разобрать каждое сообщение: выделяя причину первого бита каждого байта.

ПРАВИЛО 1: Если первый бит байта MIDI равен 1 , то этот байт является байтом состояния , который отмечает первую часть MIDI-сообщения. Если первый бит равен 0 , то это байт данных , который формирует тело сообщения.

Легкий. Каждый раз, когда байт начинается с 1 , мы знаем, что читаем начало нового сообщения, и мы можем интерпретировать следующие байты вместе с первым. Давайте воспользуемся этим правилом, чтобы разбить приведенное выше исполнение MIDI на отдельные сообщения.

Теперь, когда мы смотрим на что-то более упорядоченное, вы можете заметить появление нескольких закономерностей. Во-первых, существует только две уникальные версии каждого байта. Зная, что эти сообщения представляют собой первые четыре ноты Пятой симфонии Бетховена, можете ли вы догадаться, что они означают?

2.2 Байты состояния и байты данных

Байт состояния MIDI-сообщения служит его заголовком и является наиболее важной частью. Он сообщает нам, что делает сообщение и как интерпретировать следующие байты данных. То, что кодируют байты данных, зависит от сообщения, но обычно они предоставляют информацию, важную для выполнения сообщения. Если байт состояния говорит «прыжок», байты данных могут сказать вам, насколько высоко.

Поскольку первый бит каждого байта зарезервирован для того, чтобы отличить два типа байтов друг от друга, каждый из них может использовать только семь битов. Вот как они используются:

ПРАВИЛО 2: Биты 2, 3 и 4 байта состояния определяют его тип сообщения . Биты 5–8 идентифицируют MIDI-канал, к которому он обращается. Байты данных выполняют разные функции в зависимости от типа сообщения.

Три бита для определения типа сообщения и четыре для номера канала означают, что существует восемь различных типов сообщений и 16 возможных каналов. Байты данных могут содержать любое значение от 0 до 127 . Хотя в подавляющем большинстве сообщений используется два байта данных, это число может фактически отличаться в зависимости от потребностей сообщения. Например, для сообщений «изменение программы» требуется только один байт данных, а для «системных эксклюзивных» сообщений может быть произвольное количество.

Если вы раньше работали с MIDI, вы, вероятно, уже знакомы с MIDI-каналами. Но если это не так, каждое MIDI-соединение может управлять до 16 голосов. Байт состояния в своих четырех младших значащих битах указывает, к какому из этих каналов адресовано сообщение.³

3. Типы сообщений

В следующей таблице указаны различные типы MIDI-сообщений и то, как они используют байты данных. Мы рассмотрим каждый из них в следующих подразделах.

3.1 Примечание выключено / Примечание включено (0x8n, 0x9n)

Это самые элементарные MIDI-сообщения, и их легче всего понять. Когда вы хотите воспроизвести ноту, отправьте сообщение «заметка включена», а когда вы хотите закончить ее, отправьте сообщение «заметка выключена». Эти сообщения используют два байта данных: первый определяет, какой высотой звука вы хотите управлять, а второй определяет скорость. ⁴ «Примечание включено» со скоростью 0 не производит звука и эквивалентно сообщению «примечание выключено».

Соображения:

  • Существование сообщений «примечание включено» с нулевой скоростью означает, что сообщения «примечание выключено» совершенно не нужны. В стандарте MIDI специально указано, что сообщения «note off» и «note on» с нулевой велосити эквивалентны и должны обрабатываться одинаково. В результате одно устройство может снимать ноты не так, как другое.
  • В то время как передатчики должны использовать только один метод снятия срабатывания заметок, получатели должны иметь возможность обрабатывать оба.
  • Несмотря на то, что значение скорости не имеет особого смысла в сообщении «примечание выключено», оно все же является частью сообщения и должно быть отправлено. Значение не используется и отбрасывается.

Номера высоты тона сопоставляются с клавишами фортепиано по существу один к одному. Однако, поскольку существует 128 возможных значений и только 88 клавиш пианино, MIDI фактически поддерживает 40 полутонов, которых нет на пианино. 19 из них расположены над самой высокой нотой C7, а остальные 21 — ниже самой низкой ноты A-1. Диапазон высоты тона MIDI более или менее сосредоточен вокруг средней ноты C, номер ноты 60.

Имейте в виду, что производители не все согласны с номерами октав. Обозначение научной высоты тона, используемое аналоговыми музыкантами, идентифицирует самую низкую ноту C на фортепиано как C1 , что делает среднюю C4 . Программисты, с другой стороны, часто начинают считать с 0, поэтому для них самый низкий C — это C0 , а средний C — это C3 . Это обозначение, которое я обычно использую, потому что оно используется во всех моих MIDI-инструментах. Однако независимо от того, какую систему вы используете, средняя нота C всегда имеет номер 60.

В Приложении II я привожу таблицу для преобразования в номера высоты тона MIDI и обратно.

3.2 Изменение управления (0xBn)

Сообщения «Изменение управления» используются для изменения непрерывных контроллеров канала . Контроллер непрерывного действия аналогичен полосе автоматизации; это позволяет постоянно контролировать различные аспекты производительности канала.

Первый байт данных идентифицирует номер CC (0–119) , а второй присваивает ему значение (0–127) .

Соображения:

  • В отличие от названия, непрерывные данные контроллера не являются непрерывными. Вместо плавной интерполяции между значениями, как это делает автоматизация, текущее значение полосы CC может изменяться только дискретными шагами. Чтобы плавно перейти к другому значению, вы должны отправить большое количество сообщений «изменение управления», увеличивая или уменьшая значение с контролируемой скоростью.
  • Спецификация MIDI определяет, для чего предназначено большинство 120 CC, хотя очень немногие устройства используют больше, чем несколько. Я привожу таблицу всех СС в Приложении III .
  • Последние восемь номеров CC (120–127) на самом деле вообще не представляют CC. Вместо этого они представляют собой особую категорию сообщений, называемых сообщениями режима канала . Сообщения режима канала — это специализированные команды, влияющие на все принимающее их устройство. На практике вам не придется слишком беспокоиться о них, но я привожу дополнительную информацию о них в Приложении I.
  • Номера CC 0 и 32 используются многими устройствами для выбора патча. Подробнее об этом читайте в Приложении IV .

Изменяет высоту звука вверх или вниз. Дух.

Pitch Bend ведет себя немного как CC. На самом деле, большинство MIDI-редакторов относятся к Pitch Bend как к еще одному CC. Однако 7-битное значение CC со 128 возможными значениями не обеспечивает достаточного разрешения для реализации эффекта изменения высоты тона. Наши уши прекрасно справляются с определением высоты тона, и поэтому даже когда мы приближаемся к новой высоте на 1/128 пути за раз, она не звучит плавно и органично.

Чтобы получить более высокое разрешение, в сообщениях с изменением высоты тона для передачи одного большого значения используются два байта данных. По сути, если вы объедините семь битов одного сообщения и семь битов другого, вы можете собрать одно 14-битное значение, увеличив разрешение в 2⁷, или 128 раз.

Теперь, вместо 128 возможных значений для нашего изменения высоты тона, у нас есть колоссальные 16 384 — более чем достаточно шагов для создания плавного эффекта изменения высоты тона. Правая половина обеспечивается первым байтом данных (самый младший байт, или LSB), а левая половина предоставляется вторым (старшим значащим байтом, или MSB).

Соображения:

  • Сила изменения высоты тона (на сколько полутонов вверх или вниз представляет максимальное изменение высоты тона) различается от инструмента к инструменту. Это часто настраивается.
  • Изменение высоты тона «центрируется» на 8192 (где нет изменения высоты тона).
  • Изменения высоты тона влияют на все воспроизводимые ноты на канале, как и CC.
  • Программирование с использованием MSB и LSB лучше всего выполнять с помощью побитовых операторов. Я не буду здесь их перечислять, но я предоставил некоторые ресурсы в Приложении V , если вы хотите узнать больше.

Некоторые MIDI-контроллеры, такие как Akai MPK225 , имеют так называемое послекасание . Контроллеры послекасания чувствительны не только к скорости нажатия каждой клавиши, но и постоянно чувствительны к давлению, с которым удерживаются клавиши.

Послекасание бывает двух видов: канальное послекасание и полифоническое послекасание . Канальное послекасание, также известное как монофоническое нажатие , измеряет давление по всей клавиатуре, тогда как полифоническое послекасание измеряет давление независимо для каждой клавиши. Из-за более низкой стоимости оборудования канальное послекасание является более распространенным из двух. Сообщения о давлении в канале используют только один байт данных, который представляет общий уровень давления. В полифонических сообщениях о нажатии клавиш используются два сообщения: первое сообщает о высоте тона (с использованием стандартных чисел высоты тона), а второе сообщает о нажатии.

Соображения:

  • Полифоническое послекасание — единственный элемент управления, который можно настроить независимо для каждой высоты тона. Любой другой элемент управления (кроме включения или выключения ноты) влияет на весь канал.
  • Расширение MIDI, называемое «MIDI Polyphonic Expression» (MPE), предназначено для полифонического применения CC и изменения высоты тона. MPE не очень распространен, но был популяризирован такими устройствами, как ROLI Seaboard . Я предоставил ссылки на ресурсы, которые охватывают это в Приложении V.

Если вы не используете много внешнего MIDI-оборудования, вы, вероятно, не будете использовать этот тип сообщений слишком часто. Сообщение об изменении программы дает команду устройству загрузить новую программу (новый патч или пресет). Он использует только один байт данных, который определяет индекс патча.

Этот тип сообщения очень полезен при создании с помощью внешних MIDI-устройств. Пока ваше оборудование поддерживает предустановки, ваш проект или сессия могут обрабатывать их выбор и загрузку: просто последовательность соответствующих сообщений «изменение программы» в начале.

Соображения:

  • Инструменты с более чем 128 пресетами обычно хранят свои патчи в нескольких банках . Для вызова программ, хранящихся в других банках, CC 0 и 32 переназначаются в сообщения «выбор банка». В Приложении IV я расскажу, как это работает.
  • Благодаря умному планированию сообщений об изменении программы одно устройство может использовать более 16 различных патчей в одном фрагменте, если они не воспроизводятся одновременно. Хотя, чтобы быть правдой, вам, вероятно, следует разделить вещи на отдельные захваты, если вам нужно выжать столько голосов из одного устройства.
  • Cubase и Nuendo предлагают встроенную поддержку сообщений об изменении программы в инспекторе дорожек MIDI. Я не уверен, сколько других DAW поддерживают это.

Системные сообщения — это сложная тема, которую я не буду здесь затрагивать. Они действительно заслуживают отдельной статьи. Они используются для самых разных вещей; гигантские передачи данных (так называемые « дампы »), синхронизация часов, передача тайм-кода и многое другое.

В будущем я, возможно, напишу руководство по системным сообщениям, но пока не беспокойтесь о них. Просто имейте в виду, что они существуют и обычно не используются в композиции MIDI.

4. О шестнадцатеричном формате

Прежде чем продолжить, мы должны поговорить обо всех тех 0x, которые я использовал в предыдущем разделе. Префикс 0x говорит о том, что число представлено в шестнадцатеричном формате.⁵ Когда вы углубитесь в свои расширенные MIDI-инструменты и руководства по устройствам, вы заметите, что MIDI-сообщения почти всегда представлены в шестнадцатеричном формате, а не в двоичном или десятичном формате. Поначалу это может показаться нелогичным — я имею в виду, если вы вообще собираетесь преобразовывать двоичное число, почему бы просто не преобразовать его в удобочитаемое число с основанием десять?

Ответ заключается в том, что это просто более практично. Хотя я считаю, что двоичный код — лучший способ начать изучение MIDI, на самом деле работать с ним довольно сложно. Распределение каждого байта по восьми цифрам делает чтение и запись рутиной, а поскольку все в двоичном формате состоит только из единиц и нулей, легко потерять свое место при чтении длинных последовательностей.

Изменение бита в двоичном числе может повлиять только на одну цифру его шестнадцатеричного представления.

Итак, побитовые программисты обычно работают в шестнадцатеричном формате. Каждый байт сокращается до двух цифр, а поскольку 16 — это степень числа 2, каждый изменяемый бит влияет только на одну цифру в шестнадцатеричном формате. Это позволяет вам думать о каждой шестнадцатеричной цифре как о собственном четырехбитном числе. Если вы хотите побитово работать с десятичным представлением, вам придется преобразовать весь байт в двоичный и обратно.

При работе с MIDI в шестнадцатеричном формате следует помнить лишь о нескольких вещах.

  • Из-за того, что биты сгруппированы в шестнадцатеричном формате, вы можете сказать, к какому MIDI-каналу обращается байт состояния, взглянув не более чем на правую шестнадцатеричную цифру.
  • Если левая цифра байта равна 0x7или меньше, вы знаете, что это байт данных, и точно так же вы знаете, что байт, начинающийся с 0x8или больше, является байтом состояния.
  • Максимальное значение байта данных, 127, 0x7F в шестнадцатеричном формате.

5. Пример применения: Пятая симфония Бетховена.

Когда мы последний раз заканчивали этот пример, мы только что разбили необработанный двоичный файл на отдельные сообщения. Это выглядело так:

Чтобы с этим было легче спорить, давайте преобразуем его в шестнадцатеричный формат. Я оставлю байты состояния красными, а байты данных синими.

Зная то, что мы знаем сейчас, мы понимаем, что 0x9 и 0x8, ведущие к байтам состояния, идентифицируют сообщения как «примечание включено» и «примечание выключено» соответственно. Правая цифра байта говорит нам, что они нацелены на MIDI-канал 1.⁶

Вот как выглядит производительность с переведенными байтами состояния.

В типах сообщений «note on» и «note off» первый байт данных кодирует высоту тона, а второй — скорость. Значение скорости — это просто число. Чтобы определить высоту тона, нам нужно обратиться к таблице MIDI-нот . И помните, скорости «примечания выключены» не используются.

Закончим перевод:

Вот и все! Это переведенные MIDI-инструкции, кодирующие первые четыре ноты Пятой ступени Бетховена. Дум дум дум дуум!

Зная то, что вы знаете сейчас, вы можете создавать и декодировать обычные MIDI-сообщения вручную. Теперь вам доступны более продвинутые инструменты, такие как преобразователи MIDI и логические редакторы. Однако всегда есть чему поучиться. Если вы жаждете знаний, я предоставил некоторые ресурсы, которые вы можете использовать для дальнейшего изучения MIDI в Приложении V.

6. Бонусный урок: статус выполнения

Есть удобные предложения MIDI, которые я не упоминал до сих пор, чтобы не усложнять ситуацию. Вот как это работает: как только вы отправили байт состояния, вам не нужно отправлять другой, пока он не будет отличаться от последнего. Последний полученный байт состояния остается «включенным» и используется для интерпретации всех последующих байтов данных. Это называется рабочим статусом .

Рассмотрим следующую строку байтов:

То, что вы видите, — это точно такое же исполнение Пятой пьесы Бетховена, которое мы перевели в прикладном примере, но почти со всеми отсутствующими байтами состояния. Однако из-за состояния выполнения эта производительность так же действительна, как и первая. Как только мы отправляем байт состояния 0x90, он становится рабочим состоянием, и каждую пару следующих байтов можно рассматривать так, как если бы им предшествовал собственный « 0x90».

Это позволяет нам вырезать множество повторяющихся байтов состояния, что может значительно сократить наши MIDI-потоки. В те времена, когда компьютеры были медленнее, а скорость передачи данных была более ограниченной, это было невероятно полезно. Однако сегодня компьютеры настолько быстры, что использование статуса выполнения не приводит к заметному улучшению производительности. Тем не менее, я все еще упоминаю об этом, потому что, если вы обнаружите, что занимаетесь программированием MIDI, вы должны быть готовы к тому, что байты состояния будут опущены здесь и там.

Обратите внимание, что, поскольку «нота включена» с нулевой скоростью считается как «нота выключена», мы можем как начинать, так и заканчивать ноты, не нарушая статус выполнения; по крайней мере, до тех пор, пока нам не понадобится отправить изменение управления или сообщение на другой канал.

  1. Это делается с помощью расширения MIDI под названием MIDI Show Control.
  2. «Что видишь, то и получаешь».
  3. Номера MIDI-каналов начинаются с 1, а их представление здесь начинается с 0. Значение 0 означает канал 1, а значение 15 означает канал 16.
  4. О скорости можно думать как о том, насколько «сильно» берется нота.
  5. Еще одно распространенное обозначение - после номера следует заглавная буква «H», как в «78H».
  6. Помните, хотя число в сообщении равно нулю, оно соответствует каналу 1, потому что мы начинаем считать числа с 0, а каналы — с 1.

Приложение I: Сообщения режима канала

Сообщения «Режим канала» — это специальные команды, которые изменяют поведение всего устройства, изменяя его режим MIDI . Ну вроде.

На практике сообщения «режима канала» просто используются для включения или отключения определенных функций и отправки определенных команд. То, что MIDI называет «режимами», по сути является просто разными конфигурациями переключателей Omni и Poly. Честно говоря, я не думаю, что «режимы» — это очень подходящий способ думать об этих командах; но я хотя бы объясню, что делают команды.

Сообщения в режиме канала не имеют собственного типа сообщения. Вместо этого используются последние восемь непрерывных номеров контроллеров (CC 120–127). Сообщения режима канала следующие:

Чтобы устройство отвечало на сообщения режима канала, оно должно получать их на своем основном канале . Базовый канал устройства является единственным MIDI-каналом, на котором сообщения о режиме канала считаются действительными. Для многих устройств этот канал настраивается. Таким образом, сообщения режима канала могут быть нацелены на определенные устройства в гирляндной цепочке.

Далее следует краткое описание каждого сообщения режима канала. Приложение V содержит ресурсы для дальнейшего изучения.

  • All Sound Off («CC» 120): отключает все звуки, издаваемые инструментом в данный момент, включая затухание нот и эффекты реверберации.
  • Сброс всех контроллеров («CC» 121): Устанавливает все контроллеры CC, переключатели, изменение высоты тона и эффекты послекасания на значения по умолчанию. Какое значение возвращает каждый контроллер, зависит от контроллера и определено в спецификации MIDI.
  • Локальное управление («CC» 122): Отключает клавиатуру синтезатора от тон-генератора. Это позволяет вам использовать синтезатор в качестве MIDI-контроллера и в то же время секвенировать его. Установите, 0x00чтобы выключить местное управление и 0x7Fснова включить его.
  • All Notes Off («CC» 123): «тревожная кнопка». All Notes Off эквивалентно отправке сообщений «note off» для каждой высоты тона на каждом канале. Это удобно для устранения застрявших заметок. Локально запускаемые ноты не затрагиваются.
  • Режим Omni Off/On («CC's» 124, 125): Когда режим Omni включен, каждый канал будет отвечать на каждое входящее сообщение, независимо от того, какой канал указан в байте состояния.
  • Mono Mode / Poly Mode ("CC's" 126, 127): Принуждает голос или голоса к монофоническому или полифоническому поведению. Если для параметра «режим моно» установлено значение 0x00, то основной канал и все каналы над ним будут установлены в режим моно. Для любого другого значения n каналы с n по n+m-1 будут установлены в монофонический режим (где m — значение второго байта данных). Сообщение «полирежим включен» вернет все каналы в полирежим.

Приложение III: Стандартные назначения CC

Спецификация MIDI определяет стандартизированное использование CC, которое я скопировал здесь. Определены все номера CC, кроме: 3, 9, 14, 15, 20–31, 85–90 и 102–119 . Наиболее широко поддерживаемыми CC являются Modulation ( 0x01), Foot Controller ( 0x04), Volume Volume ( 0x07), Pan ( 0x0A), Expression ( 0x0B) и Sustain ( 0x40).

Ознакомьтесь с ресурсами в Приложении V , если вы хотите узнать больше об этих CC.

Приложение IV: Сообщения об изменении банка

Современные синтезаторы могут хранить и вызывать гораздо больше пресетов, чем может быть адресовано одним сообщением об изменении программы. Чтобы обойти это, производители часто сортируют свои программы по банкам . Каждый банк имеет максимум 128 пресетов и уникальный 7-битный или 14-битный адрес.

Чтобы отозвать патч из другого банка, вы должны сначала отправить сообщение «bank select» с его адресом. После этого как обычно отправьте сообщение об изменении программы, и загруженный патч придет из нового банка.

Как вы могли заметить, на самом деле это сообщения об «изменении управления» для CC 0 и 32 . Для 7-битных адресов используется только CC 0 . Для 14-битных адресов CC 0 представляет MSB, а 32 — LSB. Если вам нужен учебник по MSB и LSB, он есть в разделе Pitch Bend основной статьи.

Использование устройством 7-битных или 14-битных адресов является произвольным, и вам нужно будет проверить свое руководство, чтобы узнать, какой из них использовать при общении с вашим устройством.

Приложение V: Дополнительные ресурсы

  • Ассоциация MIDI : Ассоциация MIDI является основным хранилищем информации о технологии MIDI или связанной с ней. Регистрация бесплатна, и как только вы это сделаете, вы сможете скачать Полную подробную спецификацию MIDI 1.0 здесь .
  • Побитовая операция (Википедия) : я знаю, я знаю, что Википедия не является хорошим основным ресурсом, но мне нравится эта статья, потому что она не зависит от языка и не содержит рекламы. Изучите арифметические битовые сдвиги и побитовое ИЛИ, которые полезны при работе со старшими и младшими битами.
  • Что такое МПЭ? : статья в базе данных поддержки ROLI, посвященная полифоническому выражению MIDI, которое используется в многомерных контроллерах, таких как продукты Seaboard. MPE был официально принят Ассоциацией производителей MIDI-устройств в январе 2018 года, и ссылка на скачивание спецификации доступна здесь .
  • Режимы MIDI (Electronic Music Interactive v2, Университет штата Орегон): на этой странице представлен хороший краткий обзор четырех стандартных режимов MIDI. Это часть более длительного онлайн-курса по электронной музыке.
  • Список MIDI CC (Ник Фивер) : список стандартных CC с более подробными пояснениями. Если вам все еще нужна дополнительная информация после просмотра списка Ника, обратитесь к The Complete MIDI 1.0 Detailed Specification, которую вы можете скачать здесь .
  • Общие сообщения системы MIDI , сообщения системы MIDI в реальном времени и эксклюзивное сообщение системы MIDI (RecordingBlogs Wiki): отличное введение в каждый тип системных сообщений.
  • Зарегистрированный номер параметра MIDI (RecordingBlogs Wiki): обзор зарегистрированных номеров параметров, которые можно рассматривать как расширение CC. Как только вы поймете, что такое RPN, вам также станут доступны NRPN (незарегистрированные номера параметров).