Описание интерфейса MIDI. MIDI – это стандарт цифровой звукозаписи на формат взаимодействия и обмена данными между музыкальными инструментами электронного типа


Такие же гнезда есть и на 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-частную мультитембральность.

Что такое 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 (Musical Instrument Digital Interface) - проще говоря, цифровой интерфейс музыкальных инструментов . Если все равно не понятно, то слушайте мой рассказ.
Когда в музыку стали проникать компьютеры, то разработчики электронных инструментов подумали: "А не возложить ли нам часть сложного управления электромузыкальными инструментами (ЭМИ) на ЭВМ?" Что это сулило? Как Вам известно, составы музыкальных команд с течением времени все уменьшались в своем количестве и уменьшались. Это, конечно, дает свободу творчеству, но композитор хочет использовать при аранжировке своей песни не один, а пару десятков разных инструментов. Кроме того он не хочет ждать репитиции большого оркестра, чтобы услышать свою новую идею. Зачастую у него и нет никакого оркестра. Значит неплохо было бы поиметь возможность запрограммировать партитуры, а потом автоматически их воспроизвести.
Всяких разных ЭМИ к тому времени было просто валом. Даже к некоторым из них можно было проводом подключить "электрического музыканта" (этакий ящичек с лампочками и кнопочками, называемый секвенсером ) специальным проводом, который посылал команды типа "нажать определенную ноту". Но главная проблема была в том, что "музыкант" от одной модели инструмента не подходил к другой.
Тогда было решено, создать единый интерфейс (заранее оговоренный набор команд управления и способ соединения между устроиствами) подключения электронных музыкальных инструментов к секвенсерам и между собой. Таким интерфейсом и стал MIDI. Теперь мы можем присоединить синтезатор Yamaha к секвенсеру Roland, и это будет работать. Кстати сейчас в основном в качестве секвенсера применяют компьютер.

Теперь рассмотрим, что еще позволяет нам делать MIDI, кроме передачи команд на нажатие нот.

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

    Например, мы создавали-создавали звуки на нашем синтезаторе и заполнили всю его память. Что нам теперь делать? По MIDI мы сможем передать содержимое памяти инструмента (или любого другого MIDI-устройства) в компьютер в виде блока данных (MIDI bulk dump ) и сохранить на жестком диске. По MIDI-же мы сможем загрузить данные с машины обратно в синтезатор.

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

Наверное Вы не раз уже встречали термин GENERAL MIDI ? Это стандарт, в котором оговорены номера контроллеров (ручка громкости у всех инструментов, отвечающих этому стандарту, всегда имеет номер 7, ручка "ревербератор" - 91 и т.д.), набор и порядок следования патчей (patch , звуков - например пианино имеет всегда номер 1, а церковный орган -20). Это не значит, что все синтезаторы, сделанные по стандарту General MIDI, будут играть одинаковыми звуками. Нет. На разных инструментах патч под номером 1 будет содержать пианино, но с разным качеством звучания. Иногда настолько плохим, что даже экспертам в этом вопросе трудно догадаться, что это за звук. В основном этот стандарт применяется для создания музыкального сопровождения к играм.
Кроме того, еще есть более расширенные по набору звуков стандарты GENERAL SOUND и XG .

Если мы имеем компьютер и несколько синтезаторов, на которых хотим играть в одной песне разные партии (ударные, соло, бас, фон), то все они должны быть подключены к одному MIDI-кабелю. Секвенсер (программа работающая на компьютере) передает в этот кабель команды для всех инструментов. Каким-же образом, спросите Вы, каждый из синтезаторов будет отличать команды, предназначенные лично ему? Для этого и существуют MIDI-каналы (MIDI channel).
Принцип действия, примерно, как в радиоприемнике. Ваш приемник принимает только ту радиостанцию, на которую Вы его настроите. Вот и представьте, MIDI-канал - это частота радиостанции (типа 104 и 4 FM), на которую настраивается приемник. В компьютере стоит 16 радиостанций с разными частотами, каждая из которых передает партию только своего инструмента, а в каждом синтезаторе - приемник, настроенный на радиостанцию, которая передает его партию. Радиоволны же идут не по воздуху, а через провод.
В общем-то, можно передавать любую партию по любому каналу. Правда в General MIDI принято для партии ударных использовать 10-й MIDI-канал.
В действительности же MIDI-каналы создаются безо всякого участия радиоволн. Мы присваиваем синтезатору адрес (номер MIDI-канала). А в начале каждой MIDI-команды передается номер канала синтезатора, которому она предназначена. Синтезатор принимает все команды, но выполняет только те, которые содержат номер его канала.

Что же это такое - MIDI? Для начала скажем так: MIDI (Musical Instrument Digital Interface - Цифровой интерфейс музыкальных инструментов) - это то, что позволяет нажать клавишу на одном синтезаторе и воспроизвести при этом звук другого.

И хотя MIDI может еще очень многое, мы начнем с этого простого примера.

MIDI-разъемы
Когда вы нажимаете клавишу C 3 (нота До третьей октавы) на одном синтезаторе, ваши действия переводятся в MIDI-сообщение, которое поступает на MIDI-выход (MIDI Out) этого инструмента. Если его MIDI-выход соединен с MIDI-входом (MIDI In) другого инструмента, то тот принимает это сообщение и выполняет те же действия, как будто клавиша была нажата на его клавиатуре, то есть воспроизводит ноту C 3.

Представим себе, что мы имеем три синтезатора (во всяком случае, попытаемся) и хотим с одного из них управлять двумя другими. Здесь вступает в действие третий разъем с веселым названием MIDI Thru (сквозной). Его задача - дублировать все сообщения, которые поступают на MIDI-вход данного инструмента. Таким образом, мы берем еще один MIDI-кабель, подключаем его к MIDI Thru второго синтезатора (так как именно на его MIDI-вход поступают сообщения) и к MIDI In третьего. Теперь вся информация, выходящая из MIDI-выхода первого инструмента, поступает на MIDI-вход второго и дублируется через сквозной MIDI-разъем на MIDI-вход третьего. Теоретически можно подключать бесконечное число инструментов таким образом, но на практике при соединении более трех происходят задержки сигнала и прочие неприятности. Если все же необходимо подключить несколько MIDI-инструментов, следует воспользоваться специальными устройствами: MIDI Thru Box или MIDI Patch Bay.

MIDI-каналы
Теперь у нас возникает первая проблема. Если мы нажмем клавишу на первом инструменте, нота будет звучать одновременно на всех трех. Если это и была наша цель, то она достигнута. А если мы хотим, чтобы звучал только один синтезатор? Кроме того, большинство современных синтезаторов - мультитембральные, то есть могут воспроизводить несколько тембров (звуков) одновременно.

Чтобы отделить MIDI-сообщения, предназначенные для одного синтезатора (или для одного тембра на этом синтезаторе), от сообщений другого, существуют 16 MIDI-каналов. Вы устанавливаете на первом синтезаторе звук пианино на MIDI-канале 2 (о том, как это делается, следует прочитать в руководстве пользователя для каждого инструмента), на втором синтезаторе - звуки баса и струнных на MIDI-каналах 5 и 8, а на третьем - барабаны на канале 10 (каналы можно устанавливать в любом порядке). Теперь вам надо переключать MIDI-каналы, по которым передает информацию первый синтезатор: включили на канал 2 - звучит пианино с первого синтезатора, на канал 10 - барабаны с третьего и т. д.

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

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

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

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

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

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

После записи всех необходимых партий пора приступить к окончательному сведению. Здесь MIDI может помочь в управлении громкостью, панорамой и другими параметрами звуков различных MIDI-инструментов. Многие компьютерные секвенсоры имеют для этих целей специальные редакторы, воспроизводящие на экране монитора реальные регуляторы (например, MIDI Manager в Steinberg Cubase). Некоторые пульты (например, Soundcraft Spirit Auto или Mackie CR 1604 с системой OTTO) позволяют аналогичным образом управлять громкостью своих каналов, таким образом, контролируя обычные инструменты.

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

Если у вас есть два инструмента, соответствующих стандарту MIDI Sample Dump (чаще всего это семплеры), вы можете передавать между ними семплы по MIDI. Это происходит довольно медленно, и вы не сможете передать пэтчи полностью (область клавиш, динамическое реагирование, огибающую), а только сами семплы. Тем не менее, и это может быть очень полезно.

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

Оценка статьи

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

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

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

Что такое MIDI-события?

Структурная схема MIDI-событий.

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

MIDI-события делятся на два вида:

  • Канальные (Channel). Такие события отправляют информацию на определенный канал устройства-приемника. Услышать канальное событие можно только при прослушивании канала, на который они отправлены. В случае, если эти каналы деактивированы, событие не услышать. Канальные события бывают двух видов: голосовые (Voice) и режимные (Mode);
  • Системные (System). Эти события влияют на работу всех компонентов приемника и передаются на все MIDI-каналы одновременно. Системные события бывают трех видов: общие (Common), реального времени (Real-Time) и эксклюзивные (Exclusive).

Каждое MIDI-событие состоит из трех байт информации. Первый байт (Status Byte) содержит специальный идентификатор события, передающий основные данные о воспроизведении звука. Второй байт (Data Byte 1) сообщает информацию о воспроизводимой ноте, ее высоте и положении в октаве. Третий байт (Data Byte 2) передает параметр Note Velocity - силу извлечения звука.

Что такое Note Velocity и зачем это нужно?

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

Параметр принимает значения от 0 до 127, где 0 - извлечения ноты не было, а 127 - звук извлечен с максимальной силой. Представление этой информации виртуальным инструментом или синтезатором зависит только от задумок разработчиков. Тем не менее, в 99% случаев виртуальный инструмент реагирует на параметр Note Velocity так же, как и реальный инструмент. Благодаря этому, MIDI может передавать особенности игры и звукоизвлечения.

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

MIDI-события System Common

Общие системные MIDI-события активно применяются в синтезаторах для передачи общей информации о воспроизводимых MIDI-файлах.

Среди информации, передаваемой общими системными событиями, выделяют:

  • Информацию о тональности (Tune Request). Когда музыкант изменяет тональность демо или MIDI-файла, на устройство передаются данные Tune Request;
  • Информацию о выбранной песне (Song Request). Выбрав файл для воспроизведения, на MIDI-устройство отправляется специальный набор байтов, указывающий на этот файл;
  • Информацию о позиции для воспроизведения (Song Pointer Position). Если пользователь хочет начать воспроизведение с определенной отметки, переход по файлу осуществляется при помощи этого подсобытия.
  • Информацию о длительности файла (MIDI Time Code). MIDI Time Code кодирует и передает данные о длительности проигрываемого файла.

MIDI-события System Real-Time

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

MIDI-события System Exclusive

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

MIDI-события Channel Mode

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

MIDI-события Channel Voice

Большая часть информации, генерируемой музыкантом при игре, относятся к канальным голосовым событиям (Channel Voice). События Channel Voice делятся на два типа: связанные со звуками и непрерывные. Группа Channel Voice состоит из 7 подсобытий:

  1. Note On - активация ноты, начало звука;
  2. Note Off - деактивация ноты, окончание звука;
  3. Monophonic (Channel) Pressure/Aftertouch - параметры силы нажатия клавиши или силы извлечения монофонического звука (эффект послекасания);
  4. Polyphonic (Key) Pressure/Aftertouch - параметры силы извлечения полифонического звука (эффект послекасания);
  5. Pitch Bend - изменение высоты звука;
  6. Program Change - изменение программы;
  7. Control Change/Continuous Controller - события потокового управления (127 штук), участвующие в управлении извлеченным звуком и обозначаемые при помощи сокращения CC.

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

Состав передаваемой на MIDI-устройство информации на примере канальных голосовых событий

MIDI-событие Первый байт (Status Byte) Второй байт (Data Byte 1) Третий байт (Data Byte 2)
Note On Начало воспроизведения ноты Какая нота будет извлечена Сила нажатия
Note Off Окончание воспроизведения ноты Какая нота будет извлечена Сила нажатия
Monophonic (Channel) Pressure Сила давления на клавишу -
Polyphonic (Key) Pressure Активация функции послекасания Какая нота будет извлечена Сила давления на клавишу
Pitch Bend Активация функции изменения высоты звука Значение, на которое повышается или понижается звук Исходное значение звука
Program Change Активация изменения программы Номер программы -
Control Change Активация потокового управления Вызов подсобытия CC Значение CC#

MIDI-события, связанные с нотами и звуками

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

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


Первое описание стандарта MIDI (скан документа).

Непрерывные MIDI-события

К непрерывным относятся подсобытия Pitch Bend, Control Change и два вида Aftertouch. Непрерывные сообщения объединяют информацию о том, как было сгенерировано MIDI-событие.

Эта информация поступает на MIDI-приемник постоянно, а значения параметров Pitch Bend, Control Change и Aftertouch изменяются постепенно во время генерации звука. В потоке информации непрерывных событий передаются сведения о громкости, высоте, тембре, резкости, ясности и других особенностях извлеченного звука.

Имитация эффекта вибрато на гитаре, звучание звука с определенным количеством сустейна, нарастание громкости звука и другие подобные сложные эффекты создаются при помощи Pitch Bend, Control Change и Aftertouch.

Aftertouch или эффект послекасания

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

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

Если Aftertouch-событие относится к типу Channel (Monophonic) Aftertouch, то на всю клавиатуру приходится один датчик давления, а параметры послекасания применяются сразу ко всем нотам. События Channel (Polyphonic) Aftertouch применяются к каждой клавише по отдельности.

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

Pitch Bend

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

У параметров Pitch Bend отсутствует нулевое значение: 0 не заглушает звук, а указывает на отсутствие изменения его высоты.

MIDI-события изменения программы

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


MIDI-события в окне Piano Roll в Logic Pro X.

MIDI-события потокового управления

Сообщения потокового управления (CC) - обширная категория из 127 разных типов событий. Все CC-события непрерывны и постепенно изменяют собственные значения для управления динамикой извлеченного звука.

Несмотря на большое количество CC-событий, активно используются далеко не все. Одни подсобытия заранее определяются разработчиками, другие доступны пользователям для свободного использования, третьи - не используются никогда. Среди самых популярных обычно выделяют пять подсобытий - CC#1, CC#7, CC#10, CC#11 и CC#64 (см. полный список событий потокового управления на сайте midi.org).

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

CC#7 и CC#10 отвечают за параметры громкости и панорамы. MIDI-устройства с поворотными регуляторами могут изменять громкость и значение панорамы в окне DAW через эти события. Во всех остальных случаях CC#7 и CC#10 не нужны.

Подсобытие CC#11 обозначается «Expression» и контролирует громкость исполнения. Самыми распространенными устройствами, поддерживающими это подсобытие, являются педали экспрессии (громкости) синтезаторов, MIDI-контроллеров, электропианино и электроорганов.

MIDI-событие CC#64 отведено под педаль демпинга MIDI-клавиатуры или синтезатора. Подсобытие реагирует на положение педали, присваивая ноте значение в пределах 0-63, если педаль поднята, и 64-127, если педаль опущена (зажата). Некоторые продвинутые MIDI-контроллеры, педали и виртуальные инструменты расширяют возможности подсобытия CC#64, позволяя применять техники игры с полуоткрытой педалью.