Домой Цветы Что такое миди файл. Все о MIDI: чем различаются, как подключаются, какую выбрать? Контроллеры Bank Select

Что такое миди файл. Все о MIDI: чем различаются, как подключаются, какую выбрать? Контроллеры Bank Select

Я уверен, что многие из тех, кто пользуется компьютером в качестве музыкального инструмента, обладают миди-клавиатурами, либо миди-контроллерами. Это действительно удобно! Причем, даже если вы не выступаете вживую, то крутить ручки или, к примеру, сыграть партию «вживую» гораздо интересней и эффективней, чем писать ее в секвенсоре. Впрочем, эти устройства - дополнительная статья расходов, что не всегда по карману непрофессиональным музыкантам. Но, к счастью, разработчики софта улучшают и улучшают его. И на данный момент любой обладатель Android-устройства может превратить его в миди-контроллер. Как сделать это в конкретных программах и будет данная статья.

Что мы имеем на данный момент

Итак, я предполагаю, что Вы - счастливый обладатель андроид-устройства и, естественно, компьютера на базе windows. Рассматривать iMac и совместимые устройства я, к сожалению, не имею возможности, но уверен, там все происходит подобным образом. Примеры будут на основе Ableton , хотя можно использовать и другие секвенсоры с поддержкой миди. Теперь насчет андроид-устройства. В моем случае - это телефон Lenovo A750 с Android ICS 4. Опять же, на более ранних ОС я не имею возможности проверить, так что будем отталкиваться от такой конфигурации.

Программы я выбрал бесплатные, доступные на сервисе Google-Play. Ссылки будут указаны далее. Первая - это Touch OSC (https://play.google.com/store/apps/details?id=net.hexler.touchosc_a). Вторая - FingerPlay MIDI (https://play.google.com/store/apps/details?id=com.flat20.fingerplay&hl=ru). И если первая позволяет работать, в общем, без дополнительных программ (со своим драйвером), то вторая требует установки на компьютере своего сервера в виде отдельной программы. Но обо всем по-порядку.

Подготовка

Для начала нам нужно установить виртуальные миди-порты. Как это сделать, я описывал в . Кто не знает - читаем. Во-вторых, у нас должно быть настроено соединение wi-fi, со статическим ip-адресом. В windows 7 это можно проверить (сделать), зайдя в «Центр управления сетями и общим доступом-Беспроводное сетевое соединение-Свойства-Протокол интернета версии tcp/ipv4 » (рис. 1).

Рисунок 1. Установка статического IP-адреса на компьютере.

Как видим на рисунке, установлен статический адрес 192.168.1.57. Нам нужно будет запомнить этот адрес, он нам пригодится далее, в настройке программ на андроиде.

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

FingerPlay MIDI

Первая пограмма - FingerPlay MIDI. Кроме основной программы в памяти телефона, она требует установки сервера на компьютере, для создания собственного канала, через который будут передаваться миди-сообщения в виртуальный порт (Midi-Yoke) на компьютере. Для начала настроим ее в телефоне. Запускаем ее, нажимаем на значке настроек (кнопка с шестеренкой) и попадаем во вкладку Settings (рис. 2).


Рисунок 2. Настройки FingerPlay.

Во-первых, устанавливаем Server type - FingerServer. Во-вторых, в Server Address устанавливаем ip-адрес нашего компьютера. Теперь на компьютере разархивируем FingerPlayServer.zip и запускаем run.bat. Хочу обратить внимание, что для его работы необходимо наличие java. Итак, появляется окно, в котором мы видим статус подключения телефона и компьютера. Теперь на телефоне ставим галочку напротив Connect to server и если все правильно, то статус превратится в Connected to 192.168.1.57 (или адрес вашего компьютера). Окно сервера на компьютере тоже изменится, показывая, что устройство подключено (рис. 3).


Рисунок 3. Окно сервера FingerPlay.

Как видим, в статусе - Phone connected, что означает, что телефон подключен, а также отображается на какой выход приходят миди-сообщения (Midi-Yoke 1). Кроме того, в настройках на телефоне, мы можем выбрать другое виртуальное миди-устройство (рис. 4).


Рисунок 4. Выбор миди-устройства для вывода сообщений.

Вот, собственно и вся подготовка. Теперь можно покрутить любой регулятор и в окне сервера появятся сообщения о том, какой параметр изменяется. Теперь самое время перейти в Ableton.

В Ableton нам достаточно выбрать то, миди-устройство, которое указано в FingerPlay (в нашем примере, Midi-Yoke 1) (рис. 5).


Рисунок 5. Включаем Midi-Yoke 1 в Ableton.

Если все правильно, то теперь можно замапить разные контроллеры и кнопки. И касаясь экрана на телефоне, управлять параметрами в Ableton. Например, перейдем в раскладку (Layout) для микшера в FingerPlay (она занимает среднее положение на панели справа, см. рис.6).


Рисунок 6. Раскладка микшера в FingerPlay.

Теперь в Ableton нажимаем Ctrl+M, включается режим миди-маппинга. Нажимаем, к примеру, на регуляторе громкости первого канала в Ableton и касаемся первого регулятора на экране телефона. Если все правильно, в карте маппинга появится новая запись (рис. 7).


Рисунок 7. Новый параметр в карте миди-маппинга.

Нажимаем Ctrl+M для возвращения в обычный режим. И теперь если мы касаемся первого регулятора на экране, у нас изменяется громкость на первом канале в Ableton! (рис. 8).


Рисунок 8. Регулятор на экране телефона управляет регулятором в Ableton.

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

Touch OSC

Это приложение отличается от предыдущего мультиплатформенностью. Его клиент доступен не только для андроида, но и для iOs. А сервер, соответственно, может работать и на mac-совместимых компьютерах. Но я буду рассматривать связку android+windows 7, как и упоминал выше. Сервер для windows можно скачать на официальном сайте по этой ссылке: http://hexler.net/pub/touchosc/touchosc-bridge-1.0.1-win32.zip .

Устанавливаем его в телефон и на ПК, если все верно, то в системном трее на ПК появится иконка TouchOSC bridge (рис. 9).


Рисунок 9. Сервер TouchOSC Bridge установлен и запущен.

Обращаю внимание на то, что данная программа умеет работать не только по миди-протоколу, но и по протоколу OSC. Нас интересует в данном случае миди. Что касается соединения с компьютером - требования те же (см. выше). Теперь перейдем к настройкам TouchOSC на телефоне. При запуске программы сразу запускается окно настроек. Здесь мы кликаем на Midi Bridge (рис. 10) и вписываем ip-адрес нашего компьютера.


Рисунок 10. Настройки Touch OSC в телефоне.

Здесь есть одна сложность, с которой я очень долго промучился. Дело в том, что у меня телефон ни в какую не хотел показывать мой компьютер в списке Found Hosts. Там постоянно отображался 0. Несмотря на это, все заработало замечательно, так что не обращаем на это внимание и продолжаем. Переходим в Ableton.

В Ableton, как несложно догадаться, нам нужно выбрать миди-порт Touch OSC. На этот раз это собственный порт, который появляется в системе после установки сервера (рис. 11).


Рисунок 11. Настройки Touch OSC в Ableton.

Теперь можно пробовать мапить кнопки и регуляторы в Ableton, как указано выше. Аналогично можно использовать наш андроид-контроллер и в других секвенсорах.

Немного об интерфейсе и возможностях

Особых сложностей, как видим, не возникает. Лично для меня самой большой сложностью было законнектить компьютер с телефоном, и то, только в случае с TouchOSC. А что же они по сути нам предлагают в качестве контроллеров? Сразу скажу, что TouchOSC будет посильнее и в плане интерфейса, и в плане уже готовых раскладок.


Рисунок 12. Раскладка Keys в TouchOSC.

Здесь доступно 5 раскладок, в каждой из которых по 3 закладки. На рисунке 12, к примеру мы видим, что есть даже раскладка одной октавы пианино. Поддержка мультитача присутствует. Кроме того, в Touch OSC есть гораздо большее количество контроллеров - тут и клавиатура и всевозможные регуляторы, фейдеры, кроссфейдеры, X-Y-контроллеры. Finger Play, к сожалению, обладает всего несколькими типами контроллеров, клавиатуры нет. И раскладка у него всего лишь одна. Зато, в отличии от Touch OSC, здесь можно собственноручно, без проблем редактировать эти раскладки, создавать свои. Конечно, придется разобраться в синтаксисе, либо использовать онлайн-конструктор (https://dl.dropbox.com/u/1856630/fingerplay/index.html). Хотя он работает, мягко говоря, не очень хорошо. В Touch OSC загрузка раскладок доступна только для iPod, iPhone. Редактирование возможно и на windows. Хотя в сети есть способ как загрузить свою раскладку на андроид-устройство. Но метод довольно сложный.

Итог

Что ж, на данный момент обе программы со своими обязанностями вполне справляются. У каждой есть плюсы и минусы, но тем не менее, имея ноутбук, wi-fi и телефон на базе андроид можно успешно использовать телефон в качестве контроллера. Если же выбирать из этих программ, я все же отдаю предпочтение Touch OSC.

Что такое MIDI?

Musical Instrument Digital Interface - цифровой интерфейс музыкальных инструментов. Создан в 1982 году ведущими производителями электронных музыкальных инструментов - Yamaha, Roland, Korg, E-mu и др. Изначально был предназначен для замены принятого в то время управления музыкальными инструментами при помощи аналоговых сигналов управлением при помощи информационных сообщений, передаваемых по цифровому интерфейсу. Впоследствии стал стандартом де-факто в области электронных музыкальных инструментов и компьютерных модулей синтеза.

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

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

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

Интерфейс - старт-стопный последовательный "токовая петля" (активный передатчик, 5 мА, токовая посылка - 0, бестоковая - 1), скоростью передачи 31250 ±1% бит/с и протоколом 8-N-1 (один стартовый бит, 8 битов данных, один бит стопа, без четности). Передатчики и приемники должны обеспечивать длительность фронтов менее 2 мкс.

Каждый инструмент имеет три соединительных разъема: In (вход), Out (выход) и Thru (копия сигнала с In через буфер). Все разъемы - типа female DIN-5 (СГ-5), вид с наружной стороны (стороны соединения):

Контакты 4 и 5 - сигнальные, контакт 2 - экран. Полярность сигналов дается относительно источника тока: контакт 4 - плюс (ток вытекает из вывода), контакт 5 - минус (ток втекает в вывод). Таким образом, для разъемов Out и Thru назначение то же, для разъема In - обратное. Для соединения используется двужильный экранированный кабель длиной до 50 футов (около 15 м). Экран необходим только для защиты от излучаемых помех - кабель практически нечувствителен к наводкам извне. Соединение разъемов на двух концах кабеля - прямое (2-2, 4-4, 5-5).

Один MIDI-передатчик допускает подключение до четырех приемников.

Описанная схема позволяет создавать сеть MIDI-устройств, подключая их по цепочке и нескольким направлениям:

В этой схеме устройство 1 служит источником сообщений, которые получает устройство 2 и через его ретранслятор - устройство 3. Устройство 4 получает сообщения, посылаемые устройством 2 (они могут как включать, так и не включать получаемые самим устройством 2) и ретранслирует их на вход устройства 5.

Спецификация формата данных MIDI

MIDI-данные представляют собой сообщения, или события (events), каждое из которых является командой для музыкального инструмента. Стандарт предусматривает 16 независимых и равноправных логических каналов, внутри каждого из которых действуют свои режимы работы; изначально это было предназначено для однотембровых инструментов, способных в каждый момент времени воспроизводить звук только одного тембра - каждому инструменту присваивался свой номер канала, что давало возможность многотембрового исполнения. С появлением многотембровых (multi-timbral) инструментов они стали поддерживать несколько каналов (современные инструменты поддерживают все 16 каналов и могут иметь более одного MIDI-интерфейса), поэтому сейчас каждому каналу обычно назначается свой тембр, называемый по традиции инструментом, хотя возможна комбинация нескольких тембров в одном канале. Канал 10 по традиции используется для ударных инструментов - различные ноты в нем соответствуют различным ударным звукам фиксированной высоты; остальные каналы используются для мелодических инструментов, когда различные ноты, как обычно, соответствуют различной высоте тона одного и того же инструмента.

Поскольку MIDI-сообщения представляют собой поток данных в реальном времени, их кодировка разработана для облегчения синхронизации в случае потери соединения. Для этого первый байт каждого сообщения, называемый также байтом состояния (status byte), содержит "1" в старшем разряде, а все остальные байты содержат в нем "0" и называются байтами данных (data bytes). Если после получения всех байтов данных последнего сообщения на вход приемника поступает байт, не содержащий "1" в старшем разряде - это трактуется как повторение информационной части сообщения (подразумевается такой же первый байт). Такой метод передачи носит название "Running Status" и широко используется для уменьшения объема передаваемых данных - например, передается один байт команды "Controller Change" с нужным номером канала, а затем - серия байтов данных с номерами и значениями контроллеров для этого канала.

MIDI- сообщения делятся на канальные - относящиеся к конкретному каналу, и системные - относящиеся к системе в целом. Кодировка MIDI-сообщений (шестнадцатеричная, n в первом байте обозначает номер канала):

Канальные сообщения:

  • 8n nn vv - Note Off (выключение ноты)
  • 9n nn vv - Note On (включение ноты)
  • An nn pp - Key Pressure (Polyphonic Aftertouch, давление на клавишу)
  • Bn cc vv - Control Change (смена значения контроллера)
  • Cn pp - Program Change (смена программы (тембра, инструмента))
  • Dn pp - Channel Pressure (Channel Aftertouch, давление в канале)
  • En ll mm - Pitch Bend Change (смена значения Pitch Bend)

Системные сообщения:

  • F0 - System Exclusive (SysEx, системное исключительное сообщение)
  • F1 - резерв
  • F2 ll mm - Song Position Pointer (указатель позиции в партитуре)
  • F3 ss - Song Select (выбор партитуры)
  • F4 - резерв
  • F5 - резерв
  • F6 - Tune Request (запрос подстройки)
  • F7 - EOX (End Of SysEx, конец системного исключительного сообщения)
  • F8 - Timing Clock (синхронизация по времени)
  • F9 - резерв
  • FA - Start (запуск игры по партитуре)
  • FB - Continue (продолжение игры по партитуре)
  • FC - Stop (остановка игры по партитуре)
  • FD - резерв
  • FE - Active Sensing (проверка соединений MIDI-сети)
  • FF - System Reset (сброс всех устройств сети)

На основе MIDI позднее был разработан стандарт GM (General MIDI - единый MIDI), устанавливающий условия обязательной совместимости инструментов и интерпретации номеров программ и контроллеров, а затем и другие стандарты (GS, XG), расширяющие GM. Однако общность инструментов внутри каждого стандарта подразумевает только основные звуковые характеристики. "Одинаковые" тембры на различных инструментах почти всегда имеют различную окраску, динамику, яркость, громкость по умолчанию и другие особенности, а "синтетические" тембры могут совершенно отличаться друг от друга. Кроме этого, у разных инструментов различается зависимость характера звука от силы удара по клавише, динамика работы MIDI-контроллеров, положения контроллеров по умолчанию и прочие "тонкие" параметры. Поэтому MIDI-партитура, подготовленная для конкретного инструмента, на других инструментах (даже внутри стандарта) часто звучит совершенно по-другому, и это необходимо учитывать при переносе партитур с между инструментами различных моделей.

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

Описание работы контроллеров

Контроллеры Bank Select

Многие устройства могут работать с большим количеством встроенных и дополнительных тембров (инструментов) и звуковых эффектов, которые для удобства объединены в банки. В каждый момент времени в одном канале может использоваться только один банк; для переключения банков служат контроллеры:

  • 0 - Bank Select MSB (выбор банка, старший байт)
  • 32 - Bank Select LSB (выбор банка, младший байт)

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

По умолчанию устанавливается нулевой банк. После смены банка обязательна посылка сообщения Program Change для выбора тембра (инструмента).

Обработка устройством команды смены банка и инструмента может занять значительное время (десятки миллисекунд и более). Некоторые устройства при получении команд смены банков и инструментов гасят звучащие ноты в канале.

Контроллер Modulation

Задает глубину частотной модуляции в канале. Управление абсолютное. Значение 0 отключает модуляцию, значение 127 устанавливает максимальную глубину. Стандартное значение - 0. Действует на последующие и уже звучащие ноты.

Контроллер Portamento Time

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

Контроллер Main Volume

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

Контроллер Pan

Задает соотношение уровня стереоканалов (точку стереопанорамы) для канала. Управление абсолютное. Значение 0 - крайняя левая позиция, 64 - средняя, 127 - крайняя правая. Стандартное значение - 64. Действует на последующие и уже звучащие ноты.

Контроллер Expression

Задает степень выразительности звука. Управление абсолютное. На простых инструментах дублирует контроллер Main Volume и действует и на последующие, и на уже звучащие ноты. На инструментах с развитым синтезом управляет более тонкими параметрами выразительности, и действует только на последующие ноты. Стандартное значение - обычно 127.

Контроллер Harmonic Content

Задает добротность (глубину резонанса) фильтра канала, позволяющего подчеркнуть высокочастотные гармоники тембра. Увеличение добротности увеличивает крутизну характеристики фильтра в области среза, усиливая частоты, лежащие непосредственно ниже частоты среза. Управление относительное (0..64..127). Стандартное значение - 64.

Контроллер Release Time

Задает время концевого затухания звучания нот с момента отработки Note Off (явного или автоматического) до полного исчезновения звука. Управление относительное (0..64..127). Стандартное значение - 64.

Контроллер Attack Time

Задает время начальной атаки - нарастания громкости звучания нот с момента отработки Note On до максимального значения громкости. Управление относительное (0..64..127). Стандартное значение - 64.

Контроллер Brightness

Задает частоту среза фильтра канала, управляющую ослаблением высоких частот звука. Управление относительное (0..64..127). Стандартное значение - 64.

Контроллер Portamento Control

Задает номер ноты, от которой выполняется плавная перестройка частоты в режиме Portamento, и позволяет установить исходную высоту, отличную от определяемой последним сообщением Note On.

Контроллер Reverb Level

Задает глубину выбранного эффекта типа реверберации (основанного на постоянной задержке сигнала) - Room, Hall, Delay, Echo и т.п. Управление - абсолютное или относительное в зависимости от инструмента.

Контроллер Chorus Level

Задает глубину эффекта типа хорового (основанного на переменной задержке сигнала) - Chorus, Flanger, Phaser и т.п. Управление - абсолютное или относительное в зависимости от инструмента.

Контроллер Variation Level

Задает глубину эффекта, выбранного в качестве Variation. Управление - абсолютное или относительное в зависимости от инструмента.

Контроллер-переключатель Sustain

Во включенном состоянии вызывает удержание звучания для всех клавиш, отпущенных во время действия контроллера - по аналогии с правой педалью фортепиано. Иными словами, в режиме Sustain канал задерживает отработку последнего поступившего для каждой ноты сообщения Note Off. В момент отключения одновременно отрабатываются все задержанные таким образом Note Off; на явно удерживаемые в этот момент клавиши (для которых последним поступившим сообщением является Note On) отключение режима не влияет.

Контроллер-переключатель Sostenuto

Действует подобно Sustain, но удерживает звучание только тех нот, которые были нажаты на момент включения контроллера. Последующие нажатия и отпускания отрабатываются в обычном порядке. Иначе говоря, откладывается отработка Note Off только для тех нот, Note On для которых поступили до включения режима.

Контроллер-переключатель Soft

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

Контроллер-переключатель Portamento

При выключенном режиме каждая нажатая нота начинает звучать на частоте, определяемой высотой ноты и установленными на данный момент значениями контроллеров управления высотой (Pitch Bend Change и Coarse/Fine Tune и т.п.). При включенном режиме очередная нота начинает звучать на частоте, определяемой последним сообщением Note On или контроллером Portamento Control, затем ее высота плавно изменяется до нужной со скоростью, определяемой контроллером Portamento Time. Вне зависимости от того, было ли скольжение выполнено до конца или прервано по отпусканию ноты, последнее сообщение Note On всегда фиксируется в качестве исходной высоты для последующих нот. Это означает, что если, например, после ноты C2 была нажата нота C7, а затем - нота C4, то высота второй ноты будет плавно повышаться от C2 до C7, а высота третьей в то же время - понижаться от C7 до 50, и в качестве исходной для последующих нот будет принята нота 50. В момент нажатия C7 эта нота зазвучит в унисон с C2 и начнет скользить в сторону C7, а в момент нажатия ноты C4 та зазвучит с высотой C7 и начнет скользить к C4. Все скольжения выполняются независимо.

Контроллеры RPN, NRPN и Data Entry

Дополнительно для расширенного управления синтезом введены зарегистрированные (Registered Parameter Number - RPN) и незарегистрированные (Non-Registered Parameter Number - NRPN) номера параметров, передаваемые при помощи контроллеров:

  • 98 - NRPN LSB (младший байт NRPN)
  • 99 - NRPN MSB (старший байт NRPN)
  • 100 - RPN LSB (младший байт RPN)
  • 101 - RPN MSB (старший байт RPN)

Устройство запоминает однажды переданные ему RPN или NRPN, после которых могут передаваться значения выбранного параметра при помощи контроллеров:

  • 6 - Data Entry MSB (ввод данных, старший байт)
  • 38 - Data Entry LSB (ввод данных, младший байт)
  • 96 - RPN Increment (увеличение RPN на 1, значение игнорируется)
  • 97 - RPN Decrement (уменьшение RPN на 1, значение игнорируется)

Таким образом, механизм представляет собой "контроллер в контроллере". Стандартом General MIDI определена интерпретация только трех RPN, значения которых задаются старшими байтами параметров Data Entry:

  • RPN 0 - Pitch Bend Sensitivity (чувствительность Pitch Bend)
  • RPN 1 - Fine Tuning (точная подстройка)
  • RPN 2 - Coarse Tuning (грубая подстройка)

Чувствительность Pitch Bend определяет количество полутонов, на которое смещается высота тона при получении сообщения Pitch Bend Change с предельным верхним или нижним значением параметра. По умолчанию принимается диапазон в два полутона в любую сторону.

RPN подстройки позволяют сместить строй инструмента в канале на заданное количество полутонов при грубой, или центов (сотых долей полутона) - при точной подстройке. За относительный нуль принимается значение 64.

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

  • RPN 3 - Tuning Program Select
  • RPN 4 - Tuning Bank Select

Стандартом GS введен набор NRPN для управления генераторами огибающих и резонансными фильтрами (номера NRPN даны в виде значений старшего и младшего байтов):

  • NRPN 1/8 - Vibrato Rate (частота вибрато)
  • NRPN 1/9 - Vibrato Depth (глубина вибрато)
  • NRPN 1/10 - Vibrato Delay (задержка до включения вибрато)
  • NRPN 1/32 - Filter Cutoff Frequency (частота среза фильтра)
  • NRPN 1/33 - Filter Resonance (глубина резонанса фильтра)
  • NRPN 1/99 - Attack Time (длительность атаки)
  • NRPN 1/100 - Decay Time (длительность первичного спада)
  • NRPN 1/102 - Release Time (длительность концевого затухания)

а также - для раздельной настройки параметров ударных инструментов (nn - номер ноты инструмента):

  • NRPN 24/nn - Drum Pitch Coarse Tune (грубая подстройка высоты)
  • NRPN 26/nn - Drum TVA Level (уровень громкости)
  • NRPN 28/nn - Drum Pan (панорамная позиция)
  • NRPN 29/nn - Drum Reverb Send Level (глубина эффекта reverb)
  • NRPN 30/nn - Drum Chorus Send Level (глубина эффекта chorus)
  • NRPN 31/nn - Drum Delay Send Level (глубина эффекта delay)

Значения параметров задаются старшими байтами Data Entry.

Стандартом XG введены дополнительные NRPN для ударных:

  • NRPN 20/nn - Drum Filter Cutoff (частота среза фильтра)
  • NRPN 21/nn - Drum Filter Resonance (глубина резонанса фильтра)
  • NRPN 22/nn - Drum Attack Time (длительность атаки)
  • NRPN 23/nn - Drum Decay Time (длительность первичного спада)
  • NRPN 25/nn - Drum Pitch Fine Tune (точная подстройка высоты)

Специальные канальные сообщения

Задаются контроллерами 120..127 и управляют обработкой сообщений в каналах:

  • 120 - All Sounds Off
  • 121 - Reset All Controllers
  • 122 vv - Local Control
  • 123 - All Notes Off
  • 124 - Omni Off
  • 125 - Omni On
  • 126 nn - Mono
  • 127 - Poly

Обязательными к реализации в General MIDI определены только контроллеры 121 и 123; реализация остальных перечисленных контроллеров определяется производителем. Кроме этого, многие устройства требуют, чтобы неиспользуемые значения контроллеров были нулевыми.

Сообщение All Notes Off имитирует выключение всех включенных нот и полностью эквивалентно посылке сообщения Note Off для каждой звучащей ноты; будет ли при этом прекращено звучание ноты - зависит от состояния режимов Sustain и Sostenuto. Сообщение All Sounds Off действует так же, но не зависит от режимов Sustain/Sostenuto; кроме того, оно немедленно прекращает звучание всех нот, находящихся в стадии концевого затухания (Release). Состояние самих режимов Sustain/Sostenuto эти сообщения не затрагивают.

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

Сообщение Local Control служит для запрета/разрешения управления устройством с локальной панели. Нулевое значение параметра запрещает управление с панели (устройство управляется только по MIDI), значение 127 разрешает его.

Сообщения Omni On/Off служат для включения/выключения режима Omni - реакции устройства на канальные сообщения. При включенном режиме Omni устройство обрабатывает сообщения для всех каналов, при отключенном - только сообщения для выбранного канала (Basic Channel). Это позволяет разделить устройства между каналами. Канал назначается устройству либо с его панели управления, либо при помощи сообщений SysEx. Режим Omni имеет смысл в основном для старых инструментов, имеющих один MIDI-канал и не поддерживающих разделение тембров.

Сообщения Mono/Poly служат для переключения одноголосного и многоголосного (полифонического) режимов. В одноголосном режиме в каждый момент времени может звучать только одна нота; включение новой ноты приводит к принудительному отключению предыдущей. В полифоническом режиме включение каждой новой ноты запускает очередной свободный генератор, а при исчерпании генераторов новые ноты либо игнорируются, либо приводят к принудительному выключению наиболее "старых" нот.

Значение nn в сообщении Mono воспринимается некоторыми устройствами, как количество MIDI-каналов, по которым, начиная с Basic Channel, распределяются ноты в одноголосном режиме при выключенном режиме Omni. Смысл этой группы каналов различен для передающих и принимающих устройств. Передающее устройство направляет первую ноту в Basic Channel, следующую за ней - в Basic Channel + 1, и так далее, затем очередная нота снова направляется в Basic Channel, и цикл повторяется. Приемное устройство воспринимает канальные сообщения только внутри заданной группы каналов, каждый из которых работает в одноголосном режиме. Такой прием позволяет реализовать многоголосное исполнение на синтезаторах, имеющих жесткую привязку голосов (генераторов) к MIDI-каналам.

Контроллеры Omni, Mono и Poly вызывают также отработку контроллера All Sounds Off.

От различных сочетаний режимов Omni, Poly и Mono происходят четыре основных режиме работы (mode) MIDI-устройств:

  • 1 - Omni On, Poly
  • 2 - Omni On, Mono
  • 3 - Omni Off, Poly
  • 4 - Omni Off, Mono

Большинство современных устройств работает в mode 3 - полифонический режим с независимой работой каналов.

Program Change (pp - номер тембра или инструмента)

Служит для смены инструмента в канале. Параметр задает номер инструмента (0–127) в текущем выбранном банке. Стандартом General MIDI определены 128 основных мелодических и 47 ударных инструментов, собранных в нулевом банке; устройства с расширенным набором инструментов имеют дополнительные банки, а также могут иметь частично измененный основной набор.

Стандартные мелодические инструменты General MIDI разделены на 16 групп по 8 инструментов в каждой группе:

Piano Chrom Percussion
0 Acoustic Grand Piano 8 Celesta
1 Bright Acoustic Piano 9 Glockenspiel
2 Electric Grand Piano 10 Music Box
3 Honky-tonk Piano 11 Vibraphone
4 Electric Piano 1 12 Marimba
5 Electric Piano 2 13 Xylophone
6 Harpsichord 14 Tubular Bells
7 Clavinet 15 Dulcimer
Organ Guitar
16 Drawbar Organ 24 Acoustic Guitar (nylon)
17 Percussive Organ 25 Acoustic Guitar (steel)
18 Rock Organ 26 Electric Guitar (jazz)
19 Church Organ 27 Electric Guitar (clean)
20 Reed Organ 28 Electric Guitar (muted)
21 Accordion 29 Overdriven Guitar
22 Harmonica 30 Distortion Guitar
23 Tango Accordion 31 Guitar Harmonics
Bass Strings
32 Acoustic Bass 40 Violin
33 Electric Bass (finger) 41 Viola
34 Electric Bass (pick) 42 Cello
35 Fretless Bass 43 Contrabass
36 Slap Bass 1 44 Tremolo Strings
37 Slap Bass 2 45 Pizzicato Strings
38 Synth Bass 1 46 Orchestral Harp
39 Synth Bass 2 47 Timpani
Ensemble Brass
48 String Ensemble 1 56 Trumpet
49 String Ensemble 2 57 Trombone
50 Synth Strings 1 58 Tuba
51 Synth Strings 2 59 Muted Trumpet
52 Choir Aahs 60 French Horn
53 Voice Oohs 61 Brass Section
54 Synth Voice 62 Synth Brass 1
55 Orchestra Hit 63 Synth Brass 2
Reed Pipe
64 Soprano Sax 72 Piccolo
65 Alto Sax 73 Flute
66 Tenor Sax 74 Recorder
67 Baritone Sax 75 Pan Flute
68 Oboe 76 Bottle Blow
69 English Horn 77 Shakuhachi
70 Bassoon 78 Whistle
71 Clarinet 79 Ocarina
Synth Lead Synth Pad
80 Lead 1 (square) 88 Pad 1 (new age)
81 Lead 2 (sawtooth) 89 Pad 2 (warm)
82 Lead 3 (calliope) 90 Pad 3 (polysynth)
83 Lead 4 (chiff) 91 Pad 4 (choir)
84 Lead 5 (charang) 92 Pad 5 (bowed)
85 Lead 6 (voice) 93 Pad 6 (metallic)
86 Lead 7 (fifths) 94 Pad 7 (halo)
87 Lead 8 (bass + lead) 95 Pad 8 (sweep)
Synth Effects Ethnic
96 FX 1 (rain) 104 Sitar
97 FX 2 (soundtrack) 105 Banjo
98 FX 3 (crystal) 106 Shamisen
99 FX 4 (atmosphere) 107 Koto
100 FX 5 (brightness) 108 Kalimba
101 FX 6 (goblins) 109 Bagpipe
102 FX 7 (echoes) 110 Fiddle
103 FX 8 (sci-fi) 111 Shanai
Percussive Sound Effects
112 Tinkle Bell 120 Guitar Fret Noise
113 Agogo 121 Breath Noise
114 Steel Drums 122 Seashore
115 Woodblock 123 Bird Tweet
116 Taiko Drum 124 Telephone Ring
117 Melodic Tom 125 Helicopter
118 Synth Drum 126 Applause
119 Reverse Cymbal 127 Gunshot

Стандартные ударные инструменты General MIDI доступны в канале 10:

35 Acoustic Bass Drum 59 Ride Cymbal 2
36 Bass Drum 1 60 High Bongo
37 Side Kick 61 Low Bongo
38 Acoustic Snare 62 Mute High Conga
39 Hand Clap 63 Open High Conga
40 Electric Snare 64 Low Conga
41 Low Floor Tom 65 High Timbale
42 Closed High-Hat 66 Low Timbale
43 High Floor Tom 67 High Agogo
44 Pedal High Hat 68 Low Agogo
45 Low Tom 69 Cabasa
46 Open High Hat 70 Maracas
47 Low-Mid Tom 71 Short Whistle
48 High-Mid Tom 72 Long Whistle
49 Crash Cymbal 1 73 Short Guiro
50 High Tom 74 Long Guiro
51 Ride Cymbal 1 75 Claves
52 Chinese Cymbal 76 High Wood Block
53 Ride Bell 77 Low Wood Block
54 Tambourine 78 Mute Cuica
55 Splash Cymbal 79 Open Cuica
56 Cowbell 80 Mute Triangle
57 Crash Cymbal 2 81 Open Triangle
58 Vibraslap

Pitch Bend Change (ll - младший, mm - старший байт значения)

Задает смещение высоты тона для всех нот в канале - как звучащих, так и последующих. Значение, образованное двумя 7-разрядными величинами, изменяется в диапазоне 0–16383; среднее значение - 8192 - принимается за относительный нуль, что дает условный диапазон изменения -8192–8191. Чувствительность Pitch Bend может изменяться при помощи RPN 0; по умолчанию принимается предельное смещение на два полутона в любую сторону.

Системные сообщения

System Exclusive (SysEx)

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

Шестнадцатеричные идентификаторы наиболее известных производителей:

Sequential Circuits 01
Big Briar 02
Octave / Plateau 03
Moog 04
Passport Designs 05
Lexicon 06
PAIA 11
Simmons 12
Gentle Electric 13
Fairlight 14
Bon Tempi 20
S.I.E.L. 21
SyntheAxe 23
Kawai 40
Roland 41
Korg 42
Yamaha 43

SysEx "General MIDI On" (переключение в режим GM для устройств, поддерживающих дополнительные стандарты): F0 7E 7F 09 01 F7.

SysEx "General Synth On" (переключение в режим Roland GS для устройств, поддерживающих этот стандарт): F0 41 10 42 12 40 00 7F 00 41 F7.

SysEx "XG System On" (переключение в режим Yamaha XG для устройств, поддерживающих этот стандарт): F0 43 1n 4C 00 00 7E 00 F7, где n - номер устройства в сети (устанавливается по-разному для разных устройств, по умолчанию 0).

Ряд устройств требует, чтобы включение режимов GS и XG выполнялось из режима GM. Переключение между режимами обычно занимает несколько десятков миллисекунд и вызывает также полный сброс MIDI-системы устройства.

Tune Request

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

Song Position Pointer (ll - младший, mm - старший байт)

Служит для установки позиции в партитуре для устройств, имеющих встроенный секвенсор, автоаккомпанемент или ритм-блок. Задается номером четвертной (quarter) ноты с начала партитуры.

Song Select (ss - условный номер партитуры)

Определяет, какая из существующих партитур будет проигрываться при получении сообщения Start.

Start

Запускает прогрывание или запись выбранной партитуры с начала.

Stop

Останавливает проигрывание или запись партитуры.

Continue

Запускает проигрывание или запись партитуры с прерванного места, либо с позиции, установленной с помощью Song Position Pointer.

Timing Clock

Служит для синхронизации устройств и передается с частотой 6 сообщений на четвертную ноту. Генерация этого сообщения не является обязательной для передающего устройства.

Active Sensing

Используется для проверки наличия связи внутри MIDI-сети. Генерация сообщения не является обязательной для передающих устройств. В случае получения этого сообщения каждое приемное устройство переходит в режим слежения за MIDI-потоком, и в случае отсутствия любых сообщений в течение 300 мс автоматически отрабатывает контроллеры All Notes Off, All Sounds Off и Reset All Controllers. Это позволяет прекратить работу в случае нарушения связи в сети. Однако до первого прохождения этого сообщения по сети устройства не следят за длительностью пауз между сообщениями.

Применения MIDI

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

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

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

Для хранения MIDI-партитур на носителях данных разработаны форматы SMF (Standard MIDI File - стандартный MIDI-файл) трех типов:

  • 0 - непосредственно MIDI-поток в том виде, в каком он передается по интерфейсу.
  • 1 - совокупность параллельных "дорожек", каждая из которых обыч- но представляет собой отдельную партию произведения, исполняемую на одном MIDI-канале.
  • 2 - совокупность нескольких произведений, каждое из которых сос- тоит из нескольких дорожек.

В основном применяется формат 1, позволяющий хранить одно произведение в файле.

Кроме MIDI-событий, файл содержит также "фиктивные события" (Meta Events), используемые только для оформления файла и не передаваемые по интерфейсу - информация о метрике и темпе, описание произведения, названия партий, слова песни и т.п.

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

Почти с самого своего рождения протокол MIDI (Musical Instrument Digital Interface - цифровой интерфейс музыкальных инструментов) стал стандартом для всей электромузыкальной промышленности с невиданной до того степенью совместимости. Такой совместимости до сих пор нет даже у электрических лампочек, сетевых и телефонных розеток. Ситуация сейчас такова, что если выпускается электромузыкальное устройство, несовместимое с MIDI, оно обречено быть оторванным от остального мира.

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

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

Протокол MIDI разрабатывался как простое, недорогое и надежное средство для управления одним синтезатором с другого.

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

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

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

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

Синтезаторы в то время были полностью аналоговые, все внутренние их блоки (звуковые генераторы, генераторы огибающей, фильтры) управлялись напряжением. Например, звуковой генератор инструмента при подаче напряжения в 1 В мог давать высоту тона 100 Гц, 2 В - 200 Гц, 3 В - 400 Гц и так далее. Очевидно, что для внешнего управления таким прибором мог использоваться только аналоговый интерфейс. Он имел название CV/Gate. На вход CV подавалось управляющее напряжение (Control Voltage), пропорциональное высоте ноты, на вход Gate - импульс (trigger), от которого стартовала и выключалась нота.

Существовало несколько вариантов CV/Gate-интерфейса. Наиболее широко использовался вариант, предложенный фирмой Roland. В нем CV-напряжение увеличивалось на 1 В при увеличении высоты тона на октаву. Gate-сигнал, называемый Voltage Trigger (V-Trigger), представлял собой положительный импульс с шириной, равной времени удержания ноты в нажатом состоянии. Этот вариант наряду с Roland использовали в своих инструментах фирмы Sequential Circuits и ARP. В синтезаторах Moog использовался другой тип Gate-сигнала, который назывался S-Trigger. Существовали инструменты и с другими параметрами CV/Gate-сигналов. Часто управляющее напряжение изменялось по закону 1,2 В на октаву.

Применялся также сигнал под названием Trigger, представлявший собой короткий импульс. Многие синтезаторы с арпеджиатором имели специальный вход для таких сигналов (clock input). Как только на вход поступал импульс, запускалась очередная нота арпеджио. Генерировали сигнал Trigger многие драм-машины и аналоговые секвенсоры (чаще всего каждую 8-ю или 16-ю ноты, но иногда расстояние между импульсами можно было задавать произвольно). Сигнал Trigger мог быть подан и на вход Gate синтезатора.

Главный недостаток CV/Gate-интерфейса состоял в том, что с помощью него в каждый момент времени можно было управлять извлечением только одной ноты. Для полифонических инструментов необходимо было столько CV/Gate-интерфейсов, сколько голосов полифонии имел инструмент. Кроме того, информация о действиях исполнителя в CV/Gate-системах весьма скудная, практически - это только высота взятой ноты и сам факт ее взятия/снятия.

В середине 70-х компания Oberheim выпустила первый доступный по цене полифонический синтезатор Two Voice. Инструмент был прост в использовании, имел встроенную клавиатуру, полифонию в два голоса и несложный набор органов управления, с помощью которых можно было быстро создавать красивые, богатые звуки. Инструмент имел, в отличие от своих предшественников, небольшие размеры и простой способ программирования. Вскоре после этого начали появляться полифонические инструменты других фирм: Sequential Circuits, Yamaha, Moog, Roland, ARP. Они стали очень популярны в растущей массе электронных музыкантов.

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

До появления памяти каждый инструмент нужно было программировать заранее, а во время концерта он мог производить только один звук. Поэтому на концертах таких музыкантов, как Keith Emerson и Rick Wakeman, можно было увидеть огромные "стеллажи" из клавиатур. Для подготовки всего этого добра к концерту и объединения в рабочий ансамбль требовались часы работы. Когда память стала доступна, один инструмент мог быть запрограммирован на несколько звуков, а нужный звук выбирался нажатием одной кнопки прямо во время концерта.

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

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

Все эти приемы служили одной цели - выжать максимум из новых инструментов. Наслоение звуков различных синтезаторов стало одним из исполнительских приемов, визитной карточкой многих музыкантов того времени.

В конце 70-х годов в синтезаторах начала широко применяться цифровая электроника, что было вызвано удешевлением микропроцессоров и массовым производством интегральных схем. Многие блоки синтезаторов было выгоднее производить из компактных, дешевых и более стабильных во времени цифровых компонентов. Естественно, вопрос об управлении инструментами возник с новой силой: аналоговые CV/Gate интерфейсы совсем уже не подходили под новые цифровые технологии формирования звука. В результате, в начале 80-х синтезаторы стали оснащаться цифровым интерфейсом.

Появились такие инструменты, как Oberheim OB-X (1981) и Rhodes Chroma (1982), которые могли быть подсоединены к другому инструменту той же модели и фирмы. Например, Oberheim OB-X можно было подключить к другому Oberheim OB-X (всего до трех инструментов одновременно). Когда музыкант играл на клавиатуре одного из них, оба инструмента звучали одновременно. Это был огромный прогресс - ведь для получения многослойных звуков можно было играть на одной клавиатуре. Однако главная проблема по-прежнему не была решена: как соединить друг с другом инструменты разных производителей и разных моделей.

Herbie Hancock, например, пытался решить этот вопрос собственными силами. Он дорабатывал свои синтезаторы цифровыми интерфейсами, выполненными на заказ. И они работали!

В то же время все больше и больше музыкантов обращалось к производителям синтезаторов с просьбой сделать для них собственный цифровой интерфейс. Масло в огонь подлило и появление первых цифровых секвенсоров, таких как Roland MC 4 Micro Composer и Oberheim DSX. Если бы инструменты разных производителей были совместимыми, музыкант мог бы "забить" партии в эти секвенсоры, а потом воспроизвести, используя целую группу синтезаторов. Но, увы...

Незадолго до появления MIDI фирма Roland разработала цифровой интерфейс DCB, который использовался только в двух синтезаторах (Juno 60 и Jupiter 8) и секвенсоре MSQ 700. Интерфейс DCB обеспечивал базовые возможности по извлечению звуков посредством команд взятия и снятия ноты.

Нужно отметить, что наряду с попытками соединения синтезаторов друг с другом, еще в 60-х годах предпринимались попытки подключения синтезатора к компьютеру. Но они не приводили к заметным практическим результатам из-за колоссальной стоимости компьютеров. В конце 70-х - начале 80-х существовало несколько несовместимых между собой интерфейсов, производимых кустарно или мелкими фирмами. Только разработчик такой компьютерной системы мог написать программное обеспечение для нее. Обычно подобные системы создавались путем добавления в компьютер специальных плат, которые либо напрямую генерировали звук (сравните с современными виртуальными синтезаторами!), либо генерировали несколько каналов управляющего напряжения для модульных синтезаторов.

Рождение MIDI
Итак, к началу 80-х годов прошлого века потребность создания универсального интерфейса была осознана многими ведущими производителями. Задача стояла такая: разработать стандарт передачи действий исполнителя в цифровой форме между всеми типами электромузыкальных инструментов. Первый обмен мнениями на эту тему, в котором участвовали Ikutaro Kakehashi (президент Roland), Tom Oberheim (Oberheim) и Dave Smith (президент Sequential Circuits), произошел в июне 1981 года на выставке NAMM.

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

К осени 1981 года Smith подготовил первую версию своего протокола под названием USI (Universal Synthesizer Interface). В октябре того же года на выставке в Японии произошла встреча представителей фирм Sequential, Roland, Korg, Yamaha и Kawai, на которой USI была представлена японцам, а в ноябре на конгрессе AES в Нью-Йорке Dave Smith официально представил спецификацию. Японские производители работали в то время над собственным стандартом, который был сложнее USI.

В январе 1982 года на выставке NAMM фирма Sequential Circuits организовала встречу, которую посетили большинство производителей синтезаторов. На встрече выяснилось, что остальные американские компании по разным причинам не хотят участвовать в создании единого интерфейса. После встречи, Sequential Circuits и японские фирмы (Roland, Korg, Yamaha, Kawai) решили продолжать совместную работу независимо от остальных. Пять месяцев спустя, на июньской выставке NAMM были представлены плоды этой международной разработки. Пришло время для официального названия интерфейса. USI было отвергнуто, поскольку слово "universal" (универсальный, всеобщий) могло вызвать юридические проблемы. Японцы предложили UMII (Universal Music Instrument Interface). Но поскольку это название также содержало слово "universal", Dave Smith предложил исправить его на MIDI, с чем все и согласились.

В октябре 1982 года была закончена предварительная спецификация MIDI. В декабре вышел Sequential Circuits Prophet 600 - первый синтезатор, оборудованный MIDI-интерфейсом. А в январе 1983 года на выставке NAMM произошло соединение Prophet 600 и Roland Jupiter 6 по MIDI. В марте появился Roland JX 3 P, а в июне - Yamaha DX 7.

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

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

Хотя фирмы совместно работали над MIDI, на рынке они по-прежнему являлись конкурентами. Поэтому некоторые фирмы добавляли собственные спецификации к MIDI, в отдельных случаях неверно интерпретируя существующие параметры (как по недоразумению, так и умышленно), в то время как все не связанные с MIDI компании критиковали этот интерфейс. В то же время фирмы, связанные с MIDI, не могли раскрыть конкурентам все тайны. Например, Sequential Circuits планировали выпуск мультитембрального инструмента (Six-Trak) и предлагали внести необходимые для этого возможности в спецификации, но меньше всего хотели, чтобы об их планах узнали японские производители.

Тем не менее, было необходимо скоординировать работы по MIDI инструментам, и в середине 1983 года в Японии был сформирован комитет по MIDI-стандартам (JMSC). В августе того же года была обнародована спецификация MIDI 1.0. Также в 1983 году была сформирована международная группа пользователей MIDI (IMUG - International MIDI Users Group), которая впоследствии превратилась в IMA - международную MIDI-ассоциацию. Однако она представляла пользователей, а не производителей, и не могла оказывать на них серьезное влияние. Поэтому в июне 1984 года была сформирована ассоциация MIDI-производителей (MMA - MIDI Manufacturers Association).

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

1983 - 2003
Протокол MIDI открыл огромные возможности компьютерного синтеза и управления звуком. Компьютеры начали использоваться в качестве средства управления синтезаторами (в качестве секвенсора или программы-композитора, производящей управляющие воздействия на основе специальных алгоритмов).

В 1984 году Jim Miller выпустил программу Personal Composer для IBM PC, которая представляла собой MIDI-секвенсор и позволяла распечатывать ноты. Фирмы Passport Designs и Sequential Circuits представили четырех- и восьмидорожечные программы-секвенсоры для компьютеров Apple II и Commodore 64. Фирма Roland выпустила гитарный MIDI-контроллер GR 700, а также синхронизатор и SMPTE-интерфейс SBX 80, который произвел революцию в деле синхронизации драм-машин и секвенсоров с аналоговыми магнитофонами. Yamaha представила цифровую задержку D 1500 - первый процессор эффектов, пресеты которого можно было менять посредством MIDI-сообщения Program Change. В приборе Emulator II фирмы Emu впервые сочетаются MIDI-, SMPTE- и компьютерное управление.

1985 год ознаменовался захватом европейского рынка компьютерами Atari, имеющими встроенные MIDI-порты. Фирмы MOTU и Opcode выпускают программные MIDI-секвенсоры под Macintosh. В это же время Yamaha разрабатывает аппаратный секвенсор QX 1 с памятью на 80000 нот и возможностью редактирования списка MIDI-событий. В следующем году компьютеры PC начинают завоевывать рынок. Для PC появляется множество программ, использующих MIDI. Фирма Lexicon выпускает ревербератор PCM 70 - первый процессор эффектов, параметрами пресетов которого можно управлять по MIDI.

Сам протокол также не стоит на месте. Разработанный с учетом на дальнейшее расширение, он пополняется новыми возможностями. В марте 1987 года добавлен MIDI Time Code (синхросигнал для взаимодействия MIDI-устройств с магнитофонами и другим оборудованием, работающими с таймкодом SMPTE), в мае 1987 - Sample Dump Standard (протокол передачи семплов по MIDI). В декабре 1988 появляется сообщение Reset all controllers (обнулить все контроллеры), в апреле 1990 - сообщение Bank Select (выбор банка).

В 1990 году фирма Opcode выпускает MIDI-аудиосеквенсор Studio Vision для Macintosh, а также программу Galaxy - универсальный редактор/библиотекарь MIDI-устройств. В мае 1991 протокол пополняется сообщением All sounds off (снять все звуки), в июле 1991 - командами управления световыми и пиротехническими приборами MIDI Show Control, а также форматом стандартных MIDI-файлов (SMF - Standard MIDI Files) для платформо-независимого хранения и обмена данными секвенсоров. В октябре 1991 появляется стандарт General MIDI, в котором определены некоторые минимальные требования к GM-совместимым устройствам и названия звуков закреплены за номерами пэтчей. Появляется и первый GM-совместимый звуковой модуль Roland SC 55 Sound Canvas. Фирма Opcode выпускает MIDI-расширение OMS (Opcode Music System) для операционной системы компьютера Macintosh.

В декабре 1991 выходит MIDI Tuning Specification - способ тонкого управления строем инструментов. В январе 1992 протокол MIDI окончательно интегрируется в студию звукозаписи - появляется стандарт MIDI Machine Control, который позволяет управлять по MIDI транспортными функциями записывающих устройств.

С приходом Microsoft Windows 3.1 у пользователей PC появляется поддержка MIDI на уровне операционной системы. Выходит программа Cakewalk для Windows, программа Cubase, ранее выпускавшаяся для Atari и Macintosh, становится доступна на PC. 1993 год - начало бума мультимедиа. Для PC появляются звуковые платы с MIDI-интерфейсом. MIDI-технология активно эксплуатируется в двух секторах рынка: профессиональном и любительском.

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

В мае 1996 года выходит спецификация Downloadable Sounds (DLS) Level 1, которая позволяет дополнять собственными звуками наборы имеющихся в устройстве пэтчей General MIDI.

За последние пять лет организация MMA выпустила более десятка новых спецификаций. Январь 1998 - SMF Lyrics Specification (текст к песням в стандартных MIDI-файлах), январь 1999 - MIDI Tuning Bank and Dump Extensions (новые сообщения для тонкой подстройки инструментов) и спецификация DLS Level 1 версии 1.1, июнь 1999 - SMF Language and Display Extensions (хранение и отображение символов в MIDI-файлах), сообщения SMF Device Name and Program Name (воспроизведение MIDI-файла на нескольких устройствах одновременно), ноябрь 1999 - General MIDI 2.

В феврале 2000 года предложен новый формат RMID, который позволяет объединить в одном файле данные стандартного MIDI-файла и DLS-файла. В октябре 2000 – MIDI Media Adaptation Layer for IEEE-1394 (способ передачи MIDI-сообщений по протоколу FireWire), в августе 2001 – спецификация DLS Level 2.1, в ноябре 2001 – General MIDI Lite (для мобильных применений и портативных устройств), а также спецификация XMF (eXtensible Music Format), которая предлагается взамен формата RMID.

Последним дополнением (май 2002) является Scalable Polyphony MIDI Specification - способ, позволяющий воспроизводить один и тот же MIDI-файл максимально корректно вне зависимости от доступной полифонии.

Несмотря на все эти добавления, MIDI спецификация по-прежнему имеет версию 1.0.

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

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

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

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

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

MIDI является выраженным клавишно-ориентированным протоколом.

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

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

Коммутация
Как же соединяются устройства в MIDI? Представим себя на месте разработчиков. У нас есть два синтезатора, и мы хотим, чтобы при нажатии клавиши на одном из них второй синтезатор сыграл ту же ноту, но своим звуком. Очевидно, для этого нужно сделать на первом синтезаторе выходной MIDI-разъем, а на втором - входной MIDI-разъем и соединить инструменты MIDI-кабелем. Первый синтезатор при нажатии клавиши должен генерировать сообщение о взятии ноты и посылать его на свой выход, а второй синтезатор - получать это сообщение через вход и воспроизводить звук (рис. 3).


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

Слова

FF 05 len text

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

Отметим, что величина len представляется в виде значения переменной длины.

Маркер

FF 06 len text

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

Отметим, что величина len представляется в виде значения переменной длины.

Точка входа Cue Point

FF 07 len text

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

Отметим, что величина len представляется в виде значения переменной длины.

Канал MIDI

FF 20 01 cc

Это необязательное мета-событие обычно располагается в начале MTrk сообщения перед первой ненулевой временной меткой и перед первым мета-событием, исключая мета-событие номера последовательности. Мета-событие «канал MIDI» устанавливает значение MIDI-канала с которым будут связаны все последующие мета-события и события SYSEX. Байт данных cc - это номер MIDI-канала, величине 0 соответствует первый канал.

Спецификация MIDI не предусматривает указание номера канала для SYSEX событий и мета-событий. Если создается файл типа 0, то все SYSEX события и мета-события находятся на одном треке и затруднительно распределить эти события между соответствующими канальными (голосовыми) сообщениями (например, если вы хотите обозначить партию канала 1 как «Флейта соло», а партию канала 2 как «Труба соло», то вам придется использовать два мета-события «Имя трека» для введения этих названий, но поскольку оба этих трека расположены на одном канале, то перед первым мета-сообщением имени трека необходимо поместить мета-сообщение «канал MIDI», в котором указать номер соответствующего канала, а перед вторым мета-сообщением имени трека поместить мета-сообщение канала MIDI с указанием номера второго канала.

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

Порт MIDI

FF 21 01 pp

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

Спецификация MIDI предусматривает лишь 16 каналов на один входной или выходной порт (устройство, разъем, инструмент - терминология может быть различной) MIDI. Номер MIDI-канала каждого события MIDI содержится в статус байте события, где он занимает четыре младших бита. Таким образом, номер канала всегда представляет собой число в пределах от 0 до 15. Иногда система позволяет осуществлять работу более чем с 16 каналами MIDI, возникает необходимость преодолеть ограничения, накладываемые малым количеством каналов MIDI, и расширить возможности обмена MIDI-данными, сделать обмен информацией со внешними MIDI-устройствами более эффективным, то есть позволить музыканту работать более чем с 16 каналами. Некоторые секвенсоры также позволяют осуществлять работу более чем с 16 MIDI-каналами на входе и выходе одновременно. К сожалению, протокол MIDI не предусматривает возможность использования более чем 16 MIDI-каналов в рамках статус байта в событии MIDI. Поэтому необходим дополнительный метод, который позволяет различать события, которые соответствуют первому каналу на первом MIDI-порте от событий, соответствующих, скажем, первому каналу на втором MIDI-порте. Описываемой мета-событие позволяет секвенсору определить на какой MIDI-порт посылать события данного MTrk сообщения.


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

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

До 1982 года, когда была принята спецификация MIDI, синтезаторы разных производителей имели разные архитектуры и системы управления. Это было очень неудобно для музыкантов - ведь при покупке каждого нового инструмента приходилось "с нуля" изучать принципы его работы. Кроме того, секвенсеры одних производителей не могли работать с синтезаторами других – в результате для каждого синтезатора приходилось покупать отдельный секвенсер. Поэтому-то и возникла идея стандартизировать синтезаторы и другое сопутствующее оборудование и принять единую систему обмена данными между ними. В результате и появился Music Instruments Digital Interface - цифровой интерфейс музыкальных инструментов. А через некоторое время им стали оборудовать подавляющее большинство студийных устройств.

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

Как работает MIDI интерфейс?

"Артериями" любой MIDI-системы являются 16 информационных MIDI каналов, по которым передаются MIDI-сообщения - сигналы, несущие информацию о состоянии органов управления звуковым устройством (например, синтезатором). MIDI-сообщениями могут быть ноты, команды о смене звука, информация о положении колеса изменения высоты тона и т.д. На рисунке слева изображена

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

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

Теперь давайте разберемся со связкой синтезатор-секвенсер. Второй рисунок изображает схему работы синтезатора, соединенного с компьютерным секвенсером. И у синтезатора, и у компьютера, в

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

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

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

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

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

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

MIDI сообщения – это управляющие сигналы, которые передаются по MIDI интерфейсу. Например, при нажатии клавиши на динамической MIDI-клавиатуре производятся три сообщения, которые описывают исполнение ноты: Pitch (высота ноты), Velocity (скорость нажатия клавиши) и Duration (длительность). Эти сообщения могут передаваться по одному из каналов в звуковой модуль, а могут направляться и в секвенсер, который запишет их в определенное место композиции. Такая группа сообщений, привязанная к одному из моментов времени композиции и каналу называется Event (Событие). То есть, каждая нота композиции, записанная секвенсером - это событие.

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

Второй по важности после MIDI нот вид сообщений - это Controllers (контроллеры). Они управляют различными параметрами синтезаторов типа громкости или панорамы выбранного канала. Кстати, не путайте эти MIDI-сообщения и ручки управления автономным синтезатором, которые тоже иногда называются контроллерами.

Стандарт MIDI предусматривает наличие 127 контроллеров, каждый из которых может принимать значения от 0 до 127. Но реально из них используется не более 20. Самые главные из них - это Volume (громкость), Pan (панорама) и Modulation(модуляция). Они управляют параметрами воспроизведения нот по каждому из каналов. То есть, записав в секвенсер на первый канал контроллер Volume, имеющий значение 127, а на второй - значение 64, вы получите разницу в громкости этих каналов в два раза.

И, наконец, третий важный тип MIDI сообщений – это SysEx, или «системные эксклюзивные сообщения». Как и контроллеры, они предназначены для управления различными параметрами синтезаторов, или другого студийного оборудования. Однако SysEx «персонифицированы», то есть они работают только в пределах одного конкретного устройства. Их существование необходимо из-за того, что 127 контроллеров просто не хватает для управления всеми параметрами современных синтезаторов. Поэтому чаще всего контроллеры используются в стандартных ситуациях («порулить» громкость и панораму на канале, выставить уровень посыла на эффекты, изменить частоту среза и резонанс фильтра и т.д.). А вот для управления процессорами эффектов, «глубинными» параметрами синтеза или операциями по обслуживанию инструмента («сбрасывание» отредактированных звуков в компьютер, например) применяются SysEx.

MIDI-синхронизация

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

Делается это так. Например, у вас есть секвенсер и многоканальный магнитофон. Любой секвенсер должен равномерно "проматывать" виртуальную ленту (по аналогии с магнитофоном), на которую записываются MIDI-сообщения. Для этого во всех секвенсерах есть генератор временного кода, который производит MIDI-сообщение под названием MIDI Clock. При помощи этого временного кода и осуществляется точное управление "лентопротяжным механизмом" секвенсера, а также синхронизация со внешними устройствами. Группа MIDI-сообщений, которые используются для синхронизации называются MIDI Time Code ((MTC).

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

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

Системные эксклюзивные сообщения

Как уже говорилось в разделе «MIDI сообщения и события», системные эксклюзивные сообщения (SysEx) – это управляющие команды, которые, в отличие от контроллеров действуют только в пределах одного синтезатора или другого Студийного MIDI устройства. Например, контроллер Volume меняет громкость выбранного канала любого синтезатора, а вот SysEx сообщение, управляющее уровнем искажений эффекта Distortion, и предназначенное для использования с синтезатором Roland XP 30 не произведет ни малейшего «впечатления» на синтезатор Quasimidi Sirius, у которого также есть дисторшн. Но несмотря на узкую специализацию каждого такого сообщения, «язык» на котором они написаны абсолютно универсален, и зная его основы можно очень быстро подобрать «ключи» к любому инструменту и студийному устройству и заставить его делать именно то, что нужно.

Любое системное эксклюзивное сообщение представляет собой

последовательность шестнадцатеричных цифр (см. рис.), которую вы можете составить в любом редакторе SysEx (эти редакторы есть в большинстве развитых секвенсеров). Каждая цифра этого сообщения несет определенную информацию, и все искусство программирования SysEx заключается в том, чтобы поставить нужную цифру в нужное место. А помогает в этом раздел руководства пользователя устройства под названием MIDI Implementation – в нем фирма-производитель разъясняет пользователям принципы построения SysEx сообщений для каждой конкретной модели.

Итак, SysEx сообщения имеют обязательную и произвольную части. Вы должны обязательно начать сообщение с символа F0 и закончить символом F7 – это команды, заставляющие любой синтезатор или другое студийное устройство начать и закончить прием системной информации. Следом за символом F0 следуют еще три символа, которые несут информацию об идентификационном номере производителя, идентификационном номере устройства в MIDI системе и идентификационном номере модели устройства – они будут одинаковыми у любых сообщений для конкретного устройства. Например, для синтезатора Roland XP 30 обязательная часть SysEx будет выглядеть так: F0 41 11 6A ……………..F7, где 41 – это код фирмы Roland, 11 – идентификационный номер синтезатора (он выставляется в системном меню инструмента) и 6A – это код модели XP-30. Конкретные идентификационные номера для других синтезаторов нужно смотреть в MIDI Implementation их руководств.

Следом первыми четырьмя цифрами обязательной части SysEx идет часть произвольная. Ее конкретное наполнение зависит от того, чего вы хотите. Но она всегда начинается с номера команды и заканчивается значением контрольной суммы. Номер команды и ее формат нужно опять-таки смотреть в MIDI Implementation, а контрольная сумма вычисляется путем сложения всех цифр, составляющих команду (за исключением ее номера) и вычитанием получившегося значения из 128. И после контрольной суммы идет символ окончания SysEx – F7.
Давайте разберем конкретный пример. Предположим, нам до зарезу понадобилось вставить в аранжировку команду, которая меняет тип реверберации у синтезатора Roland XP30 с холла на дилэй. Прежде чем приступать к написанию, открываем редактор SysEx секвенсера, пишем заветный символ F0 (начало Sys Ex) и вооружаемся руководством пользователя синтезатора. Первым делом нам нужно выяснить, что писать в постоянной части. Добираемся в MIDI Implementation руководства пользователя до раздела Data Transmission (Передача данных) и смотрим раздел System Exclusive Messages. В этом разделе находится шаблон SysEx для передачи данных в синтезатор. Выясняется, что код Roland – 41, а код XP 30 – 6A. В системном же меню самого синтезатора смотрим deviceID – у меня он оказался равным цифре 17. Но это в десятичной системе, а в шестнадцатеричной он будет выражаться цифрой 10 (см таблицу перевода десятичных значений в шестнадцатеричные). Таким образом, можно продолжать SysEx (цифры вводятся через один пробел): F0 41 10 6A...

Итак, смотрим шаблон SysEx дальше. Идентификационный номер команды для нашего случая – 12. Кстати говоря, во многих руководствах шестнадцатиричные числа пишутся с обязательным прибавлением буквы H в конце (от Hexadecimal). В шаблоне SysEx руководства XP30 они даются именно в таком виде, например, номер команды приводится как 12H. Но в редакторе SysEx секвенсера букву H писать не надо – он и так знает, что речь идет о шестнадцатиричных числах. Таким образом, продолжаем сообщение: F0 41 10 6A 12…

Далее в шаблоне идут четыре цифры, сообщающие синтезатору адрес, по которому следует передавать команду. Они обозначаются как aa, bb, cc и dd. Их значение нужно смотреть в таблицах под названием Parameter Address Map. Поковырявшись некоторое время с таблицами выясняем, что адрес для смены типа ревербератора пишется так: 01 00 00 28. Наконец, мы добрались и до самой команды, которая пишется как 06 – это становится очевидным из колонки Data (Value) таблицы Parameter Address Map. Продолжаем наш SysEx: F0 41 10 6A 12 01 00 00 28 06…

Теперь осталось посчитать контрольную сумму. Для этого нам сначала нужно сложить цифры адреса и значения команды: 01 + 00 + 00 + 28 + 06… Но цифры-то записаны в шестнадцатеричной системе счисления. Чтобы успешно завершить арифметическую операцию нужно перевести их в десятичный вид: 1 + 0 + 0 + 40 + 6 = 47. Теперь вычитаем 47 из 128 и получаем число 81, которое в шестнадцатеричной системе будет писаться как 51. Все, теперь наше SysEx сообщение приобретает законченный вид: F0 41 10 6A 12 01 00 00 28 06 51 F7. Остается его сохранить в отдельный файл и вставить последний в нужное место аранжировки.

Организация памяти и форматы банков синтезаторов

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

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

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

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

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

Если вы видели автономные sample playback синтезаторы, то наверняка обращали внимание, что на них почти всегда есть надписи типа General MIDI или аббревиатуры GS или XG. Эти обозначения часто пишутся и в спецификациях звуковых карт. Они указывают, какому стандарту соответствует синтезатор.

Аббревиатура GM или надпись General MIDI означает, что в памяти синтезатора находится как минимум один банк (может быть и больше), из 128 программ плюс один банк ударных инструментов, состоящий из 44 пэтчей барабанов различного звучания, причем
каждой MIDI-ноте присвоен свой барабан (банков ударных и пэтчей в этих банках может быть и больше). Все программы (как основные, так и пэтчи ударных) имеют раз и навсегда установленный номер, под которым их можно разыскать в памяти. Это означает, что в GM-совместимых синтезаторах программа, имитирующая рояль всегда скрывается под номером 1, а под номером 53 - имитатор хора. Такой стандарт введен для того, чтобы без проблем воспроизводить музыку, записанную в любом секвенсере при помощи разных синтезаторов с предсказуемым результатом. Есть и специальный формат файла, который называется "стандартным MIDI-файлом" и обеспечивает воспроизведение музыки на любом синтезаторе или звуковой карте.

GM-синтезатор имеет как минимум 16 MIDI-каналов. Каждый из каналов может быть использован для записи или воспроизведения одной программы или одной ударной установки. Обычно в спецификациях звуковых карт или автономных синтезаторов на этот счет пишется так: "Синтезатор имеет 16-частную мультитембральность".
любых синтезаторов есть еще одно ограничение - вы не можете одновременно воспроизвести больше определенного количества нот, причем неважно, одним инструментом играются эти ноты или несколькими. Это количество называется полифонией, и для стандарта GM оно определено минимум в 24 ноты (может быть и 28, и 32 - GM это не запрещает). Это означает, что если вы задумали сыграть на клавиатуре аккорд из 25 нот, позвав для этого своих друзей, то у вас ничего не получится. Девять нот из взятого аккорда звучать не будут. Девять - это из-за того, что 8 нот резервируются под барабаны и лишь 16 остаются на все остальные программы. В спецификациях некоторых синтезаторов для описания полифонии может применяться и следующая формулировка: "Синтезатор имеет 24 голоса".

Существует очень распространенное заблуждение: будто все GM синтезаторы звучат одинаково - ведь инструменты у них одни и те же. Это совершенно не верно. Рояль из GM-совместимой карты Cuncun FX производства Turtle Beach звучит совершенно не так как рояль с GM-совместимого синтезатора Korg N5. Конечно, оба они - рояли, но вот тембр у этих роялей совершенно разный. Стандарт General MIDI описывает только общий характер инструмента, который должен храниться в памяти под тем или иным номером. Но конкретное качество семплов, "раскладка" колец по клавиатуре и многие другие параметры программы остаются на совести производителя.

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

Теперь об аббревиатурах GS и XG. Стандарт GS введен японской фирмой Roland. Первоначально этот стандарт назывался GSS и расшифровывался как General Synthesizer System. Позже от трех букв остались только две и они расшифровываются чаще всего как General Synthesizer - Основной Синтезатор. GS - это расширение стандарта GM в сторону увеличения количества банков, а соответственно, и количества инструментов, хранящихся в памяти. Причем GS-устройства полностью совместимы с GM, т.е. стандартные MIDI-файлы всегда проигрываются без проблем. Наращивание количества программ происходит в виде добавления вариаций основного банка. Это означает, что в GS-синтезаторе по прежнему будет инструмент номер 90 из набора GM под названием Warm pad, но у него будет пара вариаций 90/1 и 90/2, которые могут быть и совершенно не похожи на основной звук и будут размещены в других банках. При воспроизведении стандартного MIDI-файла банки с вариациями не будут доступны, если в файл не записать специальные MIDI-сообщения. Обычно GS синтезаторы имеют в постоянной памяти 200-400 программ и 6-9 ударных установок (хотя их может быть и больше).

Есть еще одно важное отличие GS от GM - это обязательное присутствие в синтезаторах, поддерживающих Roland"овский стандарт, отдельного процессора эффектов, который может обрабатывать инструменты двумя эффектами одновременно. Обычно это реверберация и хорус. Уровень эффекта регулируется индивидуально у каждого инструмента, но эффекты - общие для всех 16 MIDI-каналов. То есть, если вы обрабатываете на первом канале фортепиано холл-реверберацией, то на всех остальных каналах нельзя установить другой тип эффекта. Можно только поменять уровень "холла".

XG - это стандарт фирмы Yamaha, который появился относительно недавно. Он представляет собой дальнейшее расширение GM и GS в сторону увеличения количества банков и инструментов в памяти и количества эффектов. Расшифровывается эта аббревиатура как eXtended General MIDI - Расширенный General MIDI, и он тоже полностью совместим с GM. Таблица звуков организована точно так же, как и в стандарте GS, т.е. увеличение количества программ происходит при помощи увеличения количества банков с вариациями. Обычно в памяти XG-синтезаторов находится более 400 инструментов. Одновременно можно использовать три эффекта из имеющихся 64, причем 2 могут работать как в GS, сразу со всеми воспроизводимыми инструментами на 16 MIDI-каналах, а еще один можно присваивать любой из программ индивидуально. Выбор последнего эффекта очень богат - как минимум 42 возможных варианта. Кроме этого, в соответствии со спецификацией XG, любым из эффектов можно обрабатывать и внешние источники звука, подключенные к линейному входу. И GS и XG имеют не менее 32 голосов полифонии (чаще - 64) и 16-частную мультитембральность.

Новое на сайте

>

Самое популярное