17
4. 参考資料
(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 段階です。それ以
上の分解能のデータは複数のバイトを使います。たとえば、aa bbH と 2 バイトの 7 ビット
ごとの 16 進表記された値は、aa× 128 + bb となります。
※ ±の符号のある値は、00H= -64、40H =±0、7FH = +63 となり、10 進表記には上表
の 10 進数から 64 引いた値を使います。2 バイトの場合は、00 00H= -8192、40 00H
=±0、7F 7FH=+8191 となり、たとえば aa bbH を 10 進表記すると aa bbH−40
00H=aa×128+bb−64×128 となります。
※ 「ニブル」と書かれたデータの場合は、4 ビットごとの 16 進表記が使用されます。0a 0bH
と 2 バイトのニブル表記された値は、a× 16 + b となります。
<例 1 >
5AH の 10 進表記は ?
前表より5AH=90 となります。
<例 2 >
7 ビットごとの 16 進表記された値 12 34H の 10 進表記は ?
前表より12H=18、34H=52 ですから
18×128+52=2356
となります。
<例 3 >
0A 03 09 0D とニブル表記された値の 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 ですから
00 04 0E 0AH
となります。
<例 1 >92 3E 5F
9n はノート・オンのステータスで、n は MIDI チャンネル・ナンバーです。2H= 2、3EH =
62、5FH=95 ですから、これは MIDI CH=3、ノート・ナンバー 62(音名は D4)、ベロシティー
95 のノート・オン・メッセージです。
<例 2 >CE 49
CnH はプログラム・チェンジのステータスで、n は MIDI チャンネル・ナンバーです。EH
=14、49H=73 ですから、これは MIDI CH=15、プログラム・ナンバー 74(GS では
Flute)のプログラム・チェンジ・メッセージです。
<例 3 >EA 00 28
EnH はピッチ・ベンド・チェンジのステータスで、n は MIDI チャンネル・ナンバーです。
第 2 バイト(00H = 0)がピッチ・ベンド値の下位バイト、第 3 バイト(28H=40)が上位バ
イトですが、ピッチ・ベンド値は 40 00H(=64×128+0=8192)を 0 とする符号のある値
ですから、この場合のピッチ・ベンド値は、28 00H− 40 00H = 40 × 128 + 0 −(64 × 128
+0)=5120 − 8192 = -3072
ピッチ・ベンド・センシティビティーが 2 半音になっているとすると、-8192(00 00H)で
-200 セントだけピッチを変化させますから、この場合は -200×(-3072)÷(-8192)= -75
セントのピッチ・ベンドを MIDI CH=11 に指示していることになります。
<例 4 >B3 64 00 65 00 06 0C 26 00 64 7F 65 7F
BnH はコントロール・チェンジのステータスで、n は MIDI チャンネル・ナンバーです。コントロー
ル・チェンジは、第 2 バイトがコントローラー・ナンバー、第 3 バイトはそのパラメーターの値です。
MIDI では、ランニング・ステータスといって、同じステータスのメッセージが連続する場合は、
2 つめ以降のステータスを省略してもよいことになっていますから、このメッセージは以下の情
報が順番に送られています。
B3 64 00 MIDI CH = 4 に RPN パラメーター・ナンバーの下位バイト:00H
(B3) 65 00 MIDI CH=4 に RPN パラメーター・ナンバーの上位バイト:00H
(B3) 06 0C MIDI CH= 4 にパラメーター値の上位バイト:0CH
(B3) 26 00 MIDI CH=4 にパラメーター値の下位バイト:00H
(B3) 64 7F MIDI CH = 4 に RPN パラメーター・ナンバーの下位バイト:7FH
(B3) 65 7F MIDI CH = 4 に RPN パラメーター・ナンバーの上位バイト:7FH
つまり、MIDI CH=4 の RPN パラメーター・ナンバー 00 00H に 0C 00H のパラメーター値
を送り、その後 RPN パラメーター・ナンバー 7F 7FH に設定するメッセージです。
RPN パラメーター・ナンバー 00 00H の機能はピッチ・ベンド・センシティビティーで、パラ
メーター値の上位バイトが半音単位を示しています。この例ではパラメーター値の上位バイト
は 0CH = 12 ですから、ピッチ・ベンドの最大変化幅を±12 半音(1 オクターブ)に設定して
います。(GS 音源ではピッチ・ベンド・センシティビティーの下位バイトは無視されますが、ど
の機器でも正しく動作させるために下位バイト(パラメーター値は 0)も一緒に送りましょう。)
RPN や NRPN は一度パラメーター・ナンバーを設定すると、その後同一チャンネルに送られた
データ・エントリーがすべて有効になってしまうため、必要なパラメーター値を送ったあとでパ
ラメーター・ナンバーを 7F 7FH に設定して誤動作を防止することが推奨されています。最後の
(B3)647F(B3)65 7F はそのためのものです。
曲データ(たとえばスタンダード MIDI ファイルのデータ)中では<例 4 >のように多くのイベ
ントをランニング・ステータスで記述することは好ましくありません。曲中で、ポーズ/早送り
/巻き戻しなどの操作を行った場合に、シーケンサーが正しいステータスを出力できず、音源
が誤った解釈をしてしまう可能性があります。すべてのイベントにそれぞれステータスをつける
ようにしてください。
また、RPN や NRPN はパラメーター・ナンバーの設定とパラメーター値の送信が正しい順序
で行われなければなりません。シーケンサーによっては、同一(または近接した)クロックに記
述されたイベントの送信順序がデータに記載されている順序と変わってしまうものもありますか
ら、各イベントの時刻を(TPQN = 96 で 1 Tick、TPQN = 480 なら 5 Ticks 程度)ずらし
て記述するのがよいでしょう。
※ TPQN:Ticks Per Quarter Note(4 分音符あたりのティック数)