Что такое MIDI?

MIDI - musical instrumental digital interface — это стандартный протокол обмена данными между электронными/цифровыми музыкальными инструментами. Он позволяет обмениваться такой информацией, как номер ноты, скорость нажатия, таймкод и др.
До разработки MIDI музыкальные инструменты разных производителей, как правило, не могли "общаться" друг с другом. С помощью MIDI любая MIDI-совместимая клавиатура или контроллер могут быть подключены к любому другому MIDI-совместимому секвенсору, звуковому модулю, драм-машине, синтезатору или компьютеру, даже если они изготовлены разными производителями.
Предпосылки

Необходимость в подобном универсальном стандарте возникла примерно к концу 70-ых годов. К этому времени уже широко начали использоваться синтезаторы, управлявшиеся в основном с помощью различных вариантов интерфейса CV/Gate (control voltage). Главным его недостатком было то, что он мог управлять только одним голосом полифонии, при этом передавая только сам факт нажатия клавиши и высоту тона. Кроме того, одной из основных предпосылок к появлению MIDI стала потребность музыкантов того времени управлять с одной клавиатуры несколькими синтезаторами одновременно. При этом от разработчиков требовалось, чтобы соединение инструментов было простым, а сам интерфейс надежным и недорогим.

История создания

В июне 1981 года на выставке NAMM между главами компаний Roland, Sequental Circuits и Oberheim состоялось первое обсуждение возможности создания подобного универсального интерфейса, и уже осенью того же года была создана его первая версия. К концу 1982 года была завершена предварительная спецификация MIDI и выпущены первые MIDI-синтезаторы Roland Jupiter-6 и Prophet 600. И в 1984 году была сформирована ассоциации MIDI-производителей (MMA).

Основы

MIDI — это протокол последовательной передачи данных между устройством управления, генерирующим команды, и подчиненным устройством, их выполняющим.

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

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

MIDI как стандарт состоит из нескольких составных частей:

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

MIDI-сообщения

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

MIDI-сообщения делятся на два типа: сообщения канала (channel messages) и системные сообщения (system messages). Первые управляют звукообразованием, а вторые выполняют служебные функции, например, синхронизацию. Системные сообщения предназначаются всем устройствам в MIDI-системе, независимо от того, на прием каких каналов они настроены.

Сообщение обычно состоит из двух или трех байт. Первый байт называется статус байтом. В нем задается тип сообщения и номер канала, к которому оно относится. Все последующие байты называются байтами данных. Статус-байт всегда начинается с единицы, а байт-данных с нуля — таким образом система их различает. Получается, что для MIDI информации остается только 7 бит, с помощью которых можно закодировать целые числа от 0 до 127, — вот откуда берется это «знаменитое» ограничение на количество нот и значения контроллеров.

MIDI-каналы

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

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

Тот же подход используется для подключения полифонического синтезатора (способного воспроизводить несколько нот одновременно) к секвенсору.

MIDI-секвенции и стандартные MIDI-файлы

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

Имена стандартных MIDI-файлов обычно имеют расширения .mid или .midi.

Библиотеки программ на примере General MIDI (GM)

Недостатком MIDI-секвенций считалась необходимость привязки к конкретному устройству. Поэтому производители решили договориться о соответствии номеров аналогичных инструментов в разных наборах. Каждое устройство реализует стандартный тембр по-своему, однако, если мы обратимся, например, к патчу 74, мы можем быть уверены, что это будет флейта. Иными словами, при замене MIDI-устройства секвенция будет звучать приблизительно так же.

Стандартный набор состоит из 128 инструментов и называется General MIDI (GM). Синтезаторы, поддерживающие стандарт GM, могут иметь сколько угодно дополнительных банков звуков, но они не могут быть использованы при воспроизведении данных стандарта GM.

Первый общий стандарт был принят в 1991 году как General MIDI Level 1. Так как требования этого стандарта давно устарели, современные устройства поддерживают его лишь для базовой совместимости.

Аппаратная спецификация MIDI

Для того чтобы коммутировать разные устройства через MIDI-интерфейс, обычно применяют трехжильные кабели (экранированная витая пара STP) длиной до 15 метров с разъемами типа DIN-5. Скорость передачи данных 31,25 kbit/s.

Контакты 4 и 5сигнальные, контакт 2экран. Полярность сигналов дается относительно источника тока: контакт 4 — плюс (ток в направлении из контакта), контакт 5 — минус.

В устройствах со стандартным MIDI-интерфейсом имеется три разъема, обозначаемых как MIDI IN, MIDI OUT и MIDI THRU:

  • MIDI IN — это входной разъем, через который поступает MIDI-информация с других устройств.
  • MIDI OUT — выходной разъем, через который устройство передает MIDI-информацию.
  • MIDI THRU — тоже выходной разъем, копирующий информацию, полученную через MIDI IN.
Во многих современных устройствах предусмотрена коммутация MIDI-устройств с компьютером посредством стандартного кабеля USB, что устраняет необходимость иметь MIDI-порт на компьютере или аудиоинтерфейсе или отдельный MIDI-интерфейс.
Коммутация нескольких MIDI-устройств

Для того чтобы коммутировать разные устройства через MIDI-интерфейс, обычно применяют трехжильные кабели (экранированная витая пара STP) длиной до 15 метров с разъемами типа DIN-5. Скорость передачи данных 31,25 kbit/s.
В некоторых случаях может потребоваться соединение двумя MIDI-кабелями (two-way MIDI communication):

  • Запись на внешний секвенсор данных из MIDI-инструмента и последующее воспроизведение секвенсором тембров MIDI-инструмента.
  • Сохранение данных обоих устройств (патчей и прочих установок) в управляющее устройство.
В этом случае мы дополнительно подключаем MIDI OUT изначально подчинённого устройства к MIDI IN мастер-устройства.

Несколько MIDI-устройств можно скоммутировать с помощью последовательного соединения (daisychaining) или специального устройства: MIDI-patchbay.

Последовательное соединение

В этом случае MIDI-устройства соединяются цепочкой следующим образом:

  • Порт MIDI OUT управляющего MIDI-устройства подключается к порту MIDI IN второго устройства.
  • Порт MIDI THRU второго устройства передает данные контроллера в порт MIDI IN третьего устройства и т.д.
Чтобы каждое из устройств воспроизводило только определенный тембр, их необходимо настроить на свой MIDI-канал. Для наложения звуков различных устройств нужно использовать для них одинаковые MIDI-каналы.

Преимуществом этого способа является отсутствие необходимости в дополнительных устройствах, требуются только MIDI-кабели.

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

Использование MIDI-Patchbay

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

Недостатки

На данный момент MIDI считается достаточно устаревшим протоколом со множеством ограничений и недостатков, который все еще используется в основном из-за своей широкой распространенности, но в январе этого года MMA совместно с MIDI-ассоциацией Японии (AMEI) объявили о завершении разработки ключевых функциональных возможностей протокола MIDI следующего поколения — MIDI 2.0.

Кроме того, сегодня вы вполне можете столкнуться с еще одним протоколом передачи данных, используемым в музыкальной сфере - OSC (Open Sound Control) — современным протоколом для коммуникации компьютеров, синтезаторов и других мультимедийных устройств.

Узнайте больше на практике
Примите участие в практическом курсе "Осознанное сведение" и уже через 6 недель добейтесь профессионального звучания своих композиций под руководством опытного наставника.
  • 36 часов практики на топ-студии СПб
  • Разбор и докрутка на каждом занятии
  • Результат в виде законченных треков