V3MMLmanual

8.16 #MB:LFOTBL_ATK:LFOテーブル定義(ATK)

← 目次

【記述例】

@lp1ではギザギザのピッチ変化、@lp2では滑らかなピッチ変化を掛けています。 【解説】 LFOの変化パターン、ユーザー定義テーブルモードで使用する、テーブルデー タを定義します。 「#MB:LFOTBL_ATK」は、ノートオン同期用に使用されます。 また、ユーザー定義テーブルのデータ定義領域は、全てのLFOで共有して利用 するため、例えばピッチLFO用に定義した内容であっても、音量LFOなど他 のLFOからでも利用できてしまう点に注意して下さい。 テーブル定義方法の概要は、 ・行頭からの記述で、キーワード「#MB:LFOTBL_ATK」を書く。 ・続けて、スペースを置き、「定義番号」を書く。 ・続けて、スペースを置き、中括弧「{}」で括られた設定データを書く。 です。

#MB:CONFIG {
lfo_clock: unit=tick: rate=1,
lfo_resol: unit=sec: rate=1/600,
}
#MB:LFOTBL_ATK 1 {
loop=0, cmpl=0, offset=0, denom=1, width_mode=step, |
0, 1, 0, -1,
}
#MB:LFOTBL_ATK 2 {
loop=0, cmpl=1, offset=0, denom=1, width_mode=step, |
0, 1, 0, -1,
}
#MB:LFO_P @lp=1 { depth=400, width=36, delay=18, form=table, tbl_atk=1, }
#MB:LFO_P @lp=2 { depth=400, width=36, delay=18, form=table, tbl_atk=2, }
#MB:ENV_A @ea=1 { peak=15, init=& | n:0:15, n:360:0, r:1:0 }
t120 q16,16 o5 @@"pls" v15 l2 @ea1
@lp1 ceg @lp2 ceg;

定義番号: 定義番号は、LFOデータ定義中のテーブル番号と合致するように定義します。 定義番号は、「#MB:LFO_P」「#MB:LFO_A」「#MB:LFO_B」「#MB:LFO_F」 「#MB:LFO_Y」の定義内における、tbl_atk=[] 項目に設定する番号に相当します。 定義番号の設定範囲は 0 〜 4095 です。 未定義のテーブル番号を参照した場合は、0 番が読み出されます。 設定データ: 【記述例】

【解説】 フォーマットは次の通りです。 #MB:LFOTBL_ATK 定義番号 {

loop=[], cmpl=[], offset=[], denom=[],
width_mode=[], shift_reso=[],          |
[],[],[]...,
}

設定データ(#MB:LFOTBL_ATKの中身)は、「|」記号1つで区切られ、前半をヘッ ダ部、後半をボディ部と呼びます。 「|」記号を省略した場合は、ボディ部のみの定義とみなされ、ヘッダ部で指定 されるはずだった内容は全て初期値のままとして扱われます。 ヘッダ部は、loop,cmpl,offset,denom,width_mode,shift_resoの6項目からなり、 いずれも省略可能です。省略した場合は、初期値のままとして扱われます。 ボディ部は、1個以上(最大2048個)のテーブル値をカンマ区切りで記述しま す。

#MB:LFOTBL_ATK 1 {
loop=0, cmpl=0, offset=0, denom=1, width_mode=step, |
0, 1, 0, -1,
}
/

360 393 「|」記号で区切る

loop: loop=[]では、ループエントリインデックスを指定します。 テーブルシーケンスをループさせる場合は、ループエントリインデックスを整数 (0 以上 2047以下)で指定します。 ループさせない場合は、-1 と指定します。 ループさせない場合、テーブル末尾に到達後は、テーブル末尾の値が維持されま す。 cmpl: cmpl=[]では、テーブル値を読み出すときの補間モードを、0 または 1 で指定し ます。 0 の場合: 0次補間モードです。 0次補間モードでは、読み出し位置が少数以下切捨ての場所にあるテーブル値が そのまま使われるため、ガクガクした形になります。 このモードは、急峻な変化の表現に向いています。このモードで滑らかに変化さ せるには多くのテーブル値を要します。 1 の場合: 1次補間モードです。 1次補完モードでは、読み出し位置(少数以下含む)に応じて、前後のテーブル 値から線形補完した値が使われるため、少ないテーブル値でも滑らかに変化させ られます。 offset: offset=[]では、テーブル値への加算値(少数以下も指定可)を設定します。 テーブル値の読み出しが、テーブル値に offset を加算した値で行われます。 denom: denom=[]では、テーブル値への分母を設定します。 0 より大きい数値(少数以下も指定可)を指定してください。 テーブル値の読み出しが、テーブル値を denom で除算した値で行われます。 計算の優先順位は、オフセット加算が優先です。

実際の値 = (テーブル値 + offset)÷ denom となります。

width_mode: width_mode=[]では、LFOの width で受け取る時間幅のタイプを、「step」ま たは「shift」の文字列で指定します。 step の場合: width をステップ数として扱います。 テーブルシーケンスはLFO解像度()を1ステップとして動作しますが、 「何ステップ経過後にテーブルインデックスを1進めるか」 を決定する動作モードとなります。 この場合、LFOでの width 受付範囲は 1 以上になります。少数以下の指定も 受け付けます。 shift の場合: width をシフト数として扱います。 テーブルシーケンスはLFO解像度()を1ステップとして動作しますが、 「1ステップ経過後に、テーブルインデックスをどれだけ進めるか」 を決定するモードとなります。 この場合、LFOでの width 受付範囲は、0 より大きく、shift_reso 以下にな ります。(width は shift_reso で除算され、0 より大きく 1 以下の範囲で利 用) (*)LFO解像度: 「#MB:CONFIG { lfo_resol:… }」または「@lor[str],[1]」による設定 shift_reso: shift_reso=[]では、「width_mode=shift」を指定した場合のみ有効な、シフト 数に対する分母を設定します(シフト数の解像度)。小数以下の指定も受け付け ます。 0 より大きい数値を指定してください。 ボディ部のテーブル値: ボディ部のテーブル値では、1 個以上(最大2048個まで)のテーブル値をカンマ 区切りで指定します。テーブル値は少数以下の指定も受け付けます。 最大個数を超える定義を行うとエラーとなり、テーブル自体が定義されません。