Что такое MIDI?
Musical Instrument Digital Interface (MIDI) - цифровой интерфейс для музыкальных инструментов. Создан в 1982 г. ведущими фирмами-производителями - Yamaha, Roland, Korg, E-mu и др. Изначально был предназначен для замены принятого в то время стандарта управления с помощью аналоговых сигналов (информационных сообщений), передаваемых через цифровой интерфейс. Впоследствии стал стандартом де-факто в области электронных музыкальных инструментов и компьютерных синтезаторов.
Этот интерфейс представляет собой так называемый событийно-ориентированный протокол связи между инструментами. Всякий раз, когда исполнитель осуществляет какое-либо воздействие на органы управления (нажатие/отпускание клавиш, педалей, изменение положений регуляторов и т. п.), формируется соответствующее MIDI-сообщение, в тот же момент посылаемое по интерфейсу. Инструменты, получая сообщения, отрабатывают их так же, как и при воздействии на собственные органы управления. Таким образом, поток MIDI-сообщений, являясь как бы отображением действий исполнителя, сохраняет присущий ему стиль исполнения - динамику, технические приемы и т.п. При записи на устройства хранения информации все сообщения снабжаются временными метками и образуют своеобразную "партитуру". При воспроизведении по этим меткам полностью и однозначно восстанавливается исходный MIDI-поток.
Главное назначение MIDI - хранение и передача музыкальной информации. Это может быть управление электронными музыкальными инструментами в реальном времени, запись MIDI-потока, формируемого при игре исполнителя, на носитель данных с последующим редактированием и воспроизведением (так называемый MIDI-секвенсор), синхронизация различной аппаратуры (синтезаторы, ритм-машины, магнитофоны, блоки обработки звука, световое оборудование, дымогенераторы и т. п.).
Устройства, предназначенные для создания звука по MIDI-командам и не имеющие собственных исполнительских органов, называются тон-генераторами. Многие тон-генераторы оснащены панелью управления и индикации для установки основных режимов работы и наблюдения за ними, однако звук генерируется под управлением поступающих MIDI-команд.
Для формирования MIDI-сообщений служат другие устройства, не содержащие средств синтеза звука. Это так называемые MIDI-контроллеры - клавиатура, педаль, рукоятка с несколькими степенями свободы, ударная установка с датчиками способа и силы удара, а также струнный или духовой инструмент с датчиками и анализаторами способов воздействия и приемов игры. Тон-генератор с достаточными возможностями управления может весьма точно воспроизвести оттенки звучания инструмента по сформированному контроллером MIDI-потоку.
С целью хранения MIDI-партитур на носителях данных разработаны форматы SMF (Standard MIDI File - стандартный MIDI-файл) трех типов:
0 - непосредственно MIDI-поток в том виде, в каком он передается по интерфейсу;
1 - совокупность параллельных "дорожек", каждая из которых обычно представляет собой отдельную партию произведения, исполняемую в одном MIDI-канале;
2 - совокупность произведений, каждое из которых состоит из нескольких "дорожек".
В основном применяется формат 1, позволяющий хранить одно произведение в файле.
Вид MIDI-разъема со стороны соединения. Контакты 4 и 5 - сигнальные, контакт 2 - экранный. Полярность сигналов указывается относительно источника тока: контакт 4 - плюс, контакт 5 - минус. (Все обозначения приведены для разъемов Out и Thru, для разъема In назначение контактов обратное.)
Кроме MIDI-событий, файл содержит также "фиктивные события" (Meta Events), используемые только для его оформления и не передаваемые по интерфейсу, - информацию о метрике и темпе, описание произведения, названия партий, слова песни и т.п.
Спецификация MIDI состоит из аппаратной спецификации самого интерфейса и спецификации формата данных - описания системы передаваемых сообщений. Соответственно различают аппаратный интерфейс и формат MIDI-данных (MIDI-партитуру). Интерфейс используется для физического соединения источника и приемника сообщений, формат данных - для создания, хранения и передачи MIDI-сообщений. В настоящее время эти понятия стали совершенно самостоятельными: по интерфейсу могут передаваться данные любого формата, а MIDI-формат может применяться только для обработки партитур, без вывода на устройство синтеза.
Аппаратная спецификация
Аппаратный интерфейс - это последовательная "токовая петля" (активный передатчик, 5 мА, токовая посылка - 0, бестоковая - 1) со скоростью передачи данных 31250 +1% бит/с. Поддерживается протокол 8-N-1 (один стартовый бит, восемь битов данных, один бит стопа, без четности). Передатчики и приемники должны обеспечивать длительность фронтов менее 2 мкс. Обычно этот интерфейс имеет три соединительных разъема типа розетки DIN-5 (СГ-5): In (вход), Out (выход) и Thru (копия сигнала с In через буфер).
Здесь используется двужильный экранированный кабель длиной 15 м, практически нечувствительный к наводкам извне, поэтому экран необходим только для защиты от излучаемых помех. Соединение разъемов на концах кабеля - прямое (2-2, 4-4, 5-5).
Один MIDI-передатчик допускает подключение до четырех приемников, так что можно создавать сеть MIDI-устройств, выстраивая их по цепочке и в нескольких направлениях.
Спецификация формата данных
MIDI-данные представляют собой сообщения или события (events), являющиеся командами для музыкального инструмента. Стандарт предусматривает 16 независимых и равноправных логических каналов со своими собственными режимами работы. Изначально он разрабатывался для однотембровых инструментов, способных в каждый момент времени воспроизводить звук только одного тембра, - конкретному инструменту присваивался определенный номер канала, что и обеспечивало "многотембровость" исполнения. С появлением многотембровых (multi-timbral) инструментов ситуация изменилась: они стали поддерживать некоторое число каналов (современные инструменты поддерживают все 16 каналов и могут иметь два и более MIDI-интерфейсов), поэтому сейчас каждому каналу обычно назначается свой тембр, называемый по традиции "инструментом", хотя возможна и комбинация из нескольких тембров. Канал 10, как всегда, задействуется для ударных инструментов, т. е. различные ноты в нем соответствуют различным ударным звукам фиксированной высоты, а остальные каналы - для мелодических. Здесь ноты уже "привязываются" к высоте тона одного и того же инструмента.
Поскольку MIDI-сообщения образуют поток данных в режиме реального времени, их кодировка позволяет облегчить синхронизацию в случае потери соединения. Первый байт любого сообщения, называемый также байтом состояния (status byte), в старшем разряде содержит единицу, а все остальные - нуль, и называются они байтами данных (data bytes). Если после получения всех байтов данных последнего сообщения на вход приемника поступает байт, не содержащий единицы в старшем разряде, это трактуется как повторение информационной части сообщения (подразумевается тот же первый байт). Такой метод передачи, Running Status, широко применяется для уменьшения объема передаваемых данных: например, посылается один байт команды Controller Change с нужным номером канала, а затем серия байтов данных с номерами и значениями контроллеров для этого канала. Окончание в следующем номере.