MIDI インプリメンテーション
12
3. 参考資料
● 10 進数と 16 進数の対応表
(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 となります。
● 実際の MIDI メッセージの例
<例 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
● エクスクルーシブ・メッセージの例とチェックサムの
計算
ローランドのエクスクルーシブ・メッセージでは、メッセージが正しく受信できているかどうかの
チェックを行うために、データの後ろ(F7 の前)にチェックサムをつけてメッセージを送ります。
チェックサムの値は、送られるエクスクルーシブ・メッセージのアドレス、データ(またはサイズ)
によって決まります。
○ チェックサムの計算のしかた(16 進表記の数字の後ろには H をつ
けています。)
チェックサムは、アドレス、サイズ、およびチェックサム自身を加算した値の下位 7 ビットがゼロ
になる値です。
具体的な計算は、送りたいエクスクルーシブ・メッセージのアドレスは aa bb ccH、データまた
はサイズが dd ee H とすると、以下のようになります。
aa+bb+cc+dd+ee+=合計
合計÷128 =商…余り
128- 余り=チェックサム
(ただし、余りが 0 のときはチェックサムは 0 とします。)