#MB:LFO_Y:yコマンドLFO定義【記述例】
このように書くと、#MB:LFO_Y と @lyコマンドによって、yコマンドLFOの定 義と適用を記述できます。 この記述例では、パルス音源のデューティ比に対して、次の時間的変化を与えて います。
ノートオンから2/60秒だけDT比25%、以降DT比50%。
ノートオフからはDT比12.5% 以上
#MB:CONFIG {
env_clock: unit=sec: rate=1/60,
env_resol: unit=smp,
lfo_clock: unit=sec: rate=1/60,
lfo_resol: unit=sec: rate=1/60,
}
#MB:VOLUME_SCALE vs=1 {
type=linear, v=15, vr=0, vl=15, vlr=0, vh=15,
}
#MB:ENV_A @ea=1 { peak=15, init=0 |
n:0:15, n:1:15, n:0:14, n:1:14, n:0:13, n:1:13,
n:0:12, n:1:12, n:0:12, n:1:12, n:0:11, n:1:11,
n:0:11, n:1:11, n:0:10,
r:0:2, n:32:2, n:0:0
}
#MB:LFOTBL_ATK 1 { loop=2, cmpl=0, offset=0, denom=1, width_mode=step, |
0.25, 0.25, 0.5,
}
#MB:LFOTBL_REL 9 { loop=0, cmpl=0, offset=0, denom=1, width_mode=step, |
0.125,
}
#MB:LFO_Y @ly=1 {
depth=1, width=1, delay=0, yform=pls, yfunc=pwm, tbl_atk=1, tbl_rel=9
}
t120 l8 vs1 v15 @@"pls" @ea1 @ly1 o4
q8,8 f16a16 q3 >d<fadfa>d<
q8 e16a16 q3 >c<ea>c<ea>c<;
【解説】 yコマンドLFOコマンド(@ly[1]): yコマンドLFO定義(#MB:LFO_Y)の定義番号を整数で指定します。 定義番号は 0 〜 1023 の整数です。 未定義の番号を指定するとエラーになります。 トラック先頭における初期設定では、yコマンドLFOは停止状態です。 yコマンドLFO定義(#MB:LFO_Y): yコマンドLFOコマンド(@ly[1])で使用する、yコマンドLFO設定を定義し ます。 yコマンドLFO定義では、揺らす波形はユーザー定義テーブル方式に固定され ていて、それに従ったyコマンドのコマンド発行シーケンスが行われます。 yコマンドLFO定義方法の概要は、 ・行頭からの記述で、キーワード「#MB:LFO_Y」を書く。 ・続けて、スペースを置き、「@ly=定義番号」を書く。 ・続けて、スペースを置き、中括弧「{}」で括られた設定データを書く。 です。 定義番号: 定義番号は、@lyコマンドの引数で使用する番号と合致するように定義します。 定義番号の設定範囲は 0 〜 1023 です。 設定データ: 【記述例】
【解説】 フォーマットは次の通りです。 #MB:LFO_Y @ly=定義番号 {
depth=[], width=[], delay=[], yform=[], yfunc=[],
tbl_atk=[], tbl_rel=[],
}
#MB:LFO_Y @ly=1 {
depth=1, width=1, delay=0, yform=pls, yfunc=pwm, tbl_atk=1, tbl_rel=9
}
depth: depth=[]では、揺らす値としてユーザー定義テーブルから得られる値への倍率を 数値で指定します。 ゼロを指定した場合、LFOが無効になります。 width: width=[]では、時間単位としてLFOステップ数を数値で指定します。 (揺らすパターンがユーザー定義テーブル方式に固定されているため) 数値は1以上の値で指定してください。 LFOステップ数は、LFO解像度設定(@lorコマンドなど)で決まる、LFO 専用の最少時間単位です。 【注】 widthの動作モードは、ユーザー定義テーブル内の設定で、LFOステップ数か LFOシフト数かを選択することができます(初期設定はLFOステップ数)。 詳細は「#MB:LFOTBL_ATK」を参照してください。 delay: delay=[]では、ノートオンからLFO開始までの遅延時間を数値で指定します。 時間単位は width 同様です。 delay が 0 以上のとき: ノートオンの都度、LFOシーケンスが再スタートします。 (ノートオン同期モード) delay が負数のとき: ノートオンでLFOシーケンスが再スタートしない、ノートオン非同期モードと なります。いかなる負数の値も、このモード指定と判定されます。 ノートオン非同期モードにおいて、任意のタイミングでLFO位相のリセットを 行いたい場合は、LFOの再スタートコマンドを使用します。 LFOコマンドの指定時には、同期・非同期モードに関わらずLFOシーケンス は位相ゼロからスタートします。 【注意】 delay によりyコマンドLFOが遅延されている間は、LFOによるyコマンドが 発行されないため、ノートオン直前まで発行されていたLFOによるyコマンド が残ったままの形になり、想定外のシーケンスになる可能性があります。 このような問題を避けるには、delay を 0 とし、LFOテーブル内のデータ定 義で、遅延に相当するデータを含むデータ列にします。
yform: yform=[]では、yコマンドの宛先となる、音源モジュール名を、文字列で指定し ます。(音源モジュール名一覧) yfunc: yfunc=[]では、yコマンドの宛先となる、音源モジュールに対応した機能名を、 文字列で指定します。 機能名の文字列は、各音源モジュールの説明内の、
【yコマンドにおける、音源モジュールへの設定】 の項の内容を参照してください。 tbl_atk: yコマンドLFO定義では、揺らすパターンはユーザー定義テーブル方式に固定 されているので、テーブル番号を指定する必要があります。 tbl_atk=[]では、#MB:LFOTBL_ATKで定義したテーブル番号を指定します。 #MB:LFOTBL_ATKは、ノートオンの際にシーケンスされるテーブル定義です。 tbl_atkの設定範囲は 0 〜 4095 です。 tbl_rel: yコマンドLFO定義では、揺らすパターンはユーザー定義テーブル方式に固定 されているので、テーブル番号を指定する必要があります。 tbl_rel=[]では、#MB:LFOTBL_RELで定義したテーブル番号を指定します。 #MB:LFOTBL_RELは、ノートオフの際にシーケンスされるテーブル定義です。 tbl_relの設定範囲は 0 〜 4095 または -1 です。 tbl_rel=-1 の場合、tbl_relは未使用扱いとなり、ノートオフの際には、参照さ れるテーブルに変更がかからず、ノートオンで参照されているテーブルが継続し て参照されて yコマンドLFOが掛かり続けます。