A place to dump little or mid-sized snippets of SuperCollider code.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

133 lines
3.1 KiB

// posted this earlier this year at
// http://sccode.org/1-5cM
// and this is now a combination of above and variations at
// http://sccode.org/1-5cR and http://sccode.org/1-5cQ
// SynthDefs, buses, tempoclock:
(
SynthDef("plucking", {arg out = 0, amp = 0.1, freq = 440, decay = 5, coef = 0.1;
var env, snd;
env = EnvGen.kr(Env.linen(0, decay, 0), doneAction: 2);
snd = Pluck.ar(
in: PinkNoise.ar(amp),
trig: Impulse.kr(0),
maxdelaytime: 0.1,
delaytime: freq.reciprocal,
decaytime: decay,
coef: coef);
snd = LeakDC.ar(snd).clip2;
Out.ar(out, snd * env);
}).add;
SynthDef("reverbBus", { arg outBus = 0, inBus, wet = 0.5;
var input, rev;
input = In.ar(inBus,1);
rev = JPverb.ar(input * wet, t60:3);
Out.ar(outBus, input + rev);
}).add;
// create separate bus for send->reverb
b = Bus.audio(s,1);
// tempoclock.
t = TempoClock.default;
)
/////////////////////////////////////////////////////////////////////////////////////
// variation 2
(
r = Synth("reverbBus", [\inBus, b, \wet, 0.5]);
t.tempo_(80/60); // beats per minute
Pbind(
\instrument, "plucking",
\scale, Scale.major.tuning_(\just),
\octave, 4,
\degree, Pseq([1,3,7,8], inf), // four main notes
\mtranspose, Pseq([Pseq([0],3),Pseq([-5],3)],inf), // switched mode every 3 notes (*2)
\gtranspose, Pseq([Pseq([0],36),Pseq([4],36),Pseq([[-3]],36),Pseq([2],36)],inf),
\ctranspose, Pser([Pseries(-4,1,6) +.x Pseq([0], 144)],1),
\coef, Pser([Prand([0.2,0.3,0.4,0.5],1), Prand([0.8,0.7,0.6,0.5],11)], inf),
\dur, Prand([0.25,0.26,0.24,0.255,0.255,0.25], 240),
\decay, Prand([1,2,3,4,5], inf),
\out, b, \amp, 0.4,
).play;
)
/////////////////////////////////////////////////////////////////////////////////////
// variation 1
(
~reverb = Synth("reverbBus", [\inBus, b, \wet, 0.6]);
t.tempo_(60/60);
Pbind(
\instrument, "plucking",
\out, b,
\scale, Scale.major.tuning_(\just),
\octave, 4,
\degree, Pseq([1,3,7,8,Prand([7,10,11,13,14]),8,7,3], inf),
\dur, Pseq(
[
Pwrand([
Pseq([0.2,0.2]),
//0.2,
0.4,
Pseq([0.1],4),
Pseq([0.05],4)
],
[0.5,0.3,0.1,0.1] // weights
)
],
240),
\coef, Pwrand([0.8, 0.6, 0.4, 0.2], [0.4,0.3,0.2,0.1], inf),
\amp, 0.4,
\addAction, 0, // make sure new synths are added to head of group (optional)
).play;
)
/////////////////////////////////////////////////////////////////////////////////////
// variation 3
(
r = Synth("reverbBus", [\inBus, b, \wet, 0.5]);
t.tempo_(1); //
Pbind(
\instrument, "plucking",
\scale, Scale.major.tuning_(\just),
\octave, 4,
\degree, Pseq([1, 3, 7, 3,-4,-2, 7, 8, 1,-2, 2, 3], inf),
\mtranspose, Pseq([Pseq([0],144),Pseq([0],48),Pseq([3],48),Pseq([4],48)], inf),
\gtranspose, Pseq([Pseq([0],36),Pseq([4],36),Pseq([[-3]],36),Pseq([2],36)],inf),
\ctranspose, Pser([Pseries(-4,1,4) +.x Pseq([0], 144)],2),
\coef, Pseq([ Pseq([
Prand([0.2,0.3,0.4,0.5],1),
Prand([0.6,0.5],5),
Prand([0.2,0.3],1),
Prand([0.6,0.5],5)
], 1),
Prand([0.7,0.6],12)
],inf),
\dur, Pseq([Prand([0.25,0.25,0.24,0.245,0.255,0.25], 140),0.26,0.3,0.4,0.7], inf)
* Pseq([Pseq([0.8],110), Pgeom(0.8,1.002,34)],inf),
\decay, Pseq([8, Prand([1,2,3,4], 4),3,2,1], inf),
\out, b, \amp, 0.4,
).play;
)