MIDIメッセージ(MIDIフォーマットとか、MIDIプロトコルとか、MIDIデータとか言うことも…)についてあちこちに書き散らしてきました。 ここにインデックスを書いておきたいと思います。
MIDI 1.0の仕様書は、こちらのサイト からpdfをダウンロードすることができます。1983年に規格が作成され、1998年に規格書として第1版が発行された とのことです。ちなみにpdf版は、2019年に配布が始まりました。
MIDIは8ビット3バイトのメッセージか、MIDIは8ビット2バイトのメッセージ、あるいは1バイトのメッセージ のいずれかで定義されています。 基本的には最初のバイトの上位4ビット(下の例では"p")で何をするメッセージかが決まります。
3バイトの場合&nbps;&nbps;&nbps;&nbps;0xpq 0xrs 0xtu 2バイトの場合&nbps;&nbps;&nbps;&nbps;0xpq 0xrs 1バイトの場合&nbps;&nbps;&nbps;&nbps;0xpq
- "p"が8,9,A,C,D,Eの場合はメッセージはチャンネルボイスメッセージに一意に決まります。
- "p"がBの場合は、チャンネルボイスメッセージのコントロールチェンジもしくはチャンネルモードメッセージです。
- "p"がFの場合は、システムメッセージのいずれかです。
次に一覧表を示します。
| チャンネルメッセージ | チャンネルボイスメッセージ | ノートオフ(0x80) ノートオン(0x90) ポリフォニックキープレッシャー(0xA0)(*1) コントロールチェンジ(0xB0) プログラムチェンジ(0xC0) チャンネルプレッシャー(0xD0) ピッチベンド(0xE0) |
| チャンネルモードメッセージ (*2) | オールサウンドオフ(0xB0 0x78 0x00) リセットオールコントローラー(0xB0 0x79 0x00) オールノートオフ(0xB0 0x7B) オムニオフ(0xB0 0x7C 0x00) オムニオン(0xB0 0x7D 0x00) モノモードオン(0xB0 0x7E 0x00) モノモードオフ(0xB0 0x7F 0x00) |
|
| システムメッセージ | システムエクスクルーシブメッセージ | システムエクスクルーシブメッセージスタート(0xF0) システムエクスクルーシブメッセージエンド(0xF7) |
| システムコモンメッセージ | MTC ウォータフレームメッセージ(0xF1 0xdd) ソングポジションポインタ(0xF2 LSB MSB) ソングセレクト(0xF3 0xdd) 未定義(0xF4, 0xF5) チューンリクエスト(0xF6) エンドオブシステムエクスクルーシブ(0xF7) |
|
| システムリアルタイムメッセージ | タイミングクロック(0xF8) スタート(0xFA) コンティニュー(0xFB) アクティブセンシング(0xFE) システムリセット(0xFF) |
(*1) イーチキーアフターと言うこともあります。
(*2) 基本的に3バイト目は未定義です。
ノートナンバーは、ノートオフ、ノートオン、ポリフォニックキープレッシャーの2バイト目で鍵盤の位置(あるいは音程)を表しています。
コントロールチェンジナンバーはコントロールチェンジの2バイト目で 操作(編集)対象を示しています。
チャンネルモードメッセージは、コントロールチェンジナンバーの後半で定義されている チャンネルのモード、MIDI機器の受信設定や初期化を行うためのメッセージです。
同じステータスを繰り返して送信するとき、ステータスを省略して送信速度をアップする工夫です。
盤を離したという情報は、鍵盤を押した、でもベロシティはゼロでとして送信することとします。 これで1バイト送信容量を減らすことができます。
MIDI 1.0の仕様書では、MIDIはこの ハードウェアを使いなさい、という規定がなされています。