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以降 「グランドピアノ」~「ガンショット」を拡張するバンク・ナンバー
■P1 の音色の場合
MSB = 000X0=0
LSB = 000 (Bank0)X32=0
プログラム・チェンジP1
■P82/1 というバリエーション音色の場合
MSB = 000X0=0
LSB = 001 (Bank1)X32=1
プログラム・チェンジP82
■P49/8 というバリエーション音色の場合
MSB = 000X0=0
LSB = 008 (Bank8)X32=8
プログラム・チェンジP49

エフェクト・パラメータの値を記す場合

下は、XG 仕様書にあるエフェクト・パラメータの表です。

■XG EFFECT DEFAULT DATA

Reverb,Chorus,Variation,Insertion Block
TYPE
Parameter Number
1234……16
NO EFFECT0000……0
HALL 11810813……0
DELAY L.C.R3333166750005000……64

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 の音色数も不可能でない! ^^;;;
まぁ、コレは完全に余談ですけども(笑)