#MB:ENV_F:フィルタエンベロープ定義【記述例】
このように書くと、
#MB:ENV_A @ea=1 {
peak=15, init=0, |
n:1:15, n:24:13, r:96:0
}
#MB:ENV_F @ef=1 {
peak=100, init=0, |
n:10:100, n:20:100, n:120:30, r:60:0
}
#MB:FILTER_D @fd=0 { type=lpf_h, depth_@ef=100, freq=40, resonance=0 }
t120 q11,16 v15 @@"pls" @ea1 @ef1 @fd0
l2 o5 cegefdgg cegefdg&g;
【解説】 フィルタエンベロープコマンド(@ef[1]): フィルタエンベロープ定義(#MB:ENV_F)の定義番号を整数で指定します。 定義番号は 0 〜 1023 の整数です。 未定義の番号を指定するとエラーになります。 トラック先頭における初期設定には定義番号は無く、システム側で用意された暫 定的なフィルタエンベロープが掛かっています。 @efコマンドは、@fdコマンド(動的フィルタ)が有効の場合に機能します。 フィルタエンベロープ定義(#MB:ENV_F): フィルタエンベロープコマンド(@ef[1])で使用する、フィルタエンベロープ設 定を定義します。 フィルタエンベロープ定義方法の概要は、 ・行頭からの記述で、キーワード「#MB:ENV_F」を書く。 ・続けて、スペースを置き、「@ef=定義番号」を書く。 ・続けて、スペースを置き、中括弧「{}」で括られた設定データを書く。 です。 定義番号: 定義番号は、@efコマンドの引数で使用する番号と合致するように定義します。 定義番号の設定範囲は 0 〜 1023 です。 設定データ: 【記述例】
#MB:ENV_F @ef=1 {
peak=100, init=0, |
n:10:100, n:20:100, n:120:30, r:60:0
}
【解説】 フォーマットは次の通りです。 #MB:ENV_F @ef=定義番号 {
peak=[], offset=[], init=[], |
[ENV節],[ENV節],…(少なくとも2個以上のENV節)
}
peak: peak=[]では、エンベロープの出力レベルの最大値を、0 より大きい値で指定し ます。 出力レベルの計算結果は、0 〜 1 の浮動小数点数で内部管理されています。 (データ定義内で指定される出力レベル値を、peak値で除算し、0 〜 1 に変換 して使っています) ただし、出力レベルの計算結果は、
(レベル値 + offset値) ÷ peak値 の結果が、0 〜 1 の範囲に収まらない場合はエラーになります。 offset:(省略可能。省略時の値は0) offset=[]では、エンベロープの出力レベルに対するオフセット値を指定しま す。オフセット値の加算は、peak値による除算を行う前に実行されます。 init: init=[]では、エンベロープ開始時点の出力レベルを、数値または「&」記号で指 定します。 「&」を指定したとき: ノートオン時の初期レベルが、直前までの演奏による出力レベルを引き継いだ値 になります。 数値を指定したとき: ノートオン時の初期レベルが、指定した数値になります。 数値の指定範囲は、0 〜 peak値 です。 フィルタエンベロープでは、音量エンベロープと違い、 リリース最終節のレベルをゼロにする必要はありません。
/
320 393 「|」記号で区切る
ENV節: ENV節は、「:」で区切られた3個1組のパラメータを、「,」区切りで複数列挙 したものです。 ENV節は、2組以上定義します。(最大2048組まで) 2組とは、最低でもエンベロープ開始時点の節と、リリース開始時点の節が必要 なためです。 ENV節内の要素の名前を、次のように決め、それぞれについて説明します。
[ptr]:[rate]:[lv],
ENV節の要素[ptr]: [ptr]には、今回のエンベロープ節の種類を、N、L、R の3択で指定します(大 文字でも小文字でも指定可能)。
N:通常のエンベロープの節
L:ループエントリのエンベロープの節
R:リリースエントリのエンベロープの節 L の節は、R より前の節で定義しなければなりません。 L の節は、1つのエンベロープ定義で1回だけ使用できますが、0回でも構いま せん。 R の節は、1つのエンベロープ定義で1回だけ、必ず使用しなければなりませ ん。 L の節は、R の直前の節を、サスティンの末尾と解釈することで、サスティンの 末尾の節から L の節へ無条件ジャンプするポイントになりますが、L の節が、 サスティン末尾であった場合、ループリクエストは無視されます。(自分自身に ループジャンプはしません) ENV節の要素[rate]: [rate]には、今回のエンベロープ節における変化レートを、 0 以上の数値で指定します。 変化レートの数値は、先頭1文字のアルファベット(大文字小文字問わず)で モード指定を記述することで、2種類の解釈がなされます。 モード指定は省略可能で、省略した場合、T を指定したものとみなされます。 T(ティー)を指定したとき: [rate]の解釈を、時間(time)とします。 変化時間を固定的に指定します。 時間の単位は、#MB:CONFIGまたは @eocコマンドの、エンベロープクロック設定 に依存します。 このモードでは、ディケイ時など、始点レベルと到達点レベルの差が毎回固定的 な場合は変化の傾きが一定になりますが、リリース時など、始点レベルと到達点
レベルの差が一定でない場合は、時間が固定される都合、変化の傾きが変わりま す。 I(アイ)を指定したとき: [rate]の解釈を、変化率(勾配:incline)とします。 時間当たりの変化量を、
最大変移量 ÷ rate値 で求めることで、固定化された変化量を設定できます。 そのため、リリース時など、始点レベルと到達点レベルの差が一定でない場合 は、変化の傾きが固定される都合、時間が変わります。 [rate]の値が大きいほどゆっくり推移します。0 のときは時間 0 で推移終了し ます。 【例1】
変化率3の記述。 【例2】
時間10の記述。この例ではTが省略されている状態。 ENV節の要素[lv]: [lv]には、今回のエンベロープ節における到達点レベルを、数値で指定します。 数値の指定範囲は、0 〜 peak値 です。 前回のレベルと今回のレベルが同じ場合で、[rate] が I0 または T0 の場合、 時間 0 で何もせず次のエンベロープ節に移ります。
I3
10