u-he UHM言語 学習04 Envelope
エンベロープの用途は広く、時間軸に沿って、波形のレベルを調整することができる。
T1~T8:0~2048 ポイントとの距離(時間)indexに対応
L0~L8:-1.0~0.0~1.0 レベル
T1とL1のようにセットとなっている。T0がないのはスタート位置で固定だから。L0のみで設定する。
上記の点と点を結ぶCurveは以下の4タイプが選べる。
- linear:直線
- exponential:指数
- logarithmic:対数
- quadric:2次曲線
Waveでエンベロープを使って波形生成
分かりやすいところとして、エンベロープを使ってノコギリ波を書いてみる。 最初はレベル1で、最後(T1=2048)はレベル-1というエンベロープになる。 カーブは直線。
Envelope Curve=linear L0=1 T1=2048 L1=-1
Wave "env(index)"

カーブをexponentialにしてみる。
Envelope Curve=exponential L0=1 T1=2048 L1=-1
Wave "env(index)"

カーブをlogarithmicにしてみる。
Envelope Curve=logarithmic L0=1 T1=2048 L1=-1
Wave "env(index)"

カーブをquadricにしてみる。
Envelope Curve=quadric L0=1 T1=2048 L1=-1
Wave "env(index)"

同じように矩形波を作ってみる。注意点としてはTは前のポイントからの距離(時間)ということ。 下スクリプトではT1とT2の時間距離は0となっている。
Envelope Curve=linear L0=1 T1=1024 L1=1 T2=0 L2=-1 T3=1024 L3=-1
Wave "env(index)"

ひとつのフレームにサイン波が15周期分あり、徐々に音量が下がっていく波形。
Envelope Curve=exponential L0=1 T1=10 L1=1 T2=2048 L2=0
Wave "sin(30*pi*phase)*env(index)"

Spectrumにもエンベロープを適用できる
まず周波数領域に頭を切り替える必要がある。 まずはサイン波の生成スクリプト。 Spectrumなので、indexは最大1024。 それ以上の大きな数値は無視されるようなので、あまり気にする必要はないが、倍音との関係は把握しておかないとコントロールできないので注意。 エンベロープは時間軸の0~1がレベル1となっていて、2以降はすべてレベル0となっている。 結果DCは無視されるので、基本だけがレベル1となり、2倍音以降はレベル0となり、サイン波が生成される。
Envelope L0=1 T1=2 L1=0 T2=1022 L2=0
Spectrum "env(index)"

frameにエンベロープを適用してみる
同じサイン波の入ったフレームを用意し、エンベロープで音量を下げていく試み。
NumFrames = 101
Envelope Curve=linear L0=1 T1=100 L1=0
Wave start=0 end=100 "sin(2*pi*(phase))"
Wave "x * env(frame)"
