GM (MIDI)
読み:ジーエム
外語:GM: General MIDI System

 MIDIに付帯する推奨仕様の一つで、メーカー/機種を問わない、音源の動作や振舞い、音色配列等を共通化するためのフォーマット。
目次

概要
 General MIDI System Level 1(GM1)が、1991(平成3)年に社団法人音楽電子事業協会(AMEI)とMMA(MIDI Manufacturers Association)によって、推奨仕様(Recommended Practice)として採用された。
 その後はメーカー各社が独自拡張を盛り込んで楽器の高性能化を実現するが、メーカーの「囲い込み戦略」もあって仕様は共通化されていなかった。
 そこで、1999(平成11)年に、AMEIとMMAは「GM2」フォーマットを新たな推奨仕様(RP024)として策定した。

特徴

GM1/GM2
 GM1では、基本的な音色などを定義した。GM2では、GM1で限界があった点の改良を施した。
 GM2は基本的にGM1に対する上位互換であり、次のような特徴がある。

音色
 GM誕生前は、音色番号1から128までに、各メーカーが独自に音色を割り当てていたため、異なるメーカー同士では交信に支障があった。
 音源にLAを採用した、いにしえの人気シンセサイザーMT-32などの時代が、まさに該当する。
 現在でも、様々なメーカー独自拡張が使われているが、全てがGM1互換(またはGM2互換)となっている。

拡張
 音色が128種類では、やはり不足した。またGM1にはエフェクトに関する規定が無かったので、これも拡張として要求された。
 そこで、次のようなものが作られた。
 GS、XG、それぞれ更なる拡張やサブセットの仕様が作られている。
 音色については、バンク切り替えという方法で拡張されている。

データバイト
 8ビットのデータのうち、1バイト目がMSB(ビット8)が0のものが「データバイト」である。
 「ノート・ナンバー」などと呼ばれる、「音の高さ(ピッチ)」「音の強さ(ベロシティ)」といった情報は、データとして送られる。
 なお、値と音は、次のように対応する。
 中央(4オクターブ)のド(C4)を60として、C-1からG9までの128音階を表現できる。
 一般的な88鍵ピアノではA0からC8の範囲なので、充分な範囲を網羅している。

ステータスバイト
 8ビットのデータのうち、1バイト目がMSB(ビット8)が1のものが「ステータスバイト」である。様々な制御をするために使われる。
 1バイト目がステータス、必要に応じて第2バイト、第3バイトのオプションが付く。第2バイト以降は、MSBは常に0で用いる。
 仕様上、使われているのは、次の範囲内である。

技術仕様
 ステータスバイトの主な仕様は次の通り。GM1/GM2のみならず、GSなどの独自拡張にも触れる。
 基本的な機能は次の通り。なお、用語についてはローランドの方式による。

チャンネル・ボイス・メッセージ
 ノート・オフ、ノート・オンを行なう機能(3バイトまたは3バイト×2)。

ポリフォニック・キー・プレッシャー
 キー・プレッシャーの設定を行なう機能(3バイト)。
 AnH kkH vvH

コントローラー、チャンネル・モード・メッセージ

機能
 3バイト形式で、次の通り。
 BnH xxH yyH
 xxにコントローラー・ナンバー、yyに設定する値を入れる。
 様々な機能が、メーカー独自拡張として存在している。

コントロール・チェンジ
 音色のバンク切り替えをする機能(3バイト×2)。
 BnH 00H mmH
 BnH 20H llH
 GSフォーマットとXGフォーマットで互換性がない。音色の番号の対応が違うのはもちろんのこと、MSB/LSBの扱いすら異なる。
 GSの場合は、MAPと呼ばれる階層を持ち、その中にバンク番号に相当するバリエーション番号を持つ。MAPはLSBで、バリエーションはMSBに、それぞれセットする。
 XGの場合は、ボイス・タイプを持ち、その中にバンク・セレクトを持つ。ボイスはMSBに、バンクはLSBに、それぞれセットする。
 つまり、GSとXGでは、値をセットする場所が逆になっている。

プログラム・チェンジ
 音色の変更を行なう機能(2バイト)。
 CnH ppH

チャンネル・プレッシャー
 チャンネル・プレッシャーの変更を行なう機能(2バイト)。
 DnH vvH

ピッチ・ベンド・チェンジ
 ピッチ・ベンド値の変更を行なう機能(3バイト)。
 EnH llH mmH

システム・リアルタイム・メッセージ
 アクティブ・センシングは、次の1バイトである。
 FEH

システム・エクスクルーシブ・メッセージ
 楽器に対する、独自の情報を与える時に使う。楽器ごとに仕様は異なる。
 F0H <データバイト(iiH、ddH、………、eeH)> F7H
 F0Hに始まり、必要なデータ(不定長)を与え、F7Hで終える。
 例えば、次のような用途に使う。
 「ユニバーサル・リアルタイム・システム・エクスクルーシブ・メッセージ」の用例は次の通り。

再検索