※ 2020/04/14 再編集しました。
MSB と LSB
MIDI は 128段階のデータ
MSB、LSB というのは、
- MSB 上位バイト
- LSB 下位バイト
という意味なのですが……難しい話は抜きにして^^;
要するに MSB ってのは 「128コのデータ」 がひとかたまりになったモノを1とすると思えばいいです。
LSB は 0~127 のデータ。
128 になったら、MSB に繰り上げて MSB 01 とします。
音色は 1~128で指定、音量は 0~127で設定……。MIDI ってのは、とにかく値が 128 段階なのです。
しかし 音色やピッチ・ベンドなどには 128 段階ではとても足りないってんで、MSB と LSB を組み合わせることにより 128 × 128 = 16,384 段階もの値を扱うコトができるようになっています。

各数値の例
- 「0」
MSB 00 LSB 00 - 「127」
MSB 00 LSB 7F(127) - 「128」
MSB 01 LSB 00 - 「129」
MSB 01 LSB 01 - 「16,384」
MSB 7F(127) LSB 7F(127)
音色の MSB と LSB
いまどき、128コしか音色が入ってない音源なんてありませんね^^;
音源に 128コより多くの音色が入っているのは、やはり MSB と LSB があるおかげです。
バンク・セレクトの MSB と LSB
バンク・セレクト…… Muse で言えば「バリエーション音色」のコトです。
- MSB 000
- LSB 000 「グランドピアノ」~「ガンショット」までの基本音色 128コの詰め合わせ
- LSB 001以降 「グランドピアノ」~「ガンショット」を拡張するバンク・ナンバー
エフェクト・パラメータの値を記す場合
下は、XG 仕様書にあるエフェクト・パラメータの表です。
■XG EFFECT DEFAULT DATA
0 ~ 127 におさまる数値
XG音源のエフェクト「HALL 1」のパラメータ類は、Parameter#1 ~ Parameter#16 まで、値(Value)がすべて 0~127 の間でおさまっています。
よって、MSB はすべて 00 で良いというコトになります。
LSB は 目的の値を 16進数に変換したものを入れていけば OK です。
- 02, 01, 42 (エフェクト Parameter #1 のアドレス)
- MSB は 0(16進数で 00)
- LSB は 18(16進数で 12)
*POOL " 43, 10, 4C "
*DATA " 02, 01, 42, 00, 12 " ; Parameter #1 ReverbTime 初期値18
128 を超える数値
しかし、「Delay L.C.R」のパラメータを見ると、例えば「Parameter#3」では初期値は 5000 です。
127 の数値はとうに越えていますんで、コレを2ケタの16進数で表すには MSB ・ LSB の算出が必要です。
5000 ÷ 128 = 39 余り 8
- 02, 01, 46 (エフェクト Parameter #3 のアドレス)
- MSB は 39(16進数で 27)
- LSB は 8(16進数で 08)
となりますね(^^;A
*POOL " 43, 10, 4C "
*DATA " 02, 01, 46, 27, 08 " ; Parameter #3 CchDelay 初期値5000
……もし MSB・LSB をすべて使って音色が搭載されるとしたら?
16,384 コのバンク × 各バンクに128 音色 = 2,097,152 の音色数も不可能でない! ^^;;;
まぁ、コレは完全に余談ですけども(笑)
コメント