//snakefinger bass
(
SynthDef(“bass”,{arg bus= 2, note=60, dur=0.2, pan=0.0, chorus=0.02,filtfreq=4000, filtq=0.1;
var v;
v=Mix.ar(LFSaw.ar([note-chorus,note+chorus].midicps,[pi.rand,pi.rand], 0.25)); //(([Rand(0.25,0.4),Rand(0.25,0.4)]));
v= v*EnvGen.ar(Env.perc(Rand(0.01,0.02),dur,0.5), doneAction:2);
//v=Resonz.ar(v, filtfreq, filtq);
Out.ar(0,Pan2.ar(v,pan));
}).load(s);
SynthDef(“sweepy”,
{ arg busNumber=0, busInNumber=0, rate=0.5;
var in, proc;
in = In.ar(busInNumber, 2);
proc=Limiter.ar(Resonz.ar(in*8, SinOsc.kr(LFNoise0.kr(rate,0.25,0.3), 2.0.rand, 2000, 2200), 0.4), 0.999, 0.1);
ReplaceOut.ar(busNumber,proc);
}).load(s);
SynthDef(“delay”,
{ arg busNumber=0, busInNumber=0;
var in, proc;
in = In.ar(busInNumber, 2);
proc=CombN.ar(in,0.25,0.125,1.0);
ReplaceOut.ar(busNumber,proc);
}).load(s);
)
(
var func, fxsynth, fxsynth2;
fxsynth=Synth(\sweepy);
fxsynth2=Synth.after(fxsynth,\delay);
func= {
arg basefreq=36, rate=0.125;
var p, r, durs, pan, ff, fq, chor;
durs= exprand(0.1,0.8);
pan= 1.0.rand2;
ff= rrand(1000,4000);
fq= exprand(0.1,0.5);
chor= exprand(0.01,0.2);
p= Pseq([Pn(basefreq, rrand(9,19)), Plazy({Pseries(basefreq, [-0.25,-0.5,-0.75].choose, rrand(3,18))})],inf).asStream;
r=Routine({
rrand(50,100).do(
{
Synth.before(fxsynth,\bass,[\note, p.next, \dur, durs, \pan, pan, \chorus, chor, \filtfreq, ff, \filtq, fq]);
rate.wait;
});
});
r.play;
};
Routine(
{
10.do({func.value(([0,12,24].choose)+([36,36.1,36.2,36.4,36.75].choose), [0.125,0.15,0.175].choose);
fxsynth.run(if(0.4.coin,true,false));
if(0.3.coin,{fxsynth2.run(fxsynth2.isRunning.not);});
[0.75,2.0,4.0,5.0].choose.wait
});
}).play;
)