2016年6月9日木曜日

UGenの音量を調整 - Env, EnvGen

MIDIのADSRを調整することを、
SuperColliderのEnvクラスを用いて行います。

次のコードを実行すると、下の図が表示されます。

実行例:
Env.linen(0.01, 1, 1, 1, 0).plot


Envのlinenメソッドを呼び出しています。
その名前の通り、直線的に値が描かれます。

linen(attackTime, sustainTimereleaseTimelevel, curve)

です。

曲線的な動きにするならば、curveの箇所の値を変えてやると良いです。

実行例:
Env.linen(0.01, 1, 1, 0.8, -5).plot


このような図がプロットできます。

では、Envクラスを用いて発音の長さを調整してみます。
そのために EnvGenクラスを用います。

先ほど Envクラスで作成したオブジェクトをもちいて、
新しくEnvGenクラス(UGen)を作成します。


実行例:
{
  var env = Env.linen(0.01, 1, 1, 0.8, -5);
  EnvGen.ar(env)
}.plot(3)




それでは、これをSinOscと重ね合わせたのが次のコードです。


実行例:
{
  var env = Env.linen(0.01, 1, 1, 0.8, -5);
  SinOsc.ar(440) * EnvGen.ar(env)
}.plot(3)



簡単に音量調整できました。

また、Env.linenメソッド以外にも、Env.newメソッドを使って、
Envクラスを作成する方法もあります。

実行例:
Env.new([0, 1, 0.8, 0], [0.5, 1, 1], [0, 0, -5]).plot



Env.newでは、配列で

『音量』
『前の値からの経過時間』
『傾きの種類』

を指定します。

実行例:
{
  var env = Env.new([0, 1, 0.8, 0], [0.5, 1, 1], [0, 0, -5]);
  var envGen = EnvGen.ar(env);
  SinOsc.ar(440) * envGen
}.play



0 件のコメント:

コメントを投稿