Появление в последнее время ряда публикаций, посвященных возможности использования MIDI широкими массами пользователей персональных компьютеров, наконец-то привлекло определенное внимание к этой ранее не слишком горячей теме. В одном из российских журналов довелось даже увидеть полный оптимизма лозунг: "Мидиарии всех стран, соединяйтесь!". Спору нет, на сегодняшний день MIDI и только MIDI может придать музыке истинную интерактивность. В данном случае Вам отводится роль не пассивного слушателя, чей удел - восхищаться результатом труда немногочисленной касты профессионалов музыки, но и предоставляется возможность просто и достаточно сердито реализовать все ступени создания музыкального произведения. С другой стороны, такой подход оставляет открытым множество вопросов, касающихся потенциала MIDI, и в значительной степени сужает рамки данного явления. Действительно, не стоит впихивать MIDI в пределы банального треугольника "MIDI клавиатура - звуковая карта - софтверный секвенсор", как, наверное, не стоит считать, что кроме PC нет других компьютеров. И то, и другое будет слишком сильным преувеличением. Вполне реальна ситуация, когда, обратившись к профессиональному музыканту с магическим приветствием: "Саундбластер!", Вы получите реакцию в духе понимания Фигурой из небезызвестной книги А. Гайдара слова "ультиматум". Кроме того, такие вещи как сэмплер, секвенсор, драйвер и некоторые другие, заведомо имеющие прямое отношение к MIDI, могут выглядеть вовсе не похожими на компьютерную плату или программу. Исходя из всего вышесказанного, мне показалось интересным остановиться на тех принципиальных теоретических и практических аспектах MIDI, которые помогли бы лучше понять, что же именно кроется за этими четырьмя заглавными буквами. За основу была взята точка зрения японской фирмы "Roland", которая стояла у истоков всего того, что сейчас называется MIDI, и которая по сей день занимает одну из ведущих позиций среди производителей электронных инструментов и другой музыкальной аппаратуры.
Революционным моментом в мире музыки можно считать начало 1980-х, когда прогресс электроники позволил создавать музыкальные инструменты, способные "общаться" друг с другом. Тогда стало возможным, чтобы один инструмент "сказал" другому: "Сыграй ми первой октавы вполсилы, а спустя четверть такта - ля малой октавы, но уже чуть громче". Второй инструмент, "выслушав" все это, мог воспроизвести эти, а затем и другие, переданные подобным образом, ноты настолько верно, насколько он смог "понять" использованный для "разговора" язык. Именно этот "язык" и стал сердцем всего того, что сейчас называется MIDI.
Невзирая на относительную молодость концепции MIDI, она получила широчайшее распространение по всему миру: функции MIDI стали неотъемлемой частью практически любого современного клавишного (и не только) инструмента. Преимущества MIDI используются в самых различных устройствах. К примеру, MIDI позволяет без помех "общаться" электропиано, ритм-машинке, тон-генератору, секвенсору и т.д. MIDI без всякого сомнения имеет огромный потенциал для своего дальнейшего развития.
Аббревиатура MIDI расшифровывается как цифровой интерфейс музыкальных инструментов (Musical Instrument Digital Interface), под которым понимается комплекс промышленных спецификаций для различных источников звука, позволяющих осуществить генерирование сходной музыкальной информации вне зависимости от принадлежности устройства (или его модели) тому или иному производителю. В настоящее время имеет смысл говорить о General MIDI, более современной модификации MIDI, определяющей, помимо всего вышесказанного, необходимый минимум поддерживаемых голосов, распознаваемых MIDI-сообщений, соответствие звуковых образцов номерам, используемым командой "смена программы" (Program Change), и схему расположения звуков ритм-группы на клавиатуре. Наличие логотипа General MIDI на музыкальном устройстве предполагает его совместимость с любой музыкальной информацией, обладающей этим же знаком. Кроме GM существуют два так называемых "расширенных" стандарта (иногда употребляется слово формат) GS и XG, принадлежащих соответственно фирмам "Roland" и "Yamaha". GS и XG представляют собой комплексы спецификаций, определяющих способ, при помощи которого мультитембральные источники звука отвечают на MIDI-сообщения. Они включают спецификации звуковых образцов, функций, используемых для тон-редактирования, эффектов и некоторых дополнительных параметров. Стандарт XG характеризуется в целом более широкими возможностями использования различных звуковых образцов, их вариаций и эффектов. Несмотря на то, что MIDI-инструменты могут запросто "общаться друг с другом", делают они это не по собственному желанию. Инструмент является всего лишь одним из звеньев цепи "музыкант - музыкальный инструмент - музыкальное произведение", причем, главную роль здесь играет музыкант. MIDI-инструмент только преобразует всё сыгранное музыкантом в особый код, который используется для передачи информации о действиях музыканта от одного инструмента к другому.
Что же такое MIDI?
Musical Instrument Digital Interface - цифровой интерфейс музыкальных инструментов. Создан в 1983 году ведущими производителями электронных музыкальных инструментов - Yamaha, Roland, Korg, E-mu и др. Изначально был предназначен для замены принятого в то время управления музыкальными инструментами при помощи аналоговых сигналов управлением при помощи информационных сообщений, передаваемых по цифровому интерфейсу. Впоследствии стал стандартом в области электронных музыкальных инструментов и компьютерных модулей синтеза. То есть MIDI – это событийно-ориентированный протокол соединения музыкальных инструментов друг с другом или с компьютерами. Всякий раз, когда исполнитель производит какое-либо воздействие на органы управления (нажатие/отпускание клавиш, педалей, изменение положений регуляторов и т.п., инструмент формирует соответствующее MIDI-сообщение, в тот же момент посылаемое по интерфейсу. Другие инструменты, получая сообщения, отрабатывают их так же, как и при воздействии на их собственные органы управления. Таким образом, поток MIDI-сообщений представляет собой как бы слепок с действий исполнителя, сохраняя присущий ему стиль исполнения - динамику, технические приемы и т.п. При записи на устройства хранения информации MIDI-сообщения снабжаются временнЫми метками, образуя своеобразный способ представления партитуры. При воспроизведении по этим меткам полностью и однозначно восстанавливается исходный MIDI-поток.
Cпецификация MIDI состоит из аппаратной спецификации самого интерфейса и спецификации формата данных, или протокола - описания системы передаваемых сообщений. Соответственно, различается аппаратный MIDI-интерфейс и формат MIDI-данных (так называемая MIDI-партитура); интерфейс используется для физического соединения источника и приемника сообщений, формат данных - для создания, хранения и передачи MIDI-сообщений. В настоящее время эти понятия стали самостоятельными и обычно используются отдельно друг от друга - по MIDI-интерфейсу могут передаваться данные любого другого формата, а MIDI-формат может использоваться только для обработки партитур, без вывода на устройство синтеза.
Какова аппаратная спецификация MIDI?
Грубо говоря, MIDI определяет протокол, в соответствии с которым происходит пересылка цифровых команд по кабелю. Кабели MIDI имеют 5-штырьковые разъемы стандарта female DIN-5 или СГ-5, но используются только 3 контакта из пяти (земля, токовая петля и линия данных). Передача данных по MIDI протоколу осуществляется в одном направлении со скоростью 31250 б/с. Каждый инструмент имеет три соединительных разъема: In (вход), Out (выход) и Thru (полная копия сигнала с In через буфер), вид с наружной стороны (стороны соединения): 2 4 o 5 o o1 o o 3
Контакты 4 и 5 - сигнальные, контакт 2 - экран. Соединение экрана с корпусом желательно только со стороны выхода (Out и Thru). Полярность сигналов дается относительно источника тока: контакт 4 - плюс (ток вытекает из вывода), контакт 5 - минус (ток втекает в вывод). Таким образом, для разъемов Out и Thru назначение то же, для разъема In - обратное.
Для соединения используется двужильный экранированный кабель длиной до 50 футов (около 15 м). Экран необходим только для защиты от излучаемых помех - кабель практически нечувствителен к наводкам извне. Соединение разъемов на двух концах кабеля - прямое (2-2, 4-4, 5-5).
Один MIDI-передатчик допускает подключение до четырех приемников. Описанная схема позволяет создавать сеть MIDI-устройств, подключая их по цепочке и нескольким направлениям: +-----------+ +-----------+ +-----------+¦1 Thru ¦ ¦2 Thru +-----+ ¦3 Thru ¦¦ In ¦ +----+ In ¦ +----+ In ¦¦ Out +-----+ ¦ Out +-+ ¦ Out ¦+-----------+ +-----------+ ¦ +-----------+ +---------------+ ¦ +-----------+ +-----------+ ¦ ¦4 Thru +-----+ ¦5 Thru ¦ +-+ In ¦ +----+ In ¦ ¦ Out ¦ ¦ Out ¦ +-----------+ +-----------+
В этой схеме устройство 1 служит источником сообщений, которые получает устройство 2 и через его ретранслятор - устройство 3. Устройство 4 получает сообщения, посылаемые устройством 2 (они могут как включать, так и не включать получаемые самим устройством 2) и ретранслирует их на вход устройства 5.
В компьютер MIDI подключается с помощью 15-ти контактного MIDI-порта.
Также возможно подключение 2-х клавиатур к одному синтезатору. Первая клавиатура генерирует команды для канала 1, а вторая для канала 2. Оба кабеля, подключенные к разъемам MIDI Out соответствующих клавиатур, объединяются на специальном коммутаторе (MIDI merger box), который служит для синхронизации сигналов. Смешанные сигналы подаются на вход MIDI In синтезатора.
Какая спецификация формата данных MIDI?
MIDI-данные представляют собой сообщения, или события (events), каждое из которых является командой для музыкального инструмента. Стандарт предусматривает 16 независимых и равноправных логических каналов, внутри каждого из которых действуют свои режимы работы; изначально это было предназначено для однотембровых инструментов, способных в каждый момент времени воспроизводить звук только одного тембра - каждому инструменту присваивался свой номер канала, что давало возможность многотембрового исполнения. С появлением многотембровых (multi-timbral) инструментов они стали поддерживать несколько каналов (современные инструменты поддерживают все 16 каналов и могут иметь более одного MIDI-интерфейса), поэтому сейчас каждому каналу обычно назначается свой тембр, называемый по традиции инструментом, хотя возможна комбинация нескольких тембров в одном канале. Канал 10 по традиции используется для ударных инструментов - различные ноты в нем соответствуют различным ударным звукам фиксированной высоты; остальные каналы используются для мелодических инструментов, когда различные ноты, как обычно, соответствуют различной высоте тона одного и того же инструмента.
Особенно важно уяснить для себя то, что сами данные, передаваемые по кабелю MIDI – интерфейса, не являются закодированными звуками ни в аналоговой, ни в цифровой форме. Передаются номера команд, нот, которые хранятся в определённых таблицах. На первый взгляд это противоречит здравому смыслу, а по сему представляется чем-то уж сложным. На самом деле по кабелю передаются простые сообщения длиной всего 1, 2, или 3 байта.
Например:
Когда вы нажимаете на клавишу (например “ДО” первой октавы) клавиатура выдает 3 байта по порту MIDI Out. В шестнадцатеричной форме это 90 3С 40. Первый байт (90) – это сообщение Note On. Второй байт представляет собой номер ноты (3С – третье или среднее “до”, т.е. “до” первой октавы). Значение третьего байта определяется скоростью нажатия на клавишу, т.е. от силы удара зависит громкость звука.
Далее это 3-байтовое сообщение по MIDI-кабелю попадает на входной разъем синтезатора, который реагирует на это звуком “до” первой октавы. Если вы снимите свой палец с клавиши на входном разъеме клавиатуры - появится сообщение 90 3C 00. Как видите изменился только байт скорости – он принял нулевое значение. Эта команда называется “Note Off”, и синтезатор реагирует на нее прекращением воспроизведения данного звука.
Если ваш синтезатор полифонический, т.е. способен воспроизводить более одной ноты в одно и тоже время, вы имеете возможность играть аккордами. Клавиатура генерирует множественные сообщения Note On, а синтезатор проигрывает все нажатые ноты одновременно. Снимая пальцы с клавиш, вы посылаете синтезатору сообщения Note Off. Вообще говоря, клавиатура в этой установке играет роль так называемого MIDI – контроллера. Она генерирует MIDI – последовательности управления синтезатором.
Контроллер может не только напоминать клавиатуру или какой-либо другой традиционный музыкальный инструмент, но и может быть так называемым секвенсором – устройством, способным запоминать последовательность команд типа Note On и Note Off и в дальнейшем воспроизводить целые музыкальные фразы. Секвенсор как таковой сейчас используется гораздо реже, чем несколько лет назад, ему на смену пришел персональный компьютер, оснащенный MIDI–платой. Такой компьютер способен генерировать сообщения Note On и Note Off, и соответственно, способен управлять синтезатором. Специальное программное обеспечение авторских работ позволяет в наглядной форме манипулировать MIDI–данными, полученными от MIDI контроллера, а затем пересылать обработанные последовательности на синтезатор.
Синтезатор иногда называют звуковым модулем, или звуковым генератором. Стандарт MIDI никак не определяет способ создания звука, который может быть применен в той или иной конструкции синтезатора.
Байты состояния и данных:
Поскольку MIDI-сообщения представляют собой поток данных в реальном времени, их кодировка разработана для облегчения синхронизации в случае потери соединения. Для этого первый байт каждого сообщения, называемый также байтом состояния (status byte), содержит "1" в старшем разряде, а все остальные байты содержат в нем "0" и называются байтами данных (data bytes), число которых определяется байтом состояния. Если после получения всех байтов данных последнего сообщения на вход приемника поступает байт, не содержащий "1" в старшем разряде - это трактуется как повторение информационной части сообщения (подразумевается такой же первый байт). Такой метод передачи носит название "Running Status" и широко используется для уменьшения объема передаваемых данных - например, передается один байт команды "Controller Change" с нужным номером канала, а затем - серия байтов данных с номерами и значениями контроллеров для этого канала.
В сообщении «С0 рр», байт C0 является байтом состояния (C0=11000000), а pp-байтом данных.
MIDI-каналы:
Канал –это, в одном случае, число независимых генераторов звука, в других случаех, это количество разных инструментов(гитара, труба и т.д.), звуки которых может проигровать MIDI-устройство одновременно.
Обычно нумерация каналов начинается с 1, так что, если значение канала в команде равно 0, то мы имеем дело с каналом номер 1. Использование 16 каналов позволяет передать по кабелю MIDI – интерфейса сообщения для 16 различных голосов, звучащих одновременно. Как правило каждая строка MIDI-сообщения начинается с команды Program Change, которая определяет для каждого канала свой инструмент, а затем идет множество чередующихся Note On и Note Off с редкими вкраплении Program Change, необходимой для замены одного инструмента другим. Но в любой момент времени каждому каналу соответствует только один голос.
Рассмотрим такой пример, что наша клавиатура может генерировать MIDI-сообщения одновременно для двух каналов – канала 1 и канала 2. Нажав соответствующие кнопки, вы можете на синтезатор послать две команды Program Change:
С0 01
С1 05
Таким образом, для канала 1 установлена программа 2, а для канала 2 программа 6.
Теперь, если вы нажмете на клавишу, клавиатура сгенерирует две команды Note On для каждого из каналов:
90 kk vv
91 kk vv
То есть система начинает воспроизводить звук двух разных инструментов в унисон.
Существуют так называемые “разделенные” клавиатуры, в которых клавиши нижних октав могут генерировать команды для одного канала, а клавиши верхних для другого. Это дает возможность играть как бы на двух независимых инструментах одновременно. Возможности 16-и канальной организации MIDI-интерфейса становятся реально ощутимы при использовании программы – секвенсера, запущенной на подключенном к нашей системе компьютере. Каждому из каналов можно привести в соответствие свой голос, и если ваш синтезатор способен воспроизводить звуки 16 независимых инструментов одновременно – вы становитесь руководителем оркестра в составе 16 покорных вашей воле музыкантов.
В общем случае MIDI сообщение имеет следующий вид (по битово):
1
х
х
х
у
у
у
у
Байт состояния
Байты данных
0
0
Старший бит 1
1ххх-номер команды
уууу-номер канала
Старший бит 0
Число байт определяется байтом состояния
Пустые клетки – данные(обычно это номер ноты, тип инструмента, скорость нажатия клавиши)
Какие бывают виды MIDI-сообщений?
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 (плавное изменение высоты тона в канале)·
Системные сообщения: · 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 (сброс всех устройств сети)
Описание канальных сообщений:
Note On (nn - номер ноты, vv - скорость (velocity) нажатия) Note Off (nn - номер ноты, vv - скорость отпускания)
Cообщает о включении/выключении звучания ноты. MIDI-клавиатура генерирует эти сообщения при нажатии/отпускании клавиш, MIDI-синтезатор запускает или останавливает работу соответствующего генератора звука.
Номер ноты задается абсолютным номером полутона в диапазоне 0 127, при этом центральной фортепианной клавише - ноте "До" первой октавы - соответствует десятичный номер 60 (в MIDI принята нумерация октав с нуля, поэтому она обозначается как C-5).
Скорость нажатия/отпускания задается числом в диапазоне 0 127, отражающим скорость перемещения клавиши (обычно используется логарифмическая шкала). Скорость нажатия косвенно отражает силу удара по клавише. Чувствительная к скорости нажатия (динамическая) клавиатура выдает реальные значения, нечувствительная должна выдавать десятичные значения 64. Значение 0 в сообщении Note On полностью эквивалентно сообщению Note Off для этой же клавиши - это позволяет при передаче только нажатий и отпусканий использовать режим Running Status.
Простые синтезаторы используют скорость нажатия для управления громкостью извлекаемого звука, более сложные - также для управления фильтрами (более громким звукам соответствует более звонкое звучание) либо выбора разных самплов, пропорции смешивания нескольких самплов, и т.п.
При поступлении повторного сообщения Note On для уже нажатой ноты различные инструменты ведут себя по-разному: одни автоматически отрабатывают перед этим Note Off, прекращая звучание "зависшей" ноты; другие запускают отдельный генератор, оставляя зависшую ноту звучать. Звучание зависшей ноты в этом случае может быть прекращено только командами All Sounds Off или Reset.
Channel Pressure (pp - величина давления) Key Pressure (nn - номер ноты, pp - величина давления)
Cообщает об изменении силы давления (After Touch - после прикосновения (нажатия)) на всю клавиатуру или отдельную клавишу. Наиболее простые клавиатуры не имеют датчика давления; клавиатуры средней сложности имеют общий датчик для всех клавиш, посылая сообщения Channel Pressure по результатам усреднения давления на все нажатые клавиши; наиболее сложные клавиатуры имеют отдельные датчики для каждой клавиши, посылая изменения в состоянии каждого датчика.
Поведение синтезатора в ответ на эти сообщения стандартом не определено. Обычно синтезаторы с поддержкой Aftertouch имеют команды для привязки сообщений к выбранным параметрам синтеза (громкости, модуляции, фильтрам, эффектам и т.п.).
Control Change (cc - номер, vv - значение контроллера)
Сообщает об изменении состояния органов управления (контроллеров). MIDI-контроллеры делятся на непрерывные (continuous) - рукоятки, движки, имеющие диапазон непрерывного изменения, и переключатели (switches) - педали, кнопки, тумблеры, имеющие два дискретных состояния (On/Off - включено/выключено). Значения 0 63 означают выключенное состояние переключателя, значения 64 127 - включенное.
Обычно, когда непрерывный контроллер используется для плавного управления каким-либо параметром звука, этот параметр пропорционально зависит от значения контроллера. Используются два основных способа управления параметрами звука: абсолютный и относительный. При абсолютном способе параметр полностью зависит от установленного значения контроллера; при относительном способе имеется некоторое стандартное значение параметра, соответствующее "нейтральному" значению контроллера - 64. Изменение значений контроллера вверх или вниз пропорционально изменяет значение выбранного параметра относительно стандартного значения, которое, вообще говоря, может быть различным для разных режимов, тембров и т.п. Для глобальных параметров, таких, как громкость или панорама в канале, используется абсолютный способ управления; для локальных - глубина реверберации, частота среза фильтра и т.п. - относительный, хотя интерпретация различными инструментами может не совпадать.
Program Change (pp - номер тембра)
Служит для смены программы синтеза (чаще называемой тембром или инструментом) в канале. Параметр задает номер тембра (0 127) в текущем выбранном банке. Последующие ноты будут исполняться выбранным тембром, тембр уже звучащих в канале нот не изменяется.
Pitch Bend Change (ll - младший, mm - старший байт значения)
Задает смещение высоты тона для всех нот в канале - как звучащих, так и последующих. Значение, образованное двумя 7-разрядными величинами, изменяется в диапазоне 0 16383; среднее значение - 8192 - принимается за относительный нуль, что дает условный диапазон изменения -8192 8191. Чувствительность Pitch Bend может изменяться при помощи RPN 0; по умолчанию принимается предельное смещение на два полутона в любую сторону.
Описание системных сообщений:
System Exclusive (SysEx)
Служат для передачи специальной информации определенным устройствам. В сообщении SysEx может передаваться любое количество байтов. Признаком конца сообщения служит байт F7. Первые три байта SysEx обычно содержат идентификатор производителя устройства (присваивается Ассоциацией Производителей MIDI-устройств - MMA), номер устройства в сети (задается с пульта) и код модели устройства (присваивается производителем). В остальном формат сообщений определяется производителем - это могут быть команды, параметры, оцифрованные инструменты, партитуры и т.п.
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-систем.
Стандарт General MIDI (MMA)
Стандарт General MIDI (единый MIDI, GM) разработан ассоциацией MIDI-производителей (MMA) в 1991 году в целях обеспечения частичной совместимости выпускаемых MIDI-устройств и облегчения переноса партитур между устройствами различных производителей. Устройство, совместимое с GM Level 1, должно удовлетворять следующим требованиям: полифония не менее 24 голосов; наличие 128 мелодических и 47 ударных тембров; раздельный выбор тембров по всем 16 MIDI-каналам; выделение канала 10 для ударных тембров, остальных каналов - для мелодических тембров.
Мелодическим и ударным тембрам присвоены постоянные номера. Мелодические тембры распределены по 16 группам с 8 тембрами в каждой и выбираются сообщением Program Change в каналах 1-9 и 11-16.
Стандарт General Synthesis (Roland)
Стандарт General Synthesis (единый синтез, GS) разработан фирмой Roland в 1991 году, практически одновременно с GM. Целью создания стандарта было обеспечение совместимости не только базового набора тембров и способов управления, но и более тонких методов воздействия на звук. Требования к устройству, поддерживающему GS: поддержка 98 дополнительных тембров и 8 наборов ударных; приоритетное назначение голосов каналам - вначале 10, далее с 1; назначение дополнительных ударных каналов через SysEx; резервирование голосов в канале через SysEx; наличие управляемого резонансного фильтра в каждом канале;
Дополнительны мелодические тембры и звуковые эффекты распределены по 12 банкам, именуемым Variation Tones: 1 9, 16, 24 и 32. Дополнительные наборы ударных и набор звуковых эффектов имеют нумерацию (начиная с нуля).
Стандарт Extended General (Yamaha)
Стандарт Extended General (расширенный единый, XG) разработан фирмой Yamaha в 1994 году в виде расширения стандарта GS. Целью расширения ния стандарта было в первую очередь внесение развитого управления эффект-процессором и значительное увеличение количества тембров. Устройства, удовлетворяющие XG, способны самостоятельно создавать достаточно современное звучание без применения дополнительных тонгенераторов и модулей обработки, и к тому же гарантируют переносимость партитур с младших моделей на старшие практически без доработки. Требования к устройству, поддерживающему базовый уровень XG (Level 1): 32-голосная полифония; поддержка стандартов GM и GS; наличие 676 мелодических тембров и 21 набора ударных/эффектов; независимая подстройка высоты каждой ступени звукоряда; поддержка плавного скольжения высоты тона (портаменто); управление чувствительностью тембра к силе удара (Velocity); синхронное и независимое управление высотой и амплитудой звука, частотой среза фильтра от нескольких MIDI-контроллеров;
Возможные расширения XG: до 64 MIDI-каналов (до четырех раздельных MIDI-портов с возможностью управления всем устройством по любому из них); до 64 AD-каналов - аналоговых каналов с АЦП на входе, сигналы с которых поступают на обработку эффект-процессорами; дополнительный трехполосный эквалайзер;
Набор тембров состоит из двух перекрывающихся наборов: 480/10
В режиме GM доступны 128 стандартных мелодических тембров, стандартный набор ударных и стандартные контроллеры/RPN. В режиме XG доступны дополнительные банки, контроллеры, NRPN и SysEx.
Выбор банков осуществляется передачей обоих байтов номера; при этом старший байт (контроллер 0) задает тип банка, а младший байт (контроллер 32) - номер банка указанного типа. В XG определено четыре типа банков:
Совместимость стандартов по звучанию.
Общность инструментов внутри стандарта и между ними чаще всего подразумевает только совпадение номеров и основных звуковых характеристик. "Одинаковые" тембры на различных инструментах почти всегда имеют различную окраску, динамику, яркость, громкость по умолчанию и другие особенности, а "синтетические" тембры могут совершенно отличаться друг от друга. Кроме этого, у разных инструментов различается зависимость характера звука от силы удара по клавише, динамика работы MIDI-контроллеров, положения контроллеров по умолчанию и прочие "тонкие" параметры. Поэтому MIDI-партитура, подготовленная для конкретного инструмента, на других инструментах (даже внутри стандарта) часто звучит совершенно по-другому, и это необходимо учитывать при переносе партитур с между инструментами различных моделей. Единственным исключением из этого является стандарт XG, специально ориентированный на повторение особенностей звучания тембров во всех моделях устройств.
Хранение MIDI файлов на носителях.
Для хранения MIDI-партитур на носителях данных разработаны форматы SMF (Standard MIDI File - стандартный MIDI-файл) трех типов:
0 - непосредственно MIDI-поток в том виде, в каком он передается по интерфейсу.
1 - совокупность параллельных "дорожек", каждая из которых обычно представляет собой отдельную партию произведения, исполняемую на одном MIDI-канале.
В формате 1 имеется отдельная дорожка для каждого MIDI канала. В любом формате сохраняются все MIDI события, а также темп и размер. Файл формата 1 также сохраняет названия дорожек.
В основном применяется формат 1, позволяющий хранить одно произведение в файле.
Кроме MIDI-событий, файл содержит также "фиктивные события" (Meta Events), используемые только для оформления файла и не передаваемые по интерфейсу - информация о метрике и темпе, описание произведения, названия партий, слова песни и т.п.
Пример MIDI устройства:
Проигрыватель MIDI файлов
Также к MIDI устройствам относят синтезатор, MIDI клавиатуры и т.д.