特殊なMIDIメッセージ

MIDIメッセージにはシステムエクスクルーシブというものがあります。
単にエクスクルーシブとも言い、「SysEx」「Sysx」と略されることも多いです。

これは他のMIDIメッセージと比べて特殊なメッセージで、主に音源固有の設定を行う場合に使用されます。
最大の特徴はデータを複数の16進数で設定する点で、他のMIDIメッセージとは入力方法が大きく異なります。
システムエクスクルーシブはシーケンサー(DAW)のイベントリストで入力します。

例えばGM音源の設定を初期化する「GMシステム・オン」などがあります。
GMシステム・オンはGM音源なら種類を問わず共通して使用できるメッセージで、これをユニバーサルシステムエクスクルーシブといいます。

ユニバーサルでないエクスクルーシブは各音源によって設定項目やその値はバラバラなので、音源のマニュアルを参照する必要があります。
例えば音源に搭載のエフェクターの設定、調整などを行える場合があります。

ユニバーサルシステムエクスクルーシブには以下のものがあります。

名称 設定値
GMシステム・オン F0 7E 7F 09 01 F7
GMシステム・オフ F0 7E 7F 09 02 F7
GM2システム・オン F0 7E 7F 09 03 F7
GSリセット F0 41 10 42 12 40 00 7F 00 41 F7
XGリセット F0 43 10 4C 00 00 7E 00 F7
マスターボリューム F0 7F [ID] 04 01 00 [xx] F7
マスターバランス(パン) F0 7F [ID] 04 02 [xx] [xx] F7

システムエクスクルーシブは全て「F0」で始まり「F7」で終わります。
データの個数(データ長)はメッセージによって異なります。

上記の表、「ID」にはメーカー固有の番号を16進数で指定します。
「7F」を指定するとすべてのIDを指定した状態になります。
(すべての音源にシステムエクスクルーシブを送信する)

「xx」には実際の値を16進数で指定します。
例えば100に指定する場合は「64」を指定します。
マスターボリュームの範囲は0~127なので、「00」~「7F」の範囲で指定します。
マスターパンは「00 00」が左、「7F 7F」が右となります。

システムエクスクルーシブは他のMIDIデータに比べてデータ量が多いので、多用すると音源の発音が途切れてしまうことがあります。
大抵の場合はMIDIデータの冒頭で音源の設定するために使用し、曲中では使用しません。
(音源によってはエフェクターの設定にシステムエクスクルーシブを使用する必要があり、曲中で設定を変化させたい場合は使用せざるを得ないこともあります)

GMシステムオン、GSリセットなどの音源を初期化するメッセージは、音源に送信後に次のメッセージを送るまでに少し間を空ける必要があります。
(50msec程度)

最近のDTM界隈はソフトシンセ(ソフトウェアMIDI音源)が主流で、ソフトシンセにはシステムエクスクルーシブに対応していないものも多くあります。
システムエクスクルーシブを用いなくてもDAW上から設定できたりオートメーション機能で設定できたりすることが多いです。

16進数

16進数は、0~15までをひとつの桁とする数値の表記法です。
普段使用している10進数は、0~9までをひとつの桁とする表記法です。

数字は9までしかないので、10以降は「A~F」のアルファベットを使用します。
つまり、0~9までは10進数と同じですが、「10」は「A」で表します。
11は「B」、12は「C」、13は「D」、14は「E」、15「F」となります。 16は「10」となり、桁がひとつ上がります。

16進数の表記は、それが16進数であることを明示するために先頭に「0x」を付けることがあります。
または末尾に「H」(または小文字のh)を付加することもあります。
つまり、「0x20」は16進数の20ですから10進数の「32」を示します。
同様に、「0x5A」は「90」、「35H」は「53」、「1BH」は「27」ということになります。

16進数は普段使用しないので、いざ設定しろと言われても結構戸惑います。
Windowsならば付属の電卓で10進数と16進数の変換が容易にできます。
Windowsの電卓で16進数を表示1
Windowsの電卓で16進数を表示2

画像の「HEX」の箇所をクリックすれば16進数で入力できるモードになります。
その他、8進数と2進数にも変換できます。

おまけとして、10進数を16進数に変換するプログラムを下に置いておきます。

スライダー 10進数 16進数
0