11
3. 参考資料
(16 進数表記の数字の後ろには H をつけています。)
MIDI では、データ値や、エクスクルーシブ・メッセージのアドレスやサイズには、7 ビットごと
の 16 進表記が使用されます。10 進表記との対応表は次の通りです。
+——————+——————++——————+——————++——————+——————++——————+——————+
| D | H || D | H || D | H || D | H |
+——————+——————++——————+——————++——————+——————++——————+——————+
| 0 | 00H || 32 | 20H || 64 | 40H || 96 | 60H |
| 1 | 01H || 33 | 21H || 65 | 41H || 97 | 61H |
| 2 | 02H || 34 | 22H || 66 | 42H || 98 | 62H |
| 3 | 03H || 35 | 23H || 67 | 43H || 99 | 63H |
| 4 | 04H || 36 | 24H || 68 | 44H || 100 | 64H |
| 5 | 05H || 37 | 25H || 69 | 45H || 101 | 65H |
| 6 | 06H || 38 | 26H || 70 | 46H || 102 | 66H |
| 7 | 07H || 39 | 27H || 71 | 47H || 103 | 67H |
| 8 | 08H || 40 | 28H || 72 | 48H || 104 | 68H |
| 9 | 09H || 41 | 29H || 73 | 49H || 105 | 69H |
| 10 | 0AH || 42 | 2AH || 74 | 4AH || 106 | 6AH |
| 11 | 0BH || 43 | 2BH || 75 | 4BH || 107 | 6BH |
| 12 | 0CH || 44 | 2CH || 76 | 4CH || 108 | 6CH |
| 13 | 0DH || 45 | 2DH || 77 | 4DH || 109 | 6DH |
| 14 | 0EH || 46 | 2EH || 78 | 4EH || 110 | 6EH |
| 15 | 0FH || 47 | 2FH || 79 | 4FH || 111 | 6FH |
| 16 | 10H || 48 | 30H || 80 | 50H || 112 | 70H |
| 17 | 11H || 49 | 31H || 81 | 51H || 113 | 71H |
| 18 | 12H || 50 | 32H || 82 | 52H || 114 | 72H |
| 19 | 13H || 51 | 33H || 83 | 53H || 115 | 73H |
| 20 | 14H || 52 | 34H || 84 | 54H || 116 | 74H |
| 21 | 15H || 53 | 35H || 85 | 55H || 117 | 75H |
| 22 | 16H || 54 | 36H || 86 | 56H || 118 | 76H |
| 23 | 17H || 55 | 37H || 87 | 57H || 119 | 77H |
| 24 | 18H || 56 | 38H || 88 | 58H || 120 | 78H |
| 25 | 19H || 57 | 39H || 89 | 59H || 121 | 79H |
| 26 | 1AH || 58 | 3AH || 90 | 5AH || 122 | 7AH |
| 27 | 1BH || 59 | 3BH || 91 | 5BH || 123 | 7BH |
| 28 | 1CH || 60 | 3CH || 92 | 5CH || 124 | 7CH |
| 29 | 1DH || 61 | 3DH || 93 | 5DH || 125 | 7DH |
| 30 | 1EH || 62 | 3EH || 94 | 5EH || 126 | 7EH |
| 31 | 1FH || 63 | 3FH || 95 | 5FH || 127 | 7FH |
+——————+——————++——————+——————++——————+——————++——————+——————+
D:decimal(10 進表記)
H:hexadecimal(16 進表記)
※MIDI チャンネル、バンク・セレクト、プログラム・チェンジなどの 10 進表記は、前表の 10
進数に 1 を足した値になっています。
※7 ビットごとの 16 進表記では、1 バイトのデータで表せる値は最大 128 段階です。それ以
上の分解能のデータは複数のバイトを使います。たとえば、aabbH と 2 バイトの 7 ビット
ごとの 16 進表記された値は、aa× 128+ bb となります。
※±の符号のある値は、00H=-64、40H =±0、7FH= +63 となり、10 進表記には上表
の 10 進数から 64 引いた値を使います。2 バイトの場合は、0000H= -8192、4000H
=±0、7F7FH= +8191 となり、たとえば aabbH を 10 進表記すると aabbH −40
00H=aa×128+bb−64×128となります。
※「ニブル」と書かれたデータの場合は、4 ビットごとの 16 進表記が使用されます。0a0bH
と 2 バイトのニブル表記された値は、a× 16+ b となります。
<例 1 >
5AH の 10 進表記は ?
前表より5AH=90 となります。
<例 2 >
7 ビットごとの 16 進表記された値 1234H の 10 進表記は ?
前表より12H=18、34H =52 ですから
18× 128+ 52=2356
となります。
<例 3 >
0A03090D とニブル表記された値の 10 進表記は ?
前表より0AH=10、03H =3、09H =9、0DH= 13 ですから
((10×16+3)× 16+9)× 16+13=41885
となります。
<例 4 >
10 進数表記の 1258 をニブル表記すると ?
16) 1258
16) 78 ... 10
16) 4 ... 14
0 ... 4
前表より0=00H、4 =04H、14 =0EH、10= 0AH ですから
00040E0AH
となります。
<例 1 > 923E5F
9n はノート・オンのステータスで、n は MIDI チャンネル・ナンバーです。2H =2、3EH =
62、5FH=95 ですから、これは MIDICH =3、ノート・ナンバー 62(音名は D4)、ベロシティー
95 のノート・オン・メッセージです。
<例 2 > CE49
CnH はプログラム・チェンジのステータスで、n は MIDI チャンネル・ナンバーです。EH
=14、49H =73 ですから、これは MIDICH =15、プログラム・ナンバー 74(GS では
Flute)のプログラム・チェンジ・メッセージです。
<例 3 > EA0028
EnH はピッチ・ベンド・チェンジのステータスで、n は MIDI チャンネル・ナンバーです。
第 2 バイト(00H= 0)がピッチ・ベンド値の下位バイト、第 3 バイト(28H=40)が上位バ
イトですが、ピッチ・ベンド値は 4000H(= 64×128+ 0= 8192)を 0 とする符号のある値
ですから、この場合のピッチ・ベンド値は、2800H−4000H =40×128 +0 −(64×128
+0)= 5120−8192 =-3072
ピッチ・ベンド・センシティビティーが 2 半音になっているとすると、-8192(0000H)で
-200 セントだけピッチを変化させますから、この場合は -200×(-3072)÷(-8192)=-75
セントのピッチ・ベンドを MIDICH =11 に指示していることになります。
<例 4 > B364006500060C2600647F657F
BnH はコントロール・チェンジのステータスで、n は MIDI チャンネル・ナンバーです。コントロー
ル・チェンジは、第 2 バイトがコントローラー・ナンバー、第 3 バイトはそのパラメーターの値です。
MIDI では、ランニング・ステータスといって、同じステータスのメッセージが連続する場合は、
2 つめ以降のステータスを省略してもよいことになっていますから、このメッセージは以下の情
報が順番に送られています。
B3 6400 MIDICH=4 に RPN パラメーター・ナンバーの下位バイト:00H
(B3) 6500 MIDICH=4 に RPN パラメーター・ナンバーの上位バイト:00H
(B3) 060C MIDICH=4 にパラメーター値の上位バイト:0CH
(B3) 2600 MIDICH=4 にパラメーター値の下位バイト:00H
(B3) 647F MIDICH=4 に RPN パラメーター・ナンバーの下位バイト:7FH
(B3) 657F MIDICH=4 に RPN パラメーター・ナンバーの上位バイト:7FH
つまり、MIDICH= 4 の RPN パラメーター・ナンバー 0000H に 0C00H のパラメーター値
を送り、その後 RPN パラメーター・ナンバー 7F7FH に設定するメッセージです。
RPN パラメーター・ナンバー 0000H の機能はピッチ・ベンド・センシティビティーで、パラ
メーター値の上位バイトが半音単位を示しています。この例ではパラメーター値の上位バイト
は 0CH=12 ですから、ピッチ・ベンドの最大変化幅を±12 半音(1 オクターブ)に設定して
います。(GS 音源ではピッチ・ベンド・センシティビティーの下位バイトは無視されますが、ど
の機器でも正しく動作させるために下位バイト(パラメーター値は 0)も一緒に送りましょう。)
RPN は一度パラメーター・ナンバーを設定すると、その後同一チャンネルに送られたデータ・
エントリーがすべて有効になってしまうため、必要なパラメーター値を送ったあとでパラメー
ター・ナンバーを 7F7FH に設定して誤動作を防止することが推奨されています。最後の(B3)
647F(B3)657F はそのためのものです。
曲データ(たとえばスタンダード MIDI ファイルのデータ)中では<例 4 >のように多くのイベ
ントをランニング・ステータスで記述することは好ましくありません。曲中で、ポーズ/早送り
/巻き戻しなどの操作を行った場合に、シーケンサーが正しいステータスを出力できず、音源
が誤った解釈をしてしまう可能性があります。すべてのイベントにそれぞれステータスをつける
ようにしてください。
また、RPN はパラメーター・ナンバーの設定とパラメーター値の送信が正しい順序で行われな
ければなりません。シーケンサーによっては、同一(または近接した)クロックに記述されたイ
ベントの送信順序がデータに記載されている順序と変わってしまうものもありますから、各イベ
ントの時刻を(TPQN =96 で 1Tick、TPQN= 480 なら 5Ticks 程度)ずらして記述する
のがよいでしょう。
※TPQN:TicksPerQuarterNote(4 分音符あたりのティック数)