12
4.参考資料
MIDI では、データ・バリューや、エクスクルーシブ・メッセージのアドレス/サイズなどには、7
ビットごとの 16 進表記が使用されます。
10 進数との対応表は次の通りです。
※16 進数表記の数字の後ろには“H”を付けています。
+------+------++------+------++------+------++------+------+
| 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:10 進数(decimal)
H:16 進数(hexadecimal)
※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-4000H = aa
×128+bb−64×128 となります。
前表より5AH=90 となります。
前表より12H=18、34H=52 ですから
18×128 + 52 = 2356
となります。
9nH はノート・オンのステータスで、n は MIDI チャンネル・ナンバーです。2H=2、3EH=
62、5FH = 95 ですから、これは MIDICH = 3、ノート・ナンバー 62(音名は D4)、ベロシティー
95 のノート・オン・メッセージです。
CnH はプログラム・チェンジのステータスで、n は MIDI チャンネル・ナンバーです。9H = 9、
20H=32 ですから、これは MIDICH = 10、プログラム・ナンバー 33 のプログラム・チェンジ・
メッセージです。
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=2 に指示していることになります。
BnH はコントロール・チェンジのステータスで、n は MIDI チャンネル・ナンバーです。コントロー
ル・チェンジは、第 2 バイトがコントローラー・ナンバー、第 3 バイトはそのパラメーターの値
です。MIDI では、ランニング・ステータスといって、同じステータスのメッセージが連続する場
合は、2 つめ以降のステータスを省略してもよいことになっていますから、このメッセージは以下
の情報が順番に送られています。
B36400 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 オクターブ)に設定しています。(本
機ではピッチ・ベンド・センシティビティーの下位バイトは無視されますが、どの機器でも正しく
動作させるために下位バイト(パラメーター値は 0)も一緒に送りましょう。)
RPN は一度パラメーター・ナンバーを設定すると、その後同一チャンネルに送られたデータ・エ
ントリーがすべて有効になってしまうため、必要なパラメーター値を送った後でパラメーター・ナ
ンバーを7F7FHに設定して誤動作を防止することが推奨されています。最後の(B3)647F(B3)
657F はそのためのものです。
曲データ(たとえばスタンダード MIDI ファイルのデータ)中では<例 4 >のように多くのイベン
トをランニング・ステータスで記述することは好ましくありません。曲中で、ポーズ/早送り/
巻き戻し、などの操作を行った場合に、シーケンサーが正しいステータスを出力できず、音源が
誤った解釈をしてしまう可能性があります。すべてのイベントにそれぞれステータスを付けるよう
にしてください。
また、RPN はパラメーター・ナンバーの設定とパラメーター値の送信が正しい順序で行われな
ければなりません。シーケンサーによっては、同一(または近接した)クロックに記述されたイベ
ントの送信順序がデータに記載されている順序と変わってしまうものもありますから、各イベント
の時刻を(TPQN=96 で 1-Tick、TPQN = 480なら 5-Ticks 程度)ずらして記述するのがよ
いでしょう。
※TPQN:TicksPerQuarterNote(4 分音符あたりのティック数)