User manual - MIDIインプリメンテーション

32
Blockのビットフィールドの割り当て方
ケース1
配列のネスティングが3以下で、各次元の配列数が128以下であるときは、3つの7bitフィールドの下位
から割り当てます。未使用領域は0にしておきます。
例:
parameter[A][B][C]
A=8 (3bit), B=5 (3bit), C=10 (4bit),
といった3次元配列のパラメータではBlockのビットフィールドを
Block = 0000aaa 000bbb ccccccc (Binary)と割り当てます。
ケース2
ケース1の条件を満たさない場合は、各次元の配列数に必要な最小限のフィールドをBlockの下位ビット
から確保していきます。未使用領域は0にしておきます。
例1:
parameter[A][B][C][D]
A=3 (2bit), B=4 (2bit), C=3 (2bit), D=4 (2bit)
といった4次元配列のパラメータではBlockのビットフィールドを
Block = 0000000 00000a abbccdd (Binary)と割り当てます。
例2:
parameter[A][B]
A=3 (2bit), B=200 (8bit)
といった2次元配列のパラメータではBlockのビットフィールドを
Block = 0000000 000aab bbbbbbb (Binary)と割り当てます。
16.3.10 prm : Parameter ID
Parameter IDはパラメータの種類を表すものです。(後述のV Parameter List参照)
Parameter個別転送の時に転送対象となるParameterをこのフィールドのParameter IDによって表します。
16.3.11 idx : Data Index Number
Parameterが文字列などのように配列構造を持っているときに、転送を開始する配列の先頭の配列番号を表し
ます。
16.3.12 len : Data Length
このフィールドの値によってdataフィールドに格納するParameterの値のサイズを指定します。
Parameterが文字列などのように配列構造を持っているときに、転送を行う配列の長さから1を減じたものを表し
ます。
Format: LSB 0pppppppB
MSB 0qqqqqqqB
Format: 0iiiiiiiB
Format: 0lllllllB