@#MB:ENV_A:音量エンベロープ定義【記述例】
このように書くと、
#MB:ENV_A @ea=1 {
peak=15, init=8, |
n:2:15, n:12:10, n:30:10, n:10:12, l:10:8, n:10:12,
r:i1:6, n:40:6, n:1:0
}
t100 q11,16 v15 @@"pls" @ea1
l2 o5 cegefdgg cegefdg&g;
トラック先頭における初期設定には定義番号は無く、システム側で用意された暫 定的な音量エンベロープが掛かっています。 【注】@@”fms”(FM音源)には、@EAコマンド は無効です。 @@”fms”では音色データ定義内のエンベロープを使用します。 音量エンベロープ定義(#MB:ENV_A): 音量エンベロープコマンド(@ea[1])で使用する、音量エンベロープ設定を定義 します。 音量エンベロープ定義方法の概要は、 ・行頭からの記述で、キーワード「#MB:ENV_A」を書く。 ・続けて、スペースを置き、「@ea=定義番号」を書く。 ・続けて、スペースを置き、中括弧「{}」で括られた設定データを書く。 です。 定義番号: 定義番号は、@eaコマンドの引数で使用する番号と合致するように定義します。 定義番号の設定範囲は 0 〜 1023 です。 設定データ: 【記述例】
【解説】 フォーマットは次の通りです。 #MB:ENV_A @ea=定義番号 {
peak=[], offset=[], init=[], |
[ENV節],[ENV節],…(少なくとも2個以上のENV節)
}
#MB:ENV_A @ea=1 {
peak=15, offset=0, init=8, |
n:2:15, n:12:10, n:30:10, n:10:12, l:10:8, n:10:12,
r:i1:6, n:40:6, n:1:0
}
/
314 393 「|」記号で区切る
peak: peak=[]では、エンベロープの出力レベルの最大値を、0 より大きい値で指定し ます。 出力レベルの計算結果は、0 〜 1 の浮動小数点数で内部管理されています。 (データ定義内で指定される出力レベル値を、peak値で除算し、0 〜 1 に変換 して使っています) ただし、出力レベルの計算結果は、
(レベル値 + offset値) ÷ peak値 の結果が、0 〜 1 の範囲に収まらない場合はエラーになります。 offset:(省略可能。省略時の値は0) offset=[]では、エンベロープの出力レベルに対するオフセット値を指定しま す。オフセット値の加算は、peak値による除算を行う前に実行されます。 init: init=[]では、エンベロープ開始時点の出力レベルを、数値または「&」記号で指 定します。 「&」を指定したとき: ノートオン時の初期レベルが、直前までの演奏による出力レベルを引き継いだ値 になります。 数値を指定したとき: ノートオン時の初期レベルが、指定した数値になります。 数値の指定範囲は、0 〜 peak値 です。 ENV節: ENV節は、「:」で区切られた3個1組のパラメータを、「,」区切りで複数列挙 したものです。 ENV節は、2組以上定義します。(最大2048組まで) 2組とは、最低でもエンベロープ開始時点の節と、リリース開始時点の節が必要 なためです。 ENV節内の要素の名前を、次のように決め、それぞれについて説明します。
[ptr]:[rate]:[lv],
音量エンベロープでは、リリース中の無限演奏状態を避けるため、リリース最 終節のレベルをゼロにしなければならない制限があります。 そのため、オフセット値を 0 以外にした場合、オフセット値×(-1)のレベルで リリース最終節を終わらせる必要がある点に注意してください。
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