General MIDI(ジェネラル・ミディ)とは、基本的な音色マップとコントロールチェンジなどを規定したMIDIの統一規格である。略称はGM。

## 概要

GMが制定される前、MIDIの音色マップやコントロールチェンジはMIDI音源のメーカーや機種毎に違っており、他の製品とは基本的に互換性が無かった。例えば、PC(Program Change)の1番にはA社のMIDI音源ではピアノの音色が割り当ててあるが、B社の製品では弦楽器が割り当てられている、ということが多々あった。これにより、違うメーカーのMIDI音源で制作した曲データは、別のMIDI音源では作者の意図しない演奏をすることがあるという問題があった。こういった互換性の問題を解決するために、1991年に日本MIDI評議会(現在の音楽電子事業協会)とMIDI Manufacturers Association (MMA) が、既にローランド社が推進していたGSフォーマットから、他社と共有できる部分を選択的に取り出し、GMが制定された。したがってGSとGMに規格上の直接的な関係はないが、事実上GMはGSの下位規格であると解することができる。すなわちGM用に作成されたスコアはGSでも再生できる可能性が高いが、逆は難が生じる場合があることから、GMが制定された当時の、MIDI音源に対応するPCゲームには、GS音源を推奨するタイトルが多かった。

GMには、GMマップと呼ばれる音色マップ、コントロールチェンジ、RPNやGMシステムエクスクルーシブなどが決められており、同時発音数についても記述がある。

GSやGM以外の規格としては、ヤマハが推進しているXG、そしてXGフォーマットの簡易版 XGLite などがある。ほとんどの規格がGMを拡張した規格であるため、GMからみれば上位互換の規格である。

現在はGMの拡張規格であるGM2 (General MIDI 2) がある。しかし、演奏データのMIDIではなくMP3など「音」そのものの配信が手軽にできるようになったこと、MIDIからオーディオへの制作環境の変化、専用音源としてGM規格と互換性のないSoundFontやソフトウェア・シンセサイザーの普及、GM1におけるSC-55mkIIのような標準音源がないこと、GM2で規定されている項目が、GSやXGより少なく、GS/XGのほうが表現豊かな演奏データを作成できるという等の理由から、GM2はそれほど普及していない。

## 必須最低要件

GM1互換機器は、以下の要件を満たさなければならない。

- 同時発音数24(メロディー16、パーカッション8を含む)
- ベロシティー(音の強さ/音の速さ)の命令に対応。
- 16チャンネル使用可能(うち、チャンネル10番はパーカッション用に予約)
- 各チャンネルでの同時発音対応。

## パラメータ

GM対応機器は、プログラムチェンジとコントロールチェンジ・イベントの為に、以下の規定にも従わなければならない。

### Program Change events

この表は、楽器音とProgram Change番号の対応を示す。

### Percussion notes

GMでは10チャンネルは、パーカッションのために予約されている。このチャンネルはプログラムが音色変更命令を送っても常にパーカションパートとなり、各ノートナンバーには異なる楽器が割り当てられている。この、ノートナンバーに対する打楽器割り当て表をドラムマップ(drum map)と呼ぶことがある。

### Controller events

GMでは再生時に受信すべきいくつかのコントローラを規定している。

| No. | 機能 |
| --- | --- |
| 1 | モジュレーション (Modulation) |
| 6 | データエントリ MSB (DataEntryMSB) |
| 7 | ボリューム (Part Level) |
| 10 | パンポット (Part Panpot) |
| 11 | エクスプレッション (Expression) |
| 38 | データ エントリ LSB (DataEntryLSB) |
| 64 | サステイン (Hold1) |
| 100 | RPN LSB |
| 101 | RPN MSB |
| 120 | 消音 (AllSoundOff) |
| 121 | リセット・オールコントロール (ResetAllControl) |

### RPN

RPNとは、Registered Parameter Numbers の略称で、主に音色自体の変更などに用いられる、コントロール チェンジ・イベントの一種である。

RPN パラメータの設定法(数字は十進数)。

1. CC:101 (RPN LSB) と CC:100 (RPN MSB) を送信し、変更するパラメータを指定する
2. CC:6 (DataEntryMSB) を送信し、パラメータに値を設定する

これだけではいつでも CC:6 を送信することで値を変更できるので、NULL 値を最後に送信することが慣例になっている。具体的には CC:101、CC:100 の両方に 127 を送信する。

以下のグローバルRPNは標準化されている。

| MSB | LSB | 設定パラメータ | 説明 |
| --- | --- | --- | --- |
| 0 | 0 | Pitch Bend Sensitivity (ベンド幅) | CC:130 (Pitch Bend) の値が最大(最小)のとき、どれだけ音程が 変化するかを半音単位で設定する。(0 ~ 24) |
| 0 | 1 | Channel Fine Tuning | パートの音程を半音の 1 / 8192 単位で調整する。(-8192 ~ 8191) |
| 0 | 2 | Channel Coarse Tuning | パートの音程を半音単位で調整する。64を基点として増減させる。 (40 ~ 88) |
| 0 | 3 | Tuning Program Select | ほとんど使われない |
| 0 | 4 | Tuning Bank Select | ほとんど使われない |
| 0 | 5 | Modulation Depth Range | CC:1 (Modulation) の変化幅を設定する。GM2で採用された。 |
| 127 | 127 | RPN NULL | CC:6 (Data Entry MSB)、CC:38 (Data Entry LSB)を無効化する |

例:ピッチベンドレンジを 12 にしたい場合

### システム エクスクルーシブ メッセージ

GM では以下のシステム エクスクルーシブメッセージを規定している。

## General MIDIの問題点

前述のような理由で定められた統一規格ではあるが、問題点もある。

GM規格では音色の並び方やコントロールチェンジの種類が決められているが、音色そのものについてやコントロールチェンジによる変化量などについては、各 MIDI 音源メーカーの独自性が損なわれる可能性があるとされ、厳密には定められていない。そのため GM 規格に準拠したデータであっても、作者の意図したように再現されない可能性も少なからずある。

その他にも、最大同時発音数が後発の機器であるほど増やされていることや、エフェクトや音量の変化量などが各社で異なること、ユニバーサル・エクスクルーシブなどの拡張機能への対応の有無など問題は多く、十分とは言えないことも多い。

すなわち、同じ高さの鍵盤を弾いても実際に鳴る音のオクターブは選んでいる楽器の種類によって異なる場合があるので注意する。