日本語
MIDIメッセージ早見表:すべての種類とステータスバイト、範囲
このアプリは完全に無料です。アカウントを作る必要はありません。サブスクリプションも面倒なダウンロードもなく、ロックされた機能もありません。Appleシリコンに最適化されています。
MIDI 1.0のメッセージは、メッセージの種類を示すステータスバイトと、そのあとに続く0個、1個、2個のデータバイトでできています。チャンネルメッセージは7種類あり、16進数の80のノートオフから、E0のピッチベンドまでです。それぞれが最後の桁にチャンネルを持ちます。そのほかに、チャンネルを一切持たない、F0からFFまでのシステムメッセージがあります。下の表はそのすべてをカバーし、各データバイトの範囲を載せています。各行には、そのメッセージを詳しく説明するこのサイトのページへのリンクがあります。
数値は、MIDI AssociationのMIDI 1.0メッセージの概要とコントロールチェンジの一覧によるもので、2026年10月27日に確認しました。私は、MIDIを読み書きする無料のMacアプリInputConfigを作っているので、そのうちどのメッセージを扱えるかを、1つの表にまとめています。
手順
- メッセージの最初のバイトを、16進数で読みます。
- 80からEFなら、最初の桁がメッセージの種類で、2桁目がチャンネルです。0がチャンネル1で、Fがチャンネル16です。
- F0からFFなら、チャンネルのないシステムメッセージなので、システムの表で調べます。
- そのあとに続くデータバイトを、チャンネルメッセージの表を使って読みます。各バイトは0から127です。
- コントロールチェンジなら、コントローラー番号をCCの表で調べます。
ステータスバイトとデータバイトを見分ける
MIDI 1.0のバイトは、ステータスバイトかデータバイトのどちらかで、どちらになるかは最上位のビットで決まります。MIDI Associationの表では、ステータスバイトはすべて2進数で1から始まり、データバイトは0から始まります。
- ステータスバイト。16進数で80からFF、10進数で128から255です。メッセージを始めます。
- データバイト。16進数で00から7F、10進数で0から127です。MIDIのほとんどの値が127で止まるのは、そのためです。
- チャンネル。チャンネルメッセージでは、2桁目の16進数がチャンネルで、0からFです。アプリではチャンネル1から16と表示されます。つまり、90はチャンネル1のノートオン、9Fはチャンネル16のノートオンです。
- 14ビットの値。128段階では足りないとき、2つのデータバイトが組み合わさります。細かい側のLSBと、大まかな側のMSBです。合わせて0から16383になり、ピッチベンドは中央を8192、16進数で2000に置きます。
128以上のバイトはメッセージを始め、128未満のバイトは値を運びます。どちらも、MIDIチャンネルとMSBとLSBで、さらに詳しく説明しています。
チャンネルメッセージを読む
この7種類が音楽を運びます。ノート、プレッシャー、ノブ、音色の切り替え、ピッチホイールです。ステータスの列は16進数で、下の桁はチャンネルで決まります。
| メッセージ | ステータス(16進数) | データバイト1 | データバイト2 | 詳細 |
|---|---|---|---|---|
| ノートオフ | 80から8F | ノート番号、0から127 | リリースベロシティ、0から127 | ノート番号 |
| ノートオン | 90から9F | ノート番号、0から127 | ベロシティ、0から127(0はノートオフとして働きます) | ベロシティ |
| ポリフォニックキープレッシャー | A0からAF | ノート番号、0から127 | プレッシャー、0から127 | アフタータッチ |
| コントロールチェンジ | B0からBF | コントローラー、0から119 | 値、0から127 | CCの一覧 |
| プログラムチェンジ | C0からCF | プログラム、0から127 | なし | プログラムチェンジ |
| チャンネルプレッシャー | D0からDF | プレッシャー、0から127 | なし | アフタータッチ |
| ピッチベンド | E0からEF | 細かい側(LSB)、0から127 | 大まかな側(MSB)、0から127 | ピッチベンド |
ベロシティ0のノートオンはノートオフとして扱われ、MIDI Association自身のArduinoガイドも、音を止めるのにこれを使っています。コントロールチェンジのコントローラー番号が119で止まるのは、120から127が、下のチャンネルモードメッセージに使われているからです。ピッチベンドの半音単位の範囲は、メッセージには含まれません。受信側が決めるもので、MIDIの表には、RPN 0で設定できると書かれています。プログラムチェンジとチャンネルプレッシャーは1つのデータバイトを運び、ほかの5つは2つ運びます。
チャンネルモードメッセージを知る
チャンネルモードメッセージは、コントロールチェンジのステータスバイトであるB0からBFを使い、コントローラー番号は120から127です。音そのものではなく、チャンネルの動作を変えます。
| コントローラー | 名前 | 働き |
|---|---|---|
| 120 | All Sound Off | すべての音を一度に消します |
| 121 | Reset All Controllers | コントローラーを初期状態に戻します |
| 122 | Local Control | 0がオフ、127がオンで、鍵盤がシンセ自身の音を鳴らすかを決めます |
| 123 | All Notes Off | 押さえているすべてのノートを離します |
| 124と125 | Omni Mode OffとOn | デバイスが1つのチャンネルだけで聞くか、すべてのチャンネルで聞くかを決めます |
| 126と127 | Mono Mode OnとPoly Mode On | チャンネルごとに1音か、和音かを決めます |
MIDI Associationの一覧には、124から127もすべてのノートをオフにすると書かれています。パニックボタンの中身は、ほとんどが、16チャンネルすべてに送るCC 123とCC 120です。正確なバイトは、MIDIパニックに載せています。
システムメッセージを読む
システムメッセージはFで始まり、チャンネルを持たないので、ケーブルにつながったすべてのデバイスが読み取れます。F0からF7はシステムコモンメッセージ、F8からFFはリアルタイムメッセージで、SysExメッセージの途中に入れられるのは、リアルタイムメッセージだけです。
| ステータス(16進数) | メッセージ | データ | 詳細 |
|---|---|---|---|
| F0 | System Exclusive | メーカーID、続いてF7まで任意の数のデータバイト | SysEx |
| F1 | MIDI Time Code quarter frame | 1バイト:タイムコードの一部 | |
| F2 | Song Position Pointer | 2バイト:先頭からの拍数の14ビットのカウントで、1拍は6クロック | |
| F3 | Song Select | 1バイト:どの曲やシーケンスか | |
| F6 | Tune Request | なし。アナログシンセに、オシレーターのチューニングを求めます | |
| F7 | End of Exclusive | なし。SysExメッセージを終わらせます | |
| F8 | Timing Clock | なし。4分音符ごとに24回送られます | MIDIクロック |
| FA、FB、FC | Start、Continue、Stop | なし | MIDIクロック |
| FE | Active Sensing | なし。オプションで、デバイスが送り始めたら、少なくとも300ミリ秒ごとに送ります | |
| FF | Reset | なし。受信側を電源投入時の状態に戻します |
F4、F5、F9、FDは未定義です。クロック、スタート、ストップはシステムメッセージなので、チャンネルを持ちません。SysExのダンプと、それを送るアプリについては、Mac用のSysExライブラリアンのページを見てください。
知っておきたいCC番号を調べる
120あるコントロールチェンジの番号の多くは未定義のままですが、いくつかはMIDI規格に名前があり、シンセやアプリが従っています。以下は、MIDI Associationのコントロールチェンジの一覧によるものです。
| CC | 名前 | 詳細 |
|---|---|---|
| 0と32 | Bank Select、MSBとLSB | MSBとLSB |
| 1 | モジュレーションホイール | CCの一覧 |
| 2 | ブレスコントローラー | |
| 4 | フットコントローラー | |
| 6と38 | Data Entry、MSBとLSB | NRPNとRPN |
| 7 | チャンネルボリューム | |
| 10 | パン | |
| 11 | エクスプレッション | |
| 64 | サステイン(ダンパー)ペダル:0から63がオフ、64から127がオン | サステインペダル |
| 65、66、67 | ポルタメント、ソステヌート、ソフトペダルのオンとオフ | |
| 98と99 | NRPN番号、LSBとMSB | NRPNとRPN |
| 100と101 | RPN番号、LSBとMSB | NRPNとRPN |
コントローラー32から63は、0から31の細かい側のLSBです。Bank SelectがCC 0とCC 32の組になるのは、そのためです。CC 64はスイッチなので、64以上の値はどれでも、ペダルが踏まれていることを意味します。すべての番号は、MIDI CCの一覧に載せています。
InputConfigが読み書きするものを見る
InputConfigは、キーボードやパッドコントローラー、DAWから来るMIDIを、キー、クリック、Macの音量などに変えます。また、ゲームコントローラーやキーボードからのMIDIを、InputConfigという名前の仮想ポートを通して送ります。メッセージごとに、できることを正直にまとめた一覧です。
| メッセージ | 入力としてバインド | 出力として送信 |
|---|---|---|
| ノートオンとオフ | はい。押し続けるボタンとして | はい。行に設定したベロシティで |
| コントロールチェンジ | はい。スイッチ、ダイヤル、ターンとして | はい。固定値、またはスティックやトリガーの位置で |
| ピッチベンド | はい。スティックのようにプラスとマイナスで | はい。スティックの軸やボタンから |
| アフタータッチ | はい | いいえ |
| プログラムチェンジ | はい。プリセットを有効にすることもできます | はい |
| Start、Continue、Stop | はい | はい |
| Timing Clock | いいえ | いいえ |
| System Exclusive | いいえ | いいえ |
| NRPNとRPN | いいえ | いいえ。1つずつのメッセージを送ります |
つまずきやすい点が2つあります。ボタンは押す強さを感じ取れないので、MIDIノートの出力は、その行に設定した1から127のベロシティで鳴ります。強弱を付けるには、CC 11にトリガーを割り当てます。また、Switchモードのノブは、値が半分を超えたところで一度だけ反応するので、サステインペダルをオンとオフのスイッチにできます。


コントロールがノート、CC、ピッチベンド、プログラムチェンジのどれかを送るなら、InputConfigでバインドできます。設定は、MIDIからキー入力とMIDI出力で説明しています。
メッセージが期待と違うとき
驚きの多くは、故障ではなく数え方から来ます。小さな手順から順に、次の階段を上ってください。
- チャンネルの数え方を確認する。バイトは0から15で、アプリは1から16と表示します。チャンネル10のデバイスは、ノートオンに99を送ります。
- プログラムの数え方を確認する。メッセージは0から127を運びますが、多くの音色リストは1から128なので、音色1は0として送られます。
- 隠れたノートオフを確認する。ベロシティ0のノートオンはノートを終わらせるので、ノートオンだらけのログでも、鍵は離されていることがあります。
- 生のバイトをデコードする。MIDIメッセージデコーダーに貼り付けるか、MIDIテスターで届く様子を見ます。
1つずれるのは、MIDIで最もよくある不具合です。
1つのメッセージを詳しく知る
- ノート。ベロシティ、ノート番号、General MIDIのドラムマップ。
- プレッシャー。チャンネルアフタータッチとポリフォニックアフタータッチ。
- コントローラー。サステインペダル、MSBとLSB、NRPNとRPN、MIDIラーン。
- 音色。プログラムチェンジ。
- ピッチ。ピッチベンド。
- タイミングと安全。MIDIクロック、MIDIパニック、MIDI Thru。
- データ。SysEx。
ここにある各ページは、表の1行を取り上げて、例を交えて説明しています。すべてが初めてなら、MIDIとはから始めてください。
短くまとめると
- まずステータス。16進数で80以上のバイトがメッセージを始め、そのあとのバイトは0から127の値です。
- チャンネルメッセージ。80からEFで、最後の桁がチャンネルです。
- システムメッセージ。F0からFFで、チャンネルはありません。SysEx、クロック、スタート、ストップなどです。
- 大きな数。2つのデータバイトで0から16383になります。ピッチベンドがそうです。
ステータスバイトの最初の桁を読めば、どんな種類のメッセージかが分かります。
よくある質問
MIDIメッセージには何種類ありますか
MIDI 1.0には、7種類のチャンネルメッセージ(ノートオフ、ノートオン、ポリフォニックプレッシャー、コントロールチェンジ、プログラムチェンジ、チャンネルプレッシャー、ピッチベンド)と、CC 120から127のチャンネルモードメッセージ、F0からFFのシステムメッセージがあります。
MIDIのステータスバイトとは何ですか
メッセージの最初のバイトで、16進数の80からFFです。メッセージの種類を示し、チャンネルメッセージなら、16あるチャンネルのどれかも示します。
CCとNRPNの違いは何ですか
CCは、コントローラー番号と0から127の値を持つ1つのメッセージです。NRPNは、CC 99と98でパラメーターを選び、CC 6と38のData Entryで値を設定するので、1回の変更に3つか4つのメッセージが要ります。
InputConfigはどのMIDIメッセージに対応していますか
ノート、コントロールチェンジ、ピッチベンド、アフタータッチ、プログラムチェンジ、Start、Continue、Stopをバインドでき、ノート、コントロールチェンジ、ピッチベンド、プログラムチェンジ、トランスポートを送れます。クロック、SysEx、NRPNは扱いません。
MIDIクロックはチャンネルメッセージですか
いいえ。Timing ClockのF8は、チャンネルを持たないシステムリアルタイムメッセージで、4分音符ごとに24回送られます。
日本語のページ
くわしいガイド(英語)
このページを書いた人。 Ryleigh NewmanはInputConfigを開発しています。手がうまく動かないため、毎日コントローラーで自分のMacを操作しています。このページは英語から翻訳したものです。Macの言語が日本語のとき、アプリの主なボタンとメニューは日本語で表示されます。このページではその名前を使い、英語の名前をかっこに添えています。アプリのほかの部分とサイトのほかのページは英語です。
ほかの言語で読む: English, Deutsch, Español, Français, Italiano, 한국어, Polski, Português, Русский, ไทย, 繁體中文, 简体中文
無料。macOS 14以降。アカウント不要で、データがMacの外に出ることはありません。 ソースコードはGitHubにあります.