Стандарты MIDI: GM, GS, XG, GM2

== Вступление от Очень злого редактора ==
Аббревиатура MIDI расшифровывается как Musical Instrument Digital Interface. Впрочем, если для Вас это - открытие, то дальше читать особого смысла нет. :)
Чем же интересна эта статья, от нашего постоянного автора, Сергея Котова, специализирующегося на обзорах профессионального MIDI-оборудования? В отличие от тысячи подобных материалов данная статья не цитирует спецификации по электрическому строению сигналов или соответствия номеров именам GM-инструментов. Вместо этого читателю (компьютерному музыканту или просто любителю экспериментов с MIDI-файлами), предлагается ознакомится с некоторыми конкретными практическими сведениями и рекомендациями.
Практически все современные электронные музыкальные инструменты (в том числе и звуковые карты) имеют управление по MIDI. Подробно об этом цифровом интерфейсе уже неоднократно писалось и в печатных изданиях и в электронных ресурсах. Смотрите, например, статью Описание интерфейса MIDI на сайте iXBT. Тем не менее, обычно рассматривается лишь один из существующих стандартов - General MIDI (GM), в то время как уже довольно давно существуют два расширения этой спецификации: GS, предложенный фирмой Roland и XG от фирмы Yamaha. Кроме того, начинает продвигаться новый общий стандарт GM2, предложенный в 1999 году MMA (MIDI Manufacturers Association).
Целью данной справочной статьи является сравнение возможностей, предоставляемых каждой из перечисленных спецификаций, что поможет заинтересованному читателю полнее использовать их особенности или наоборот, создавать MIDI-файлы, совместимые со всеми стандартами. Возможно, эта статья поможет сделать более разумный выбор при покупке музыкального оборудования из спектра, представленного сегодня на рынке. Предполагается, что читатель знаком с основами формата MIDI.
== General MIDI (GM) ==
Первый общий стандарт был предложен в 1991 году ассоциацией производителей MIDI-оборудования. Он объединил изделия разношерстных производителей под именем General MIDI (System) Level 1. Сейчас его поддерживает абсолютное большинство моделей электронных синтезаторов, звуковых карт и клавиатур. Так как требования этого стандарта уже давно морально устарели, то, обычно, современные электронные инструменты поддерживают его лишь для базовой совместимости.
GM-файлы звучат на различных моделях существенно по разному. Дело в том, что определяя количество и состав мелодических инструментов не были точно описаны тембровые характеристики GM-инструментов. Поэтому, если для легкой музыки с традиционным составом оркестра звучание более-менее схоже, то, если задействуются инструменты из таких групп, как Synth Pad, Sound Effects и некоторых других, конечный результат может быть обескураживающим.
== GS и XG ==
Два похожих друг на друга стандарта предложили фирмы Roland и Yamaha. GS начал развиваться в 1991 году сразу за GM и в последующем неоднократно расширялся в связи с выпуском новых продвинутых моделей. XG от Ямахи начал активно продвигаться в 1996 году и при его разработке видимо были учтены наработки Роланда. Спецификация XG отличается огромным количеством настроек эффект-процессора.
== General MIDI 2 (GM2) ==
В 1999 году MMA наконец "родила" расширение GM, получившее наименование General MIDI Level 2 (GM2). В новом стандарте расширили полифонию и палитру доступных инструментов до 256, добавили ряд новых контроллеров. В GM2 прослеживается влияние стандартов Роланда и Ямахи. Несмотря на соглашение между этими фирмами General MIDI Level 2 пока не получил широкого распространения.
== Несколько мифов ==
Довольно часто можно слышать о "плохом качестве MIDI-музыки". MIDI-файл - не музыка, это набор команд по управлению электронными музыкальными инструментами и ничего более. Вспомним классический духовой орган. Здесь исполнитель посредством сложнейшей механики управляет подачей воздуха в комбинации звучащих труб. MIDI - электронный аналог такой механики. Это инструмент, при помощи которого исполнитель реализует свои замыслы. Поэтому, совершенно бессмысленно говорить о качестве MIDI, имеет место лишь разговор о возможностях управления, предоставляемого этим цифровым интерфейсом.
"XG лучше звучит чем GM". Да, спецификация XG предоставляет больше документированных возможностей по управлению синтезом звука, но это не значит, что электронные инструменты от Ямахи лучше других GM совместимых устройств. У XG есть преимущество в однообразии звука и управления различными моделями устройств, от самых дешевых (звуковушки серии 7xx за $10-20) до самых дорогих (MU128), но к качеству самого звука это отношения почти не имеет.
"GM и его последующие дополнения единственно возможные способы управления электронными инструментами". MIDI, вообще-то, проектировался с расчетом на разработчиков и программистов электронных инструментов, но не для самих музыкантов. У клавишных синтезаторов и большинства внешних модулей премудрости управления для исполнителя реализованы через удобный внешний интерфейс, а MIDI скрыто внутренней реализацией и проявляется на этапе записи (чтения) в секвенсор внешнего устройства, которым сейчас обычно является компьютер. Поэтому, используя качественный клавишный синтезатор можно вполне обходиться без знания удручающих шестнадцатеричных кодов MIDI-сообщений. Для звуковых карт, к сожалению, точное знание спецификации MIDI изначально была и есть необходимость. Отсутствие физических органов управления (ручек, слайдеров и т.п.) принуждает изучать их моделирование с помощью MIDI-контроллеров и Sysex-сообщений. Рисованные софтовые синтезаторы здесь помогают, но не заменяют знания внутренностей MIDI. Тем не менее, возможно создание удобной для пользователя надстройки или даже замены формата MIDI-сообщений. К сожалению, пока за это никто не берется.
== Общие характеристики ==
Каждый "приличный" MIDI-файл содержит короткое Sysex-сообщение, инициализирующее MIDI устройство. По виду этого сообщения можно определить, какая спецификация должна использоваться для проигрывания файла.
GM 	GM System On 	F0 7E 7F 09 01 F7
GS 	GS Reset 	F0 41 10 42 12 40 00 7F 00 41 F7
XG 	XG System On 	F0 43 10 4C 00 00 7E 00 F7
GM2	GM2 System On	F0 7E 7F 09 03 F7
Ниже в таблице сведены глобальные характеристики указанных стандартов:
Параметр 	GM 	GS 	XG 	GM2
Количество одновременно звучащих голосов (полифония)	24 	24 и выше 	32 и выше 	32
Количество MIDI-каналов 	16 	16, 32 	16, 32 	16
Номера каналов для набора ударных 	10 	Любые 	Любые 	10, 11
Количество мелодических инструментов 	128	226 и выше	480 и выше	256
Количество наборов ударных 	1 	9 и выше 	9 и выше 	9
Поканальный афтертач 	Да 	Да 	Да 	Да
Полифонический афтертач 	Нет	Да 	Да 	Нет
Для GS и XG возможны различные значения параметров в зависимости от конкретной реализации MIDI-устройства, например, количество доступных каналов может достигать 32, количество инструментов у старших моделей - свыше тысячи.
== Список контроллеров (Control Changes) ==
В таблице обозначены:
: X - реакция на функцию (контроллер) предусмотрена стандартом;
: O - функция (контроллер) не задействована;
: * - не для всех моделей (минимальная конфигурация не предусматривает). 
Номер	Наименование 	GM	GS	XG	GM2
0 	Bank Select MSB (Выбор банка) 	O 	X 	X 	X
1 	Modulation Depth (Глубина модуляции) 	X 	X 	X 	X
5 	Portamento Time (Длительность портаменто) 	O 	X 	X 	X
6 	Data Entry MSB (Ввод данных) 	X 	X 	X 	X
7 	Channel Volume (Громкость канала) 	X 	X 	X 	X
10 	Pan (Панорама) 	X 	X 	X 	X
11 	Expression (Экспрессия) 	X 	X 	X 	X
32 	Bank Select LSB (Выбор банка) 	O 	X 	X 	X
38 	Data Entry LSB (Ввод данных) 	X 	X 	X 	X
64 	Hold 1 (Удержание) 	X 	X 	X 	X
65 	Portamento On/Off (Вкл/Выкл портаменто) 	O 	X 	X 	X
66 	Sostenuto (Выборочное удержание) 	O 	X 	X 	X
67 	Soft ("мягкий звук" - левая педаль фортепиано) 	O 	X 	X 	X
71 	Harmonic Content (Гармоники, резонанс) 	O 	X*	X 	X
72 	Release Time (Время затухания звука) 	O 	X*	X 	X
73 	Attack Time (Время атаки звука) 	O 	X*	X 	X
74 	Brightness (Яркость, частота среза фильтра) 	O 	X*	X 	X
75 	Decay Time (Время спада после атаки звука) 	O 	X*	O 	X
76 	Vibrato Rate (Частота вибрато) 	O 	X*	O 	X
77 	Vibrato Depth (Глубина вибрато) 	O 	X*	O 	X
78 	Vibrato Delay (Задержка вибрато) 	O 	X*	O 	X
84 	Portamento Control (Портаменто от последней ноты)	O 	X 	X 	O
91 	Reverb Send Level (Уровень ревебрации) 	O 	X 	X 	X
93 	Chorus Send Level (Уровень хоруса) 	O 	X 	X 	X
94 	Variation Send Level (Уровень вариации) 	O 	X*	X 	O
96 	Data Increment (Увеличение данных) 	O 	O 	X 	O
97 	Data Decrement (Уменьшение данных) 	O 	O 	X 	O
98 	NRPN LSB (незарегистрированный № параметр) 	O 	X 	X 	O
99 	NRPN MSB (незарегистрированный № параметр) 	O 	X 	X 	O
100 	RPN LSB (зарегистрированный № параметр) 	X 	X 	X 	X
101 	RPN MSB (зарегистрированный № параметр) 	X 	X 	X 	X
120 	All Sounds Off (Выключить звук) 	O 	X 	X 	O
121 	Reset All Controllers (Инициализация) 	X 	X 	X 	X
123 	All Notes Off (Выключить все ноты) 	X 	X 	X 	X
124 	Omni Off (Выкл. режим Omni) 	O 	X 	X 	X
125 	Omni On (Вкл. режим Omni) 	O 	X 	X 	X
126 	Mono (Режим моно) 	O 	X 	X 	X
127 	Poly (Полифонический режим) 	O 	X 	X 	X
Интерпретация функций контроллеров выбора банка MSB и LSB в стандартах GS и XG различна. По контроллеру с номером 0 (Выбор банка по MSB) в GS можно выбрать одну из вариаций основного GM-инструмента, а в XG это выбор дополнительного, часто нестандартного банка инструментов (здесь обычно располагаются инструменты PLG, дополнительные наборы ударных и т.д.). По контроллеру 32 (Выбор банка по LSB) в GS можно выбрать один из основных моделей GS тон-генератора (SC-55, SC-88, SC-88Pro, SC-8820).
Выбор конкретной модели обусловлен тем, что разные версии инструментов от Роланда могут звучать немного по разному (например Grand Piano SC-55 заметно отличается от Grand Piano SC-8820). В XG по контроллеру 32 выбирается дополнительные вариации основных GM-инструментов. А в остальном, современный GS отличается от XG только наличием управления вибрато, которое в XG вынесено в NRPN и реакцией на контроллер 75, управляющий временем спада (decay) после фазы атаки звука.
== Зарегистрированные номера параметров (RPN) ==
В таблице обозначены:
: X - реакция на функцию (параметр) предусмотрена стандартом;
: O - функция (параметр) не задействована. 
Номер	Наименование 	GM	GS	XG	GM2
0 	Pitch Bend Sensitivity (Чувствительность колеса модуляции)	X 	X 	X 	X
1 	Channel Fine Tune (Тонкая подстройка) 	X 	X 	X 	X
2 	Channel Coarse Tune (Грубая подстройка) 	X 	X 	X 	X
3 	Modulation Sensitivity (Чувствительность к модуляции) 	O 	X 	O 	X
127 	Null 	O 	X 	X 	X
== Незарегистрированные номера параметров (NRPN) ==
В таблице обозначены:
: X - реакция на функцию (параметр) предусмотрена стандартом;
: O - функция (параметр) не задействована;
: * - параметры повторяют одноименные контроллеры;
: xx - номер ударного инструмента.
Номер 	Наименование 	GM	GS	XG	GM2
01 08 	Vibrato Rate (Чувствительность вибрато) 	O 	X 	X 	O
01 09 	Vibrato Depth (Глубина вибрато) 	O 	X 	X 	O
01 10 	Vibrato Delay (Задержка вибрато) 	O 	X 	X 	O
01 32 	Filter Cutoff Freq (Частота среза фильтра)* 	O 	X 	X 	O
01 33 	Filter Resonance (Резонанс фильтра)* 	O 	X 	X 	O
01 99 	Attack Time (Время атаки звука)* 	O 	X 	X 	O
01 100	Decay Time (Время спада после атаки звука)* 	O 	X 	X 	O
01 102	Release Time (Время затухания звука)* 	O 	X 	X 	O
20 xx 	Drum Filter Cutoff Freq (Частота среза для ударных) 	O 	O 	X 	O
21 xx 	Drum Filter Resonance (Резонанс для ударных) 	O 	O 	X 	O
22 xx 	Drum Attack Time (Время атаки звука для ударных) 	O 	O 	X 	O
23 xx 	Drum Decay Time (Время спада для ударных) 	O 	O 	X 	O
24 xx 	Drum Pitch Coarse (Грубая настройка высоты звука ударных)	O 	X 	X 	O
25 xx 	Drum Pitch Fine (Тонкая настройка высоты звука ударных) 	O 	O 	X 	O
26 xx 	Drum Level (Уровень громкости для ударных) 	O 	X 	X 	O
28 xx 	Drum Pan (Панорама для ударных) 	O 	O 	X 	O
29 xx 	Drum Reverb Send Level (Ревебрация для ударных) 	O 	X 	X 	O
30 xx 	Drum Chorus Send Level (Хорус для ударных) 	O 	X 	X 	O
31 xx 	Drum Variation Send Level (Эффект вариации для ударных) 	O 	X 	X 	O
GM2 не предусматривает управление по NRPN (на то и название!). В XG, в отличие от GS, добавили тонкие, но вполне востребованные настройки для ударных инструментов.
== Системные сообщения (SysEx) ==
Различных SysEx сообщений в GS и XG огромное количество. Многие из них повторяют приведенные выше контроллеры. В таблице ниже системные сообщения сгруппированы по типам. Опущены специализированные SysEx, характерные для конкретных (продвинутых) моделей.
В таблице обозначены:
: X - реакция на функцию предусмотрена стандартом;
: O - функция не задействована;
: * - не для всех моделей (минимальная конфигурация не предусматривает);
: ** - реализовано недостаточно полно.
Наименование 	GM	GS	XG	GM2
System On (Reset) (Инициализация) 	X 	X 	X 	X
Master Volume (Громкость всех каналов) 	X 	X 	X 	X
Master Tuning (Общая подстройка) 	O 	X 	X 	X
Reverb Type (Выбор типа ревебрации) 	O 	X 	X 	X
Reverb Parameters (Настройки ревебрации) 	O 	X 	X 	X**
Chorus Type (Тип хоруса) 	O 	X 	X 	X
Chorus Parameters (Настройки хоруса) 	O 	X 	X 	X**
Variation & Insertion Type (Типы Вариация и Вставка)	O 	X*	X 	O
Var & Ins Parameters (Настройки эффектов) 	O 	X*	X 	X
В строки Variation & Insertion включены все эффекты, не относящиеся по типу к реверберациям и хорусам (дисторшн, тремоло и пр.).
Как уже говорилось выше, XG отличается массой настроек эффект-процессора, но последние GS модели (8820, 8850) довольно близко подошли к спецификации от Ямахи.
GM2 обеспечивает базовую функциональность управления реверберацией и хорусом. Другие типы эффектов не предусмотрены.
== Выводы ==
Спецификация GM давно устарела. Все современные модели звукосинтезирующих устройств, носящие логотип GM, так или иначе её превосходят, особенно в части управления эффектами. Спецификация GM2 зафиксировала существующее положение дел и вполне может использоваться при проектировании недорогих SamplePlayBack-устройств.
GS и XG по управлению довольно близки друг к другу, но состав инструментов у них существенно различен, что мешает переносимости GS и XG MIDI-файлов. Только несколько моделей от Корга (!) совмещают в себе стандарты GS и XG (N1, 5, 5ex).
Спецификации MIDI прямо не влияют на качество звука. Нужно только учитывать, что и GS, и XG имеют общность управления и тембров для разного спектра моделей, от дешевых до дорогих. Это позволяет, начав работу (развлечение) с малого, затем перейти на более стоящие вещи, не растеряв багаж своих наработок.
Author: Сергей Котов (kotov@rosagrosnab.ru)
Date: 19 октября 2001 года
ID: 03624
Category:Звук