General MIDI или GM — стандартизированная спецификация для электронных музыкальных инструментов, отвечающих на MIDI-сообщения. Стандарт GM был разработан Американской Ассоциацией Производителей MIDI (MIDI Manufacturers Association) совместно с Японским Комитетом По Стандартам MIDI (Japan MIDI Standards Committee) и впервые продемонстрирован в 1991 году.

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

GM-инструменты имеют возможность:

Параметры интерпретации

GM-инструменты должны также соблюдать следующие соглашения для событий программы и контроллера:

События изменения программы

В MIDI звук инструмента или «программа» для каждого из 16 возможных MIDI-каналов выбирается с сообщением Program Change, имеющим параметр Program Number. В представленной ниже таблице показано, какой звук инструмента соответствует каждому из 128 возможных номеров программ только для GM. Есть 128 номеров программ. Цифры могут отображать как значения от 1 до 128, так и от 0 до 127. Нумерация от 0 до 127 чаще всего используется, в основном, только встроенным синтезатором, в то время как подавляющее большинство MIDI-устройств, цифровых звуковых рабочих станций и профессиональных MIDI-секвенсоров отображают номера программ, как показано в таблице, от 1 до 128.

Пианино

Хроматическая перкуссия

Орган

Гитара

Бас

Струнные инструменты

Музыкальный коллектив

Медные духовые инструменты

Язычковые духовые инструменты

Деревянные духовые инструменты

Синтезаторный ведущий голос

Синтезаторный подголосок

Синтезаторные эффекты

Этнические музыкальные инструменты

Ударные музыкальные инструменты

Звуковые эффекты

Перкуссия

В стандарте GM ударные инструменты зарегистрированы только на 10-м канале. Ноты, записанные на канале 10, всегда создают звуки перкуссии при передаче на клавиатуру или синтезаторный модуль, который использует стандарт GM. Каждое из 128 различных возможных номеров заметок коррелирует с уникальным ударным инструментом, но шаг звука не относится к номеру ноты.

Если MIDI-файл запрограммирован на общий MIDI-протокол, результаты будут предсказуемы, но точность воспроизведения звука может варьироваться в зависимости от качества синтезатора GM:

Контроллер событий

В MIDI настраиваемые параметры для каждого из 16 возможных MIDI-каналов могут быть установлены с помощью сообщения Control Change, которое имеет параметр Control Number и параметр Control Value. GM также указывает, какие операции должны выполняться несколькими номерами управления:[1]

1 Колесо модуляции
7 Громкость
10 Баланс
11 Экспрессия
64 Педаль сустейна
100 Зарегистрированный номер параметра LSB
101 Зарегистрированный номер параметра MSB
121 Все контроллеры выключены
123 Все ноты выключены

RPN

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

Настройка зарегистрированных параметров требует отправки (числа десятичные):

  1. два сообщения смены управления с использованием номеров управления 101 и 100 для выбора параметра, за которым следует
  2. любое количество сообщений ввода данных одного или двух байтов (MSB = Controller # 6, LSB = Controller # 38) и, наконец,
  3. сообщение «Конец RPN»

Следующие глобальные номера зарегистрированных параметров (RPN) стандартизированы[2] (параметр задается парой RPN LSB / MSB, а значение устанавливается с помощью пары LSB / MSB ввода данных):

0,0 Диапазон изменения высоты тона
1,0 Канальная тонкая настройка
2,0 Канальная грубая настройка

Например: последовательность управления RPN для установки грубой настройки на A440 (пар. 2, значение 64):
101: 0, 100: 2, 6:64, 101: 127, 100: 127

Исключительные сообщения системы

Определяются два сообщения GM System Exclusive («SysEx»): один для включения и отключения режима общей совместимости MIDI (для синтезаторов, которые также имеют не-GM-режимы); а другой - для установки основного тома синтезатора.

Расширения GS

GS — расширение стандарта General MIDI, в котором добавлено несколько проприетарных расширений. Наиболее примечательным дополнением была способность обращаться к нескольким банкам программ (звуков инструмента) с помощью дополнительной пары контроллеров Bank Select, чтобы указать до 16384 «вариационных» звуков (cc#0 - Bank Select MSB, а cc#32 - Bank Выберите LSB). Другими наиболее примечательными особенностями были 9 комплектов ударных с 14 дополнительными звуками ударных, одновременные комплекты ударных - до 2 (каналы 10/11), сообщения смены управления для управления уровнем отправки блоков звукового эффекта (cc#91-94), ввода дополнительные параметры (cc#98-101), portamento, sostenuto, мягкая педаль (cс#65-67) и специфичные для модели сообщения SysEx для установки различных параметров синтезатора.

GS был представлен в 1991 году линейкой Roland Sound Canvas, которая также была первым в России модулем синтезатора General MIDI.

General MIDI Level 2

В 1999 году появилась обновленная версия стандарта GM, включающая в себе еще больше контроллеров, патчей, RPN и SysEx-сообщений в попытке согласовать конфликтующие и проприетарные дополнения Roland GS и Yamaha XG. Вот краткий обзор изменений GM2 по сравнению с GM / GS:

Дополнительные мелодические инструменты можно получить, установив значения CC#0 на 121, а затем используя CC#32, чтобы выбрать банк до изменения программы.

Примечания

  1. MIDI Messages technical specification Архивная копия от 12 января 2016 на Wayback Machine Table 3 - Control Change Messages (Data Bytes)
  2. General MIDI 1, 2 and Lite Specifications. Дата обращения: 10 января 2018. Архивировано 3 января 2012 года.

Официальные организации по MIDI стандартам