エンベロープ
以前UGenの説明なんかやってられっか、と書きましたが
音作りの基本的に押さえといたらいいんではないか、というのはいくつかある。
例えばEnvGenはエンベロープを生じせしめるものですが、エンベロープが何かというと、音量の変化と言うか、音の輪郭と言うか。
現実の音には必ず始めと終わりがありますが(エネルギーは散逸する)
データとしての音にそんなものはないので、必要なら始めと終わりを与えてやらねばならない。
SynthDef("hoge", { var o = SinOsc.ar(500); Out.ar(0, Pan2.ar(o, 0)); }).play;
これはただの「ぽー」です。
SynthDef("hoge", { var e = EnvGen.ar(Env.perc(0, 1)); // エンベロープ o = SinOsc.ar(500, 0, e); Out.ar(0, Pan2.ar(o, 0)); }).play;
最大から始まり1秒で消え去るエンベロープを入れました。
これだけでも、ただの「ぽー」ではなく楽器っぽい感じになる。
EnvGenとかEnvの詳細はヘルプを参照(丸投げ)。
SynthDef("hoge", { var t = Impulse.ar(1); // 1Hzのインパルス e = EnvGen.ar(Env.perc(0, 1), t); o = SinOsc.ar(500, 0, e); Out.ar(0, Pan2.ar(o, 0)); }).play;
Impulseでもってトリガさせたりも可能。
エンベロープと言っても、要は音と同じ波形なので、用法は何も音量に限らない。
SynthDef("hoge", { var t = Impulse.ar(1); e = EnvGen.ar(Env.perc(0, 1), t); o = SinOsc.ar(500*e, 0, e); // 周波数にエンベロープ Out.ar(0, Pan2.ar(o, 0)); }).play;
周波数にエンベロープを掛けたら「どぅーん」という下がる音になった。
SynthDef("hoge", { var t = Impulse.ar(1); e = EnvGen.ar(Env.perc(0, 1), t); o = SinOsc.ar(e**2*500, 0, e); // 周波数にエンベロープの2乗 Out.ar(0, Pan2.ar(o, 0)); }).play;
何乗というのは「**」と書く。エンベロープの2乗って何だ。
二次関数のグラフ、いわゆる放物線というやつですが、こうすると周波数がぎゅいんと下がってセクシーな感じになる。と思います。数字を増やせばどんどんくびれる。