packages feed

hsc3-graphs-0.15: gr/bouncing-objects.scd

// bouncing objects (jmcc) #2

"/home/rohan/sw/hsc3-graphs/gr/overlap-texture.scd".load;

~spawn.({
    // impulses trigger decay envelope
    var imp_frq = XLine.kr(5 + 2.0.rand2, 600, 4); // accelerating frequency
    var imp_amp = XLine.kr(0.09, 0.000009, 4); // decaying impulse amplitude
    var imp = Impulse.ar(imp_frq,0,imp_amp);
    // decays excite filter bank
    var exc = Decay.ar(imp,0.001);
    // resonant filter bank simulates resonant modes of bouncing objects
    var flt_frq = Array.fill(4, { 400 + 8000.0.rand }); // resonant freqs
    var flt_amp = Array.fill(4, { 1.0.rand });
    var flt_rtm = Array.fill(4, { 0.01 + 0.1.rand });
    var flt = Klank.ar(`[flt_frq,flt_amp,flt_rtm],exc);
    // place each bouncer at a random position in the stereo field
    var loc = Pan2.ar(flt,1.0.rand2);
    // 3 second cut off envelope to end sound
    var e = Env([1, 1, 0],[3, 0.001]);
    loc * EnvGen.kr(e,doneAction:2);
}, nextTime: { 0.6 + 0.6.rand });

// lightbulbs, pencils, cans, and other assorted objects