AMEI

システム・エクスクルーシブ・メッセージの使い方

はじめに

このドキュメントは、システム・エクスクルーシブID会員のみなさま、またシステム・エクスクルーシブID会員を検討されているみなさまにシステム・エクスクルーシブ・メッセージの使い方を説明致します。

MIDI規格は、異なった開発者の楽器間を接続できるように、ハードウエアと伝送フォーマットの統一を図った国際的な規格です。MIDI規格では通常の楽器演奏に必要なピッチ、ベロシティー、音色のコントロール、機器間の同期信号については厳格に定められています。しかし、機器固有のデータである音色パラメータや自動演奏のためのプログラム・データ等は、楽器開発者ごとに設計思想が異なるため、そのフォーマットを規定することは困難です。

システム・エクスクルーシブ・メッセージは楽器開発者ごとに設計された音色パラメータや自動演奏のためのプログラム・データを伝送・制御するために用いられます。楽器同士、あるいはコンピュータと楽器の間でパラメータやデータを伝送することで、送信側は受信側を詳細に制御することができます。システム・エクスクルーシブ・メッセージはこうした目的の為、開発者がそれぞれ独自に定められるように考えられたメッセージです。

音楽電子事業協会(AMEI)は楽器を開発する開発者ごとに、それぞれ独自のID番号を割り振ります。システム・エクスクルーシブ・メッセージにこのID番号を含めることで、受信側でメッセージを識別することができます。

システム・エクスクルーシブ・メッセージのフォーマット

システム・エクスクルーシブ・メッセージは必ず次のようなフォーマットとなります。

F0H:エクスクルーシフ゛・ステータス
00H:ID番上位バイト00H固定
40H:ID番中位バイト40H〜5FH
nnH:ID番下位バイト00H〜7FH
data:MSB=0
data: ↑
data: ↑
data: ↑
... : ↑
F7H:EOX(エンド・オブ・エクスクルーシブ)

システム・エクスクルーシブ・メッセージのフォーマットは、エクスクルーシブ・ステータス(F0H)で始まり、次に3バイトの開発者のID番号を必ず送らなけらばなりません。その後のデータは何バイトでもかまいません。ただし、すべてのデータの最上位ビットはゼロでなければなりません。すなわち、データは00H〜7FHの7bitとなります。そして、システム・エクスクルーシブ・メッセージの終わりにはエンド・オブ・エクスクルーシブ(F7H)を送らなければなりません。なを、一部メーカーのID番号は1バイトの場合があります。詳細はこちらで確認してください。

受信側はエクスクルーシブ・ステータスでシステム・エクスクルーシブ・メッセージの受け取りを開始しします。そして、次に送られてくるID番号を認識することにより,継続するデータを受け取るか、無視するかを決定します。継続してデータを受け取る場合、受信はエンド・オブ・エクスクルーシブによって終了します。

制約事項

システム・エクスクルーシブ・メッセージを利用する上で、MIDI1.0規格書から重要な制約事項を記載します。
ID番号はAMEI/MMAにより管理されています。もし、管理されていなければシステム・エクスクルーシブ・メッセージを受信するかどうか判定することができなくなり、機器が誤動作をしてしまうかもしれません。

MIDI機器開発者は、その機器をプレーヤーや音楽制作者といったユーザーに、思い通りに、詳細に使っていただきたいという考えのもとフォーマットを公開します。ユーザーは公開されたフォーマットを介して、このMIDI機器を自分の好みにチューニングすることができます。従って、公開するフォーマットは、MIDI機器を迷いや矛盾無く制御できるものでないとなりません。

もし、MIDI機器開発者が既に公開したフォーマットを断りなく変更してしまったら、今までチューニングできていたMIDI機器が突然できなくなってしまいます。その為、公開したフォーマットはよほどの不都合が生じない限り変更してはなりません。

フォーマット設計例

上記制約事項は公開したフォーマットは変えてはならないとなっていますが、反面MIDI機器を常に進化させたり、新しい機器を開発する上でフォーマットは柔軟に設計されている必要もあります。そこで、一例として次ようようなフォーマットを示します。

F0H:エクスクルーシフ゛・ステータス
00H:ID番上位バイト00H固定
40H:ID番中位バイト40H〜5FH
nnH:ID番下位バイト00H〜7FH
複数バイト:デスティネーション操作対象
複数バイト:コマンド操作内容
複数バイト:アドレス操作位置
複数バイト:データデータの値
F7H:EOX(エンド・オブ・エクスクルーシブ)

デスティネーションは操作対象である機種、あるいはバージョンを表しています。開発者には複数の種類の製品があり、また新開発の機種は、旧来のデータ構造とが違ったモノであるかもしれません。そのような場合を考慮して、操作対象を示すための領域として複数バイトを確保しておきます。

コマンドは操作の内容を表しています。例えば、データをすべて初期化したい、一つのデータあるいは複数のデータを差し替えたい、一つのだけあるいは複数のデータを外部へ出力したいとった操作内容を記載するための領域です。アドレスは複数あるデータの中の操作する位置を示しています。データは、操作対象となるデータの値を示します。なを、アドレスやデータも含め、複数バイトあるデータは、上位バイトから記載するのか、下位バイトから記載するのかも明確にしておかなければなりません。それぞれの領域に何バイト必要かは、それぞれの開発者の設計方針に決める必要があります。

このフォーマットはあくまで一例を示しています。ご相談がありましたら下記へお問合せ下さい。

お問合せ

一般社団法人音楽電子事業協会(AMEI)事務局
【電話:03-5226-8550/FAX:03-5226-8549/e-mail:amei_info@amei.or.jp】

AMEI