日本語

MIDIメッセージ早見表:すべての種類とステータスバイト、範囲

Mac App StoreでInputConfigをダウンロードこのアプリは完全に無料です。アカウントを作る必要はありません。サブスクリプションも面倒なダウンロードもなく、ロックされた機能もありません。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つの表にまとめています。

手順

  1. メッセージの最初のバイトを、16進数で読みます。
  2. 80からEFなら、最初の桁がメッセージの種類で、2桁目がチャンネルです。0がチャンネル1で、Fがチャンネル16です。
  3. F0からFFなら、チャンネルのないシステムメッセージなので、システムの表で調べます。
  4. そのあとに続くデータバイトを、チャンネルメッセージの表を使って読みます。各バイトは0から127です。
  5. コントロールチェンジなら、コントローラー番号を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から127CCの一覧
プログラムチェンジ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です。音そのものではなく、チャンネルの動作を変えます。

コントローラー名前働き
120All Sound Offすべての音を一度に消します
121Reset All Controllersコントローラーを初期状態に戻します
122Local Control0がオフ、127がオンで、鍵盤がシンセ自身の音を鳴らすかを決めます
123All Notes Off押さえているすべてのノートを離します
124と125Omni Mode OffとOnデバイスが1つのチャンネルだけで聞くか、すべてのチャンネルで聞くかを決めます
126と127Mono Mode OnとPoly Mode Onチャンネルごとに1音か、和音かを決めます

MIDI Associationの一覧には、124から127もすべてのノートをオフにすると書かれています。パニックボタンの中身は、ほとんどが、16チャンネルすべてに送るCC 123とCC 120です。正確なバイトは、MIDIパニックに載せています。

システムメッセージを読む

システムメッセージはFで始まり、チャンネルを持たないので、ケーブルにつながったすべてのデバイスが読み取れます。F0からF7はシステムコモンメッセージ、F8からFFはリアルタイムメッセージで、SysExメッセージの途中に入れられるのは、リアルタイムメッセージだけです。

ステータス(16進数)メッセージデータ詳細
F0System ExclusiveメーカーID、続いてF7まで任意の数のデータバイトSysEx
F1MIDI Time Code quarter frame1バイト:タイムコードの一部
F2Song Position Pointer2バイト:先頭からの拍数の14ビットのカウントで、1拍は6クロック
F3Song Select1バイト:どの曲やシーケンスか
F6Tune Requestなし。アナログシンセに、オシレーターのチューニングを求めます
F7End of Exclusiveなし。SysExメッセージを終わらせます
F8Timing Clockなし。4分音符ごとに24回送られますMIDIクロック
FA、FB、FCStart、Continue、StopなしMIDIクロック
FEActive Sensingなし。オプションで、デバイスが送り始めたら、少なくとも300ミリ秒ごとに送ります
FFResetなし。受信側を電源投入時の状態に戻します

F4、F5、F9、FDは未定義です。クロック、スタート、ストップはシステムメッセージなので、チャンネルを持ちません。SysExのダンプと、それを送るアプリについては、Mac用のSysExライブラリアンのページを見てください。

知っておきたいCC番号を調べる

120あるコントロールチェンジの番号の多くは未定義のままですが、いくつかはMIDI規格に名前があり、シンセやアプリが従っています。以下は、MIDI Associationのコントロールチェンジの一覧によるものです。

CC名前詳細
0と32Bank Select、MSBとLSBMSBとLSB
1モジュレーションホイールCCの一覧
2ブレスコントローラー
4フットコントローラー
6と38Data Entry、MSBとLSBNRPNとRPN
7チャンネルボリューム
10パン
11エクスプレッション
64サステイン(ダンパー)ペダル:0から63がオフ、64から127がオンサステインペダル
65、66、67ポルタメント、ソステヌート、ソフトペダルのオンとオフ
98と99NRPN番号、LSBとMSBNRPNとRPN
100と101RPN番号、LSBとMSBNRPNと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モードのノブは、値が半分を超えたところで一度だけ反応するので、サステインペダルをオンとオフのスイッチにできます。

InputConfigのLive VisualizerのMIDI表示。MIDI: Knob Deckプリセットで、鍵盤、ダイヤル、直近のメッセージが表示されています。
Figure 1. Live Visualizerは各ノブをCC番号で表示するので、ここのCC 7、10、64、71、1は、上の表からそのまま読み取れます。
InputConfigのエディタ。方向パッドの行がそれぞれプログラムチェンジを送り、1つはその前にバンクセレクトを送ります。
Figure 2. CC 0とプログラムチェンジの連携。方向パッドの上を1回押すと、バンクセレクトに続いてプログラムチェンジを送ります。

コントロールがノート、CC、ピッチベンド、プログラムチェンジのどれかを送るなら、InputConfigでバインドできます。設定は、MIDIからキー入力とMIDI出力で説明しています。

メッセージが期待と違うとき

驚きの多くは、故障ではなく数え方から来ます。小さな手順から順に、次の階段を上ってください。

  1. チャンネルの数え方を確認する。バイトは0から15で、アプリは1から16と表示します。チャンネル10のデバイスは、ノートオンに99を送ります。
  2. プログラムの数え方を確認する。メッセージは0から127を運びますが、多くの音色リストは1から128なので、音色1は0として送られます。
  3. 隠れたノートオフを確認する。ベロシティ0のノートオンはノートを終わらせるので、ノートオンだらけのログでも、鍵は離されていることがあります。
  4. 生のバイトをデコードする。MIDIメッセージデコーダーに貼り付けるか、MIDIテスターで届く様子を見ます。

1つずれるのは、MIDIで最もよくある不具合です。

1つのメッセージを詳しく知る

ここにある各ページは、表の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, Русский, ไทย, 繁體中文, 简体中文

Mac App StoreでInputConfigをダウンロード無料。macOS 14以降。アカウント不要で、データがMacの外に出ることはありません。 ソースコードはGitHubにあります.