axjack's blog

axjack is said to be an abbreviation for An eXistent JApanese Cool Klutz.

Envでキックを作る

Envに慣れる

Envでエンベロープを作る。Envのargumentはlevelsの配列やtimesの配列、curveのシンボル、などを取る。timesを省略すると、1!(levelsの配列).size - 1がtimesに指定され、curveを省略すると\linが指定される。

なお、.plotを付けるとエンベロープカーブを見ることができる。

Env(levels:[0,1,0],times:[1,1]).plot;

Env(levels:[440,880,440,330,220],curve:-5).plot;

Env([0.0, 0.5, 0.0, 1.0, 0.9, 0.0], [0.5, 0.1, 0.01, 1.0, 1.5], -4).plot;

キックを作る

Envはamplitudeに掛けるのみと思っていたがそれのみにとどまらず、frequencyに掛ける(周波数変調)こともできる。

コード例

(
SynthDef(\wow,
    {
        |amp = 0.5|
        var lv_lists = [80,180,80,100,300,100];
        var num_lv = lv_lists.size;
        var e_times = 0.05;

        var f_env = Env.new(levels:lv_lists,times:(e_times!num_lv),curve:-1);
        var f_envgen = EnvGen.ar(f_env);
        var a_env = EnvGen.ar(Env.perc(0,e_times*num_lv),doneAction:2);

        var sig = SinOsc.ar(f_envgen,0,mul:amp) * a_env;
        Out.ar(0,sig!2);
    }).add;
)

//単音実行
Synth(\wow);

//Pbindで四分音符刻み
~aWow = Pbind(\instrument,\wow,\dur,1).play;

コード備忘録

f_envとf_envgenはfrequencyのエンベロープ、a_envはamplitudeのエンベロープ(パーカッシブのデフォルト)である。f_envはこのような形。

f:id:axjack:20171029230552p:plain

実行すると「一瞬ウニュってる」ような?キックが聞こえるはず。

参考

Env | SuperCollider 3.9dev Help

SC3 こーどりーでぃんぐ1 - sc3onlinuxの日記