V3MMLmanual

7.9 @az[1]:オートダンパー機能

← 目次

【記述例】

この場合、@az1以降の音符が、オートダンパーが有効になります。 【解説】 エンベロープのオートダンパー(自動消音機能)を設定します。 引数[1]には、次のノートオンの何tickカウント手前でダンパーを掛けるかを、 数値で指定します。 設定範囲は 0 以上の整数です。 引数[1]が 0 の場合、オートダンパーは無効です。 トラック先頭における初期設定は、@az0 です。 実行されるダンパーは、メタデータ設定「#MB:CONFIG { damper_rate:…}」ま たは、@zrコマンドによる設定内容に従います。 オートダンパーの使用目的は、アタックが緩いエンベロープの「緩さ」を強調す ることです。 【備考】オートダンパーの挙動 オートダンパー有効の際は、「次のノートオンの何tickカウント手前か」を判断 するため、MMLコンパイラは、音符または休符を処理する時、次に来るのが何 かを先読みしています。 先読み処理中、 今回が音符だった場合:

#MB:CONFIG {
env_clock: unit=sec: rate=1/120,
env_resol: unit=smp,
damper_rate: env=0.03: fms=15,
}
#MB:ENV_A @ea=1 { peak=15, init=&, | n:5:15, r:180:0 }
t120 q8,8 v15 @@"pls" @ea1 l8 o5
@az0  crergrer fr dr gr gr z r4
@az1  crergrer fr dr gr gr z r4
q4    c4e4g4e4 f4 d4 g4 g4 z r4
q8@q3 c4e4g4e4 f4 d4 g4 g4 z r4;

先読み処理では、まず、次に来るのが音符か休符かトラック終端が現れるま で、その他のコマンドを読み飛ばします。 次回が音符だった場合: 引数[1]のtickカウント手前でダンパー処理をし、引数[1]だけ休符。 次回がスラーでつなぐ音符だった場合: 今回の音符においてダンパー処理関係は何もしない。 次回が休符だった場合: 今回の音符においてダンパー処理関係は何もしない。 次回がトラック終端だった場合: 音符だった場合と同様。 今回が休符だった場合: 先読み処理では、まず、次に来るのが音符か休符かトラック終端が現れるま で、その他のコマンドを読み飛ばします。 次回が音符だった場合: 引数[1]のtickカウント手前でダンパー処理をし、引数[1]だけ休符。 次回が休符だった場合: 今回の音符においてダンパー処理関係は何もしない。 次回がトラック終端だった場合: 音符だった場合と同様。 ただし、今回が音符だった場合の「引数[1]のtickカウント手前」の判断は、 q / @q におけるゲート処理も有効だった場合、 ゲートによる休符部分内に「手前」が収まっていればそこでダンパー処理をしま すが、ゲートによる休符部分よりも「手前」だった場合には、「手前」が優先さ れてゲートより前にキーオフ&ダンパー処理が入り、残りが休符になります。 さらに、「手前」が今回の音符の長さ以上になる場合は、オートダンパーによる ダンパー機能は無効になります。例えば、@az1では、tickカウント1の音符には オートダンパーは掛かりません。