MIDI

**MIDI**（ミディ、**M**usical **I**nstrument **D**igital **I**nterface）は、電子楽器の演奏データを機器間で転送・共有するための共通規格である。日本のMIDI規格協議会（JMSC、現在の社団法人音楽電子事業協会）と国際団体のMIDI Manufacturers Association（MMA）により策定され1981年に公開された。

## 概要
MIDIは音楽制作の現場で幅広く利用されている。MIDI規格に則って作成されたデータは、DAWをはじめとしたシーケンサーなどで再生・編集することができる。

物理的な送受信回路・インタフェース、通信プロトコル、ファイルフォーマットなど複数の規定からなる。MIDI 1.0の策定完了から38年後の2019年に、Ver.2.0となるMIDI 2.0の策定開始が発表された。2023年からMIDI検定を含む、MIDI 2.0の実用対応が本格化に開始。

MIDIデータは、音声データ（マイクなどで録音した音の波形をサンプリングしたもの）ではなく演奏情報（発音せよ、音の高さは - 、音の大きさは - 、といった楽器や音源へのメッセージ）であり、データサイズが小さく、また音楽の細部を容易に変更することができる。

電子楽器以外では劇場の舞台照明のコントロールなどにも応用されている。また、MIDI規格とパソコンの普及は、ホビーとしての音楽制作（DTM）を一般化した。

当初、MIDI規格は、ハードウェアとソフトウェアの両分野にまたがり策定された。ハードウェアの規格は、インタフェースや送受信回路・端子に関することであり、ソフトウェアの規格は、データフォーマット（機器同士がリアルタイム通信する際の規格であって、MIDIデータを保存流通させるファイルフォーマットとは異なる）に関することである。

その後、MIDIの普及に伴いRP（Recommended Practice、推奨実施例）という拡張規格が策定された。音色配列などを厳密に定めたGMシステムレベル1や、MIDIデータを保存流通させるファイルフォーマット、劇場の舞台照明をコントロールする規格（MIDIショーコントロール）が、このRPに含まれる。

MIDIはJIS（日本産業規格）によって以下のように規格化されている。
# X 6054-1 電子楽器デジタルインタフェース（MIDI）- 第1部：総則
# X 6054-2 電子楽器デジタルインタフェース（MIDI）- 第2部：プロトコル仕様

## ハードウェア規格

### 送信
31.25Kbps（±1%）の非同期方式シリアル転送を用いる。

### 接続
MIDI機器（ハードウェア）は5ピンのDINコネクタで接続するのが一般的である。両端に位置する1番ピンと3番ピンは現在の仕様上では使用されず、中央2番ピンはケーブルのシールド用に、4番、5番ピンがデジタル信号の伝送に使用される。MIDIケーブルの両端はどちらもオス端子で、シールドされたツイストペアケーブルとして設計される。

コネクタには、MIDI信号を受け取るMIDI IN、MIDI信号を送信するMIDI OUT、受信したMIDI信号をそのまま送信するMIDI THRUの3種類がある。機器パネル側は常にメス端子となる。や障害の連鎖防止のため、MIDI機器同士には電気的絶縁が規定されており、受信側内部では接地線の2番ピンは接続されず、信号はフォトカプラで受信される基本仕様となっている。フォトカプラを経由するたびに信号波形の再現性が下がるため、MIDI THRUを多段直列すると通信エラーが発生することもある。並列に複数のMIDI機器を接続する場合や、信号系統を簡単に切り替えたい時はMIDIパッチベイを用いるが、これを使うことにより多段時の通信エラーも回避できる。

MIDIはバスではない。MIDI IN端子とMIDI OUT端子が別々で用意されていることから判るように、MIDIケーブル間のデータは一方向に送信される。

後述するアクティブセンシング機能で、接続状態が良好か、断線していないかを常に判定しており、アクティブセンシングが途絶えたとき、お互いのMIDI機器はケーブルが抜けたと判定するように作られている。

現代には、MIDI IN、MIDI OUTを使わずRS-232C、USB、IEEE 1394などの規格を使った接続を行う機器も存在している。この場合、MIDIケーブルではなくこれらの規格のケーブル内をMIDI信号が通るため、転送に関して上記の通りではない。

### チャンネル
2本のMIDIケーブルを用い、お互いの機器のMIDI IN、MIDI OUTをそれぞれつないだ状態を1つの「システム」と捉える。このシステム毎に16のチャンネルが用意される。基本的にひとつのチャンネルにひとつの楽器（1パート）が割り当てられる。

これにより、1本のMIDIケーブルで16チャンネル分のデータを送信もしくは受信させることができる。例えば「1チャンネルのピアノと3チャンネルのギターを鳴らす」といったことである。16チャンネル分のデータは、後述する「チャンネルメッセージ」にて正確に分類され、相手機器の各チャンネルに届く。

それ以上のチャンネルを制御するためにはMIDIケーブルが複数本必要となり、MIDIデータのパート数（＝チャンネル数）によっては、複数のMIDI音源を用意する必要もでてくる。

## データフォーマット
### MIDIメッセージ
MIDI規格上のデータの送受信は、すべて**MIDIメッセージ**で行われる。MIDIメッセージは、複数のバイト（8ビット）で構成されている。「電子楽器の鍵盤を弾いたことで音が出る」という一連の流れもMIDIメッセージで制御されている。バイト単位で処理していくため、文言上では16進数を用い、数の後にHを付ける。

MIDIメッセージを効率よく送信するために、MIDIメッセージに使用されるバイトは「ステータスバイト」か「データバイト」の大きく2種類に分けられる。ステータスバイトとはMSB（Most Significant Bit）が「1」、すなわち80H - FFHまでの128個のバイトを指し、データバイトとはMSBが「0」、すなわち00H - 7FHまでの128個のバイトを指す。

MIDIメッセージは複数のバイトで構成されていると前述したが、これらの先頭は常にステータスバイトで始まり、ステータスバイトの後に任意の個数のデータバイトが続く。ステータスバイトでは、ノートオンやコントロールチェンジ、システムエクスクルーシブなどを定義する。データバイトは、ステータスバイトで定義したものについて、その内容や数値を指定するのに使用する。

ステータスバイトが80H - FFHのうち何であるかによって、「チャンネルメッセージ」、「システムメッセージ」に分かれる。

#### チャンネルメッセージ
チャンネルメッセージとは、特にチャンネルを指定して送信するMIDIメッセージのことである。チャンネルメッセージのステータスバイトは80H - EFHである。ここからさらに「チャンネルボイスメッセージ」、「チャンネルモードメッセージ」と分類される。

##### チャンネルボイスメッセージ

チャンネルボイスメッセージとは、音を鳴らす、止める、音色を変える、ピッチを変えるといった、音源の演奏に必要な情報に関する定義のことである。最大2つのデータバイトが続くことで、その内容・数値を決定する。

ステータスバイトの下位4ビットがMIDIチャンネル番号-1（0（0H）Hはチャンネル1、15（FH）はチャンネル16）を表している。

データバイトにて指定する**[[ノートナンバー]]**とは、最も低い音を0、最も高い音を127と割り当てた音の高さのことであり、半音刻みとなっている。中央ハにはノートナンバー60が割り当てられ、88鍵盤のピアノで出せる音域（A0 - C8の7オクターブと短3度）はノートナンバー21 - 108と割り当てられるので、MIDIではそれよりさらに広い音域（C-1 - G9の10オクターブと完全5度）をカバーできる。また、**ベロシティ**とは音の強さ（楽器で例えれば各弦や各鍵を弾く速さによって変化する音の強弱(強弱法））のことである。1 - 127までありメゾピアノ（mp）が64となり、127が最も強く、1が最も弱く、数値が0の場合は発音の終了（楽器で例えれば離鍵など）を表す。

なお、以下の説明では、これら0 - 127までの数字を、16進数で表記する。また、nはチャンネル番号を表わす。

; 8nH ノートオフ
: 音を止める命令。鍵盤楽器ではキーを離した時に送信される。ノートオフによって鳴っている音を止める。
: 第1データバイト - ノートナンバーを指定
: 第2データバイト - オフベロシティ値
; 9nH ノートオン
: 音を鳴らす命令。鍵盤楽器ではキーを押した時に送信される。この後ノートオフが送信されないままだと、音が鳴りっぱなしとなる。
: 第1データバイト - ノートナンバーを指定
: 第2データバイト - ベロシティ値
: なお「ノートオン・ベロシティ0」もノートオフと同じメッセージとみなされる。
; AnH ポリフォニック キープレッシャー
: 鍵盤楽器で、キーを押した状態でさらにその圧力を変化させた場合に（いわゆるアフタータッチ）、その圧力に応じて送信される。
: 第1データバイト - ノートナンバーを指定
: 第2データバイト - プレッシャー値
; BnH コントロールチェンジ
: 音量、音質など様々な要素を制御するための命令。
: 第1データバイト - コントロールナンバー（00H - 77H）を指定 - どのパラメータをコントロールするのか指定
: 第2データバイト - コントロール値 - コントロール番号にて指定した要素の大小や強弱を設定
: ただし第1データバイトが78H - 7FH（120 - 127）の場合はコントロールチェンジではなく、チャンネルモードメッセージとなる。
; CnH プログラムチェンジ
: 音色を変える命令。00H - 7FHで、最大128種類から音色を選択できる。
: 第1データバイト - プログラムナンバーを指定
: 第2データバイトは使用しない。
; DnH チャンネルプレッシャー
: 鍵盤楽器で、キーを押した状態でさらにその圧力を変化させた場合に、その圧力に応じて送信される。ポリフォニック キープレッシャーと違い、そのチャンネルの全ノートナンバーに対して適用される。
: 第1データバイト - プレッシャー値
: 第2データバイトは使用しない。
; EnH ピッチベンド
: 鳴っている音のピッチを変える命令。MSB（Most Significant Byte）128段階の1段階ずつをさらにLSB（Least Significant Byte）で128分割しているので、計16384段階の細かい指定ができる。シーケンサー上では、-8192 - 0 - 8191といった数値で表示することが多い。
: 第1データバイト - ピッチベンド値LSB
: 第2データバイト - ピッチベンド値MSB

ステータスバイト部のnには0H - FHが代入され、これは1チャンネル - 16チャンネルを表す。「90H 3CH 40H」というMIDIメッセージがあったとすると、これは「ノートオン、1チャンネル。3CH＝60なので中央ハを鳴らす。40H＝64なのでmpで鳴らす」という命令である。

##### チャンネルモードメッセージ
チャンネルモードメッセージとは、ある楽器は和音が出せるのか、16チャンネルは区別するのかしないのか、といったことを設定するための定義のことである。BnHで始まるがコントロールチェンジには含まれず、BnHのあとに78H - 7FHが続くと、チャンネルモードメッセージのいずれかと判断される。多くの場合、第2データバイトには00Hがダミーとして送信され、受信側も無視する。ステータスバイト部のnには0H - FHが代入され、これは1チャンネル - 16チャンネルを表す。
; BnH 78H オールサウンドオフ
: 該当するチャンネルの発音中の音を直ちに消音する。後述のオールノートオフより強制力が強い。
; BnH 79H リセットオールコントローラ
: 該当するチャンネルの全種類のコントロール値を初期化する。初期化されるコントロールや初期値は、受信するMIDI機器側に依存する。
; BnH 7AH ローカルコントロール
: 鍵盤と音源を兼ねそろえたシンセサイザーの、鍵盤部と音源部の内部的な接続に関する設定。第2データバイトを指定することでオンオフを行う。
: 00H - ローカルオフ - 鍵盤と音源が接続されていない状態。鍵盤を弾くと、MIDI OUTからMIDIメッセージは送信されるが、音源は動かない。
: 7FH - ローカルオン - 鍵盤と音源が接続されている状態。鍵盤を弾くと、音源から音が出る。
; BnH 7BH オールノートオフ
: 該当するチャンネルの発音中の音すべてに対してノートオフ命令を出す。ただし、音の余韻の長いものや、サスティンペダルがオンの状態では音は止まらないので、オールサウンドオフを使用する。
; BnH 7CH - 7FH MIDIモード設定
: 7CH、7DH、7EH、7FHの4つのチャンネルモードメッセージを使いオムニモード、発音数のオンオフを組み合わせることで、4種のMIDIモードを設定できる。
: オムニモード - 7CH オムニオン、7DH オムニオフで設定。MIDIチャンネルを区別するかしないか。オフの場合、チャンネルに関係なく全ての情報を受信し処理、発音する。
: 発音数 - 7EH モノモードオン、7FH ポリモードオンで設定。どちらかを設定すると片方のモードは自動的にオフになる。単音しか出せないのか、和音が出せるのかを設定する。
:; モード1＝7DH オムニオン + 7FH ポリモード
:: MIDIチャンネルを意識せず和音演奏ができるモード。
:; モード2＝7DH オムニオン + 7EH モノモード
:: MIDIチャンネルに関わらず、常に1音のみ鳴らすモード。
:; モード3＝7CH オムニオフ + 7FH ポリモード
:: 一般的な送受信モード。MIDIチャンネルを区別し、各チャンネル毎に和音を用いた演奏が可能なモード。
:; モード4＝7CH オムニオフ + 7EH モノモード
:: チャンネルは区別するが、各チャンネル毎に1音しか出せないモード。たとえば6弦あるギターシンセサイザーの各弦を各チャンネルに割り当てる場合に使用する。この場合、単音で発声するチャンネルは6つとなるので、第2データバイトでは06Hを送信する。

#### システムメッセージ
システムメッセージとは、チャンネルに関係なくMIDIシステム全体に対する命令を行うMIDIメッセージである。システムメッセージのステータスバイトはF0H - FFHである。機能ごとに「システムエクスクルーシブメッセージ」、「システムコモンメッセージ」、「システムリアルタイムメッセージ」の分類される。

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

システムエクスクルーシブメッセージ（Sys-Ex、またはSysExと略記し、シスイーエックスと読む場合もある）は、MIDI機器のより細かい設定を行ったり、音色データやサンプリングデータを送受信するなど、各メーカーのMIDI機器の固有のデータのやりとりに使用できるシステムメッセージである。ステータスバイトF0Hで始まる。

MIDIメッセージは大抵2バイト程度のデータバイトで成り立つが、SysExはMIDIメッセージ中、唯一データバイト長が指定されていない。可変長のため、最後にシステムコモンメッセージとして定義されているF7H エンドオブエクスクルーシブ（EOX）を送信することでSysExの終了を表現する。

##### システムコモンメッセージ
システムコモンメッセージは、主にシステムリアルタイムメッセージと併用され、MIDIシーケンサーなどの同期に使用される。ステータスバイト以下にデータバイトが続くものが多い。
; F1H MTCクォーターフレームメッセージ
: MIDIタイムコード（MTC）の絶対時間情報を扱う。全2バイトで構成され、2バイト目で時刻、分、秒、フレームのカウントを処理する。
; F2H ソングポジションポインタ
: 同期時にマスター側で操作したロケータ位置をスレーブ側に送信する際に使用。16分音符単位で指定できる。第1データバイトでソングポジションポインタLSB、第2データバイトでソングポジションポインタMSBを扱う。
; F3H ソングセレクト
: 受信側のMIDI機器が複数のソング・シーケンスを扱える場合、第1データバイトでソングナンバーを選択する。
; F4H 未定義
; F5H 未定義
: 定義されず、使われていない。
; F6H チューンリクエスト
: アナログシンセサイザー（デジタルのそれに比べ自身の発熱や周囲の温度変化、舞台上で浴びる照明などで経時により調律が狂いやすい）などで、オシレータを再調律させるための命令。現在はアナログシンセサイザーとともにほとんど使われない。
; F7H エンドオブエクスクルーシブ（EOX）
: F0Hから始まるSysExの終了を示すステータスバイト。単独で機能し、データバイトを持たない。

##### システムリアルタイムメッセージ
システムリアルタイムメッセージは、MIDIシーケンサーなどの同期、**[[MIDIタイミングクロック]]**に使用される。ステータスバイト以下にデータバイトが続かず、単独の1バイトのみで機能する。リアルタイムに送信される必要があるため、最優先で送信される。
; F8H タイミングクロック
: 絶対時間を持たないクロック情報。4分音符ごとに24カウントされる。
; F9H 未定義
: 定義されず、使われていない。
; FAH スタート
; FBH コンティニュー
; FCH ストップ
: マスター側機器のコントロールパネルを操作したときに送信。それぞれスレーブ側機器の先頭から再生、停止中からの再生、停止を行う。
; FDH 未定義
: 定義されず、使われていない。
; FEH アクティブセンシング
: 突然のMIDIケーブルの断線や接触不良や出力側機器の故障などで、音が鳴りっぱなしになったりしないようにするためのフェイルセーフの仕組みである。MIDI機器間ではこのアクティブセンシングが常に送信されている。ウォッチドッグタイマーの一種である。受信側は、一度もアクティブセンシングを受けていない状態では通常通り動作するが、一度送信側からこれを受信すると、300ミリ秒（ms）以内に次のMIDIメッセージが送られてくることを期待するようになる。この状態で、アクティブセンシングや、その他MIDIメッセージを受信しなかった場合、断線したと判定する。
: ただし、実際は誤差やMIDI THRU処理の遅れを考慮し270ms - 330msの間で処理するよう余裕を持たせてある。このことから、送信側は270ms間隔でアクティブセンシングを送信し続ける。
; FFH システムリセット
: これを受信した全てのMIDI機器はリセット（電源投入時の状態に戻）される。通常は使用しない。

### サンプルダンプ
サンプルダンプとは、システムエクスクルーシブメッセージを使用してサンプラーとMIDI機器間でサンプリングデータを通信する規格である。サンプルダンプに関するフォーマットをサンプルダンプスタンダード（SDS）という。MMAが1987年に提案した規格で、MMA-0003として定義されている。

ただし、前述の通りMIDIの通信速度は31.25Kbpsと、データ転送用途としては非常に遅い上、現代にはUSBやIEEE 1394などの高速シリアルバスも普及しているため、一部の学習・研究用途を除き使われることは無くなった。

## RP
RP（Recommended Practice）とは、MIDI規格策定後、利便性を高めるための**推奨実施例**として拡張された規格である。現在すでに複数の拡張規格がAMEIとMMAにより承認されており、いずれも共通規格としてMIDI規格に組み込まれている。

### スタンダードMIDIファイル

スタンダードMIDIファイル（SMF）とは、MIDI機器やMIDIメッセージを用いる演奏に関するデータの**保存形式**であり、メーカー毎のソフトやハードに関係なく使用できる共通のファイルフォーマットである。拡張子は.mid。いわゆる「MIDIデータ」は**演奏形式**である前述した「MIDIデータフォーマット」の略称であるが、このスタンダードMIDIファイルを指すべく拡大使用される場合がある。

Opcode社により独自規格として提案されたが、1991年7月にAMEIとMMAによりRPの第1号(RP-001)に追認された。

### GM
GMシステムレベル1、通称GM （General MIDI）とは、それまで各メーカー毎に異なっていた音色配列を統一することを目的として策定されたRPである。1991年に、RP-003にて定義されている。音色配列の他、最低同時発音数や音色数、コントロールチェンジの効き具合といったことも指定されている。

さらに、従来のGMでは時代の進化に伴い補いきれなくなってきた部分を補完するため、GMシステムレベル2（GM2）が上位規格として拡張された。GMとは完全な上位互換性をもつ。

のちに、主に携帯電話の着信メロディの制作用途として、General MIDI Lite（GML）も上位規格として拡張された。

* 1991年 - GMシステムレベル1 - RP-003
* 1999年 - GMシステムレベル2 - RP-024
* 2001年 - General MIDI Lite - RP-033

### DLS
DLS（Downloadable Sounds）は、SMFデータをサウンドカードなどの音源機器に転送して再生するために策定されたRPである。1997年に、RP-016にて定義されている。再生する音源が異なると、作者の意図しない音色で再生されてしまうSMFとは異なり、DLS対応機器ならほとんど同じ音での再生を行なうことが可能となる。拡張子は.dls。

のちに、上位規格であるDLSレベル2.1や、携帯電話向けのMobile DLSが拡張された。

* 1997年 - DLSレベル1.0 - RP-016
* 1999年 - DLSレベル1.1 - RP-016
* 2000年 - DLSレベル2.0 - RP-025
* 2000年 - DLSレベル2.1 - RP-025
* 2003年 - Mobile DLS - RP-041

### XMF
XMF（eXtensible Music Format）は、MMAによって提案された新しい音楽ファイルフォーマットである。SMFや、音声ファイルであるWAVなどが一つのファイルとして格納できるようになっている。

複数回改稿されており、それぞれのバージョン毎にRPとして承認されている。
* 2001年 - XMFメタファイルフォーマット1.00 - RP-030
* 2003年 - XMFメタファイルフォーマット1.01 - RP-039
* 2004年 - XMFメタファイルフォーマット2.00 - RP-043

また、複数の用途に向けて、複数のタイプが定義、検討されている。
* 2001年 - XMFタイプ0 アンド XMFタイプ1ファイル - RP-031
* 2004年 - XMFタイプ2/Mobile XMFファイル - RP-042
* 2007年 - XMFタイプ3/Mobile オーディオクリップ for Mobile XMFファイル - RP-045
* 20XX年 - XMFタイプ4/Interactive XMF（iXMF）

XMFに関する拡張規格も用意されている。
* 2003年 - UnPackerID for ZLIB - RP-040
* 2006年 - ID3 Meta-data Tags for XMF - RP-047

### MIDIショーコントロール
MIDIショーコントロール（MIDI Show Control、MSC）とは、照明や映像機器など、ショーの演出をコントロールする目的で策定されたRPである。1991年にRP-002、のちにRP-014にて定義されている。

### MIDIタイムコード
MIDIタイムコード（MIDI Time Code、MTC）は、同期システムを組むことを目的として策定されたRPである。1987年に、RP-004にて定義されている。

MIDI規格策定時に、同時に策定されたMIDIタイミングクロックは絶対時間を持たなかったが、SMPTEの普及につれMIDI上でも絶対時間を持ったクロックが必要となってきたことが、MTC策定の背景である。

MIDI策定団体であるMMAが中心に提案したため、RPのほかにMMA-0001としても定義されている。

### 記譜情報
記譜情報はMIDIデータ（MIDIメッセージの集合）を楽譜上に音符として表示するために策定されたRPである。RP-005、RP-006にて定義されている。

### ファイルダンプ
ファイルダンプとは、MIDIケーブルを使ってSMFデータを転送するために策定されたRPである。RP-009にて定義されている。

### MIDIマシンコントロール
MIDIマシンコントロールとは、システムエクスクルーシブメッセージを用いてMTRやVTRを制御するために策定されたRPである。1992年に、RP-013にて定義されている。

### SMF with Lyrics
SMF with Lyrics（SMF Language and Display extensions）とは、SMFのメタイベントとして用意されている歌詞格納機能を拡張したRPである。1999年に、RP-026にて定義されている。

メタイベントと違い、表示を目的としており、曲タイトル、作曲者名、作詞者名、歌詞やふりがなを格納できる。カラオケの歌詞表示や楽譜上の歌詞表記などの用途を想定されている。また、日本語（Shift JIS）も使用できる。

### MIDI Media Adaptation Layer for IEEE-1394
MIDI Media Adaptation Layer for IEEE-1394は、MIDIインタフェースなどのMIDI機器をIEEE 1394を用いて接続することに関するRPである。2000年に、RP-027にて定義されている。

### SP-MIDI
SP-MIDI（Scalable Polyphony MIDI）は、あらゆる音源で最適なデータを再生するために策定されたRPである。2002年に、RP-034、RP-035にて定義されている。

例えば、通常だと24ボイス（パート数）を持つ音源用に作られたデータを16ボイスの音源で再生すると、8ボイス分は無視されてしまう。このままではデータ制作者の意図した再生ができないため、従来なら24ボイス用、16ボイス用と複数のデータを用意する必要が有った。このSP-MIDIの規格に従うと、ひとつのデータに前もって複数環境分の情報を収録できるので、少ない工数で、あらゆる音源で問題なく再生が出来るようになる。この技術は主に携帯電話向けに使用される。

### MIDI XML
MIDI XML（MIDI Names, Device Types & Events in XML）は、SMFをXMLで記述することを目的として策定されたRPである。2003年に、RP-038にて定義されている。

## その他の規格
RPとして承認されていないが、各メーカーが独自に打ち出した規格も存在する。中には、比較的一般的となった規格も存在する。ただしメーカーに左右されるため、メーカーを越えた互換性は無い場合が多い。

なお、現在はこれ以上の音色配列などに関する規格の複雑化を防ぐため、AMEI、MMA共にGM2に一本化することを求めており、また、GS・XGはお互い規格をオープンにして相互にサポートすべきとしている。しかし、実際にはローランド製、ヤマハ製の製品であってもGS・XG自体をサポートしない製品が増えてきたことも事実である。

同じ楽譜で演奏をしても、演奏者や楽器が異なると音が違って聴こえるように、使用する音源を変えれば出音は違ってくる。そのため、例えばインターネット上で配布されているMIDIデータをデータ制作者の意図した通りに演奏するためには、制作者が使ったものと同じ、音色設定を完全に一致させた音源が必要になる。たとえGS対応と謳っていてもGS対応音源なら何でもいいというわけではなく、どの音源モジュールを使うかによって音は異なる。

### GSフォーマット
GSフォーマットは、1991年にローランドが提唱、策定した音色配列などに関する独自規格。RP-003であるGMを拡張して作られたと思われがちだが、こちらが先行している。GMは、GSから他社と共有できる部分を抜粋し標準化したものである。

GSに対応した音源には、SC-55やSC-88Proなどのローランド・SCシリーズが有名。

### XGフォーマット
XGフォーマットは、1994年にヤマハが提唱、策定した音色配列などに関する独自規格。ヤマハ製の音源モジュールやシンセサイザーの互換性を持たせるためにGMを拡張する形で作られた。

XGに対応した音源には、MU80やMU500などのヤマハ・MUシリーズが有名。

## MIDI 2.0

## 用途と機器
本項ではMIDI規格が使われる用途と、MIDI規格を使用するハードウェア（機器）、ソフトウェアについて解説する。なお、箇条書きにしているハードウェアやソフトウェアは一例である。

### 音楽制作
総合的な音楽制作用途は、MIDIの代表的な使用例である。パソコンとソフトウェア音源さえあれば、大がかりな設備投資をする必要無くDTMを楽しめるといったことで、90年代から一般の趣味としても普及し出した。

現代は、オーディオ編集とMIDIデータ編集を同時に行える統合環境DAWが業務向けを中心に普及している。
; ハードウェア
:; 送信側
:* ミュージックシーケンサー（ハードシーケンサー）
:* MIDIコントローラー
:* シンセサイザー（MIDI OUT端子が有るのならば、他のMIDI機器を制御可能）
:* ミュージックワークステーション（同上）
:; 受信側
:* シンセサイザー
:* ミュージックワークステーション
:* 音源モジュール
; ソフトウェア
:; 送信側
:* ミュージックシーケンサー（ソフトシーケンサー）
:* デジタルオーディオワークステーション（DAW）
:; 受信側
:* ソフトウェア・シンセサイザー（ソフトウェア音源）
:** Microsoft GS Wavetable SW Synth - Microsoft Windows 2000以降のWindowsに搭載されており最も普及しているソフトウェア音源
:** QuickTimeミュージックシンセ - Mac OSに標準で付属するソフトウェア音源

かつては、ハードウェア音源の代わりに、PCM音源等の音源データをソフトウェア向けに加工し、パソコン上のサウンドボードでMIDIファイルの再生を可能にしたソフトウェアMIDI音源も開発された。しかしながら、同時発音数や音質がCPUの性能に依存するなど、ソフトウェアMIDI音源発売当初はリアルタイム演奏には不向きであった。

現在は、一般のパソコンがソフトウェア音源を処理するのに十分な性能を持ったことや、再生時に音源が不要なMP3等の圧縮音声ファイルフォーマットの普及により、一般ユーザーではDTM愛好家以外のハードウェアベースのMIDI音源の使用は著しく減少している。

### 録音・MA
録音やMA（Multi Audio）でもMIDIは使用される。演奏情報の送受信ではなく、システムメッセージを中心とした同期処理が行われている。
; ハードウェア
:; 送信側
:* ミュージックシーケンサー（ハードシーケンサー）
:* ドラムマシン、リズムマシン
:* コントロールサーフェス
:; 受信側
:* マルチトラックレコーダー（MTR）
:* ビデオテープレコーダー（VTR）
; ソフトウェア
:; 送信側
:* ミュージックシーケンサー（ソフトシーケンサー）
:* デジタルオーディオワークステーション（DAW）
:; 受信側
:* ミュージックシーケンサー（ソフトシーケンサー）
:* デジタルオーディオワークステーション（DAW）
:: （別々のコンピュータ上のソフトウェアに関する同期）

### カラオケ
カラオケ機器は、MIDIデータを再生する機能が備わっている。各カラオケ店舗では、インターネット回線を通じて最新曲のMIDIデータを受信する仕組みになっており、通信カラオケと呼ばれるのはこのためである。ブロードバンドインターネット接続が普及する以前は、現在のように大量の音声データをインターネットで送受信するのは困難であったが、MIDIデータであれば、当時の低速な回線でも十分に送受信可能であった。

なお、カラオケ用MIDIデータはカラオケデータ制作専門のプログラマなどが、ソフトシーケンサーなどを用いて制作し、通信カラオケ配信会社に卸す仕組みとなっている。

### モバイル機器・着信メロディ
スマートフォンの登場以前、携帯電話の着信メロディにおいてMIDI規格が利用されていた。携帯電話内のデータを、携帯電話内に搭載された音源が処理し音を鳴らしている。携帯電話向けのRPも複数拡張された。

### 舞台照明・演出
1991年にRP-002としてMIDIショーコントロールが定義された。これにより、MIDIで舞台装置、照明、演出効果などが制御できるようになった。
; ハードウェア
:; 送信側
:* ホストコントローラー
:; 受信側
:* 各舞台用機材（照明など）

### 音声合成
2009年頃、音声をフーリエ解析し周波数ごとに分離して正弦波にし、それをMIDIで再生することで音声を擬似的に再現する技術が発明された。

### その他
鉄道のプラットホームで流れる発車メロディや、学校・会社で流れるチャイムを再生するタイマーなどでもMIDI規格が応用されることがある。

## MIDI検定

MIDIの基礎知識や、業務レベルの細かい知識などを問うMIDI検定が1999年より実施された。現在4,3,2,1級の4階級が用意されており、2級には2級筆記試験と2級実技試験の2段階が用意されている。

3,2級検定試験は年1回の実施、MIDI4級検定試験は各公認講師・指定校による随時開催となっている。

MIDI検定開始から11年間、1級試験は実施されず2級実技試験が最高級とされていたが、2010年1月15日より、1級試験が新設された。

## 年表
* 1981年 - 日本楽器製造（現・ヤマハ）、ローランド、コルグ、河合楽器（カワイ）、シーケンシャル・サーキット、オーバーハイムの国内外楽器メーカー6社が『MIDI 1.0 Specification』をまとめる。
* 1982年10月 - ローランドを中心に規格化が進められ、米国音楽雑誌「KEYBOARD」誌上で Ver.1.0 が公開される。
* 1983年1月 - NAMMショーにてシーケンシャル・サーキット製Prophet600とローランド製JX-3Pとの接続デモが行われる。
* 1983年8月 - 日本語版 MIDI 1.0 規格を発表。
* 1984年 - MIDI Manufacturers Association（MMA）が発足。
* 1989年1月 - MIDI 1.0（Ver.4.1日本語版）発表。
* 1991年 - スタンダードMIDIファイル（RP-001）がMIDI規格の「推奨実施例」(Recommended Practice) として承認。
* 1991年9月 - GMシステムレベル1（RP-003）がMMA,JMSCによって策定。
* 1991年 - ローランド初のGSフォーマット対応音源、SC-55が発売。
* 1994年 - ヤマハ初のXGフォーマット対応音源、MU80が発売。
* 1996年5月 - 社団法人音楽電子事業協会（AMEI）が発足。
* 1997年 - Downloadable Sounds（RP-016）を策定。
* 1999年1月17日 - 第1回3級MIDI検定試験を実施。
* 1999年1月20日 - MIDIがJIS規格として策定される。
* 1999年7月 - GMシステムレベル2（RP-024）を策定。
* 2001年 - Extensible Music Format（RP-030）を策定。
* 2001年5月 - 携帯電話着信メロディ用の規格General MIDI Lite（RP-033）を策定。
* 2003年7月3日 - 社団法人音楽電子事業協会がMIDI規格誕生20周年記念事業を開催。
* 2013年2月 - ローランド社（浜松市）の創業者である梯郁太郎がMIDI規格の制定に対する貢献により技術グラミー賞を受賞。
* 2016年7月 - MIDI 1.0規格書、RP、CAが無償公開される。
* 2019年1月18日 - MIDI 1.0の策定完了から38年目となる2019年に、次世代となるMIDI 2.0の策定開始を発表した。

## 出典

## 参考文献
* 

## 関連項目
* 音楽電子事業協会
* MIDI Manufacturers Association
* MIDI検定
* OpenSound Control
* Virtual Studio Technology
* 梯郁太郎 - 規格策定の貢献者
* 佐藤博 - MID規格に関してプレイヤー、エンジニアとして、その導入からアドバイザー的立場として関わっていた。

## 外部リンク
* 社団法人音楽電子事業協会
** MIDI1.0規格書
** RP/CA
* MIDI Manufacturers Association