Снова о MIDI. Основы MIDI

Снова о MIDI (Основы MIDI)

Снова о MIDI (Основы MIDI)

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

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


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

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

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

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

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

Снова о MIDI (Основы MIDI)

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

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

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

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

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

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

Снова о MIDI (Основы MIDI)

последовательность шестнадцатеричных цифр (см. рис.), которую вы можете составить в любом редакторе 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-клавиатуры, в синтезаторе происходит не просто воспроизведение соответствующего семпла с нужной высотой, а более сложный процесс, который включает исполнение еще ряда команд.

Снова о MIDI (Основы MIDI)

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

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

Аббревиатура GM или надпись General MIDI означает, что в памяти синтезатора находится как минимум один банк (может быть и больше), из 128 программ плюс один банк ударных инструментов, состоящий из 44 пэтчей барабанов различного звучания, причем Снова о MIDI (Основы MIDI) каждой 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-частную мультитембральность.