Part of the code we will see in our Workshop!
From my composition “To my Dogs”:
/////////////////////Step # 1////**
(((
~n=3;
SynthDef.new(\bellA,{
arg freq=4, amp=1;
var fund, harm1,harm2,harm3,harm4,harm5,harm6,harm7,harm8,harm9,harm10,harm11,harm12,harm13,harm14,harm15,harm16,harm17,harm18,harm19,harm20,sig,env;
//envelope
env=EnvGen.kr(Env.perc(0.0001,1));
//spectral content
sig=Klang.ar(`[
[1]++Array.rand((~n-1),1,30000).sort,
Array.rand(~n,0.01,0.5).sort.reverse,
Array.rand(~n,0,pi)
],freq);
sig=sig*env;
//effects
sig=Pan2.ar(sig,0);
//output
Out.ar(0,sig);
}).play;
)
+
(
~n=3;
SynthDef.new(\bellA,{
arg freq=4, amp=1;
var fund, harm1,harm2,harm3,harm4,harm5,harm6,harm7,harm8,harm9,harm10,sig,env;
//envelope
env=EnvGen.kr(Env.perc(1,3));
//spectral content
sig=Klang.ar(`[
[1]++Array.rand((~n-1),1,30000).sort,
Array.rand(~n,0.01,0.5).sort.reverse,
Array.rand(~n,0,pi)
],freq);
sig=sig*env;
//effects
sig=Pan2.ar(sig,0);
//output
Out.ar(0,sig);
}).play;
)
+
(
~n=3;
SynthDef.new(\bellA,{
arg freq=4, amp=1;
var fund, harm1,harm2,harm3,harm4,harm5,sig,env;
//envelope
env=EnvGen.kr(Env.perc(0.0001,5));
//spectral content
sig=Klang.ar(`[
[1]++Array.rand((~n-1),1,30000).sort,
Array.rand(~n,0.01,0.5).sort.reverse,
Array.rand(~n,0,pi)
],freq);
sig=sig*env;
//effects
sig=Pan2.ar(sig,0);
//output
Out.ar(0,sig);
}).play;
)
)
)
//////////////////Step # 2////**
(
(
(
{{(
(
{{(~rut=Routine({
{
p = Pbind(*[
instrument: (\bellA),
freq: Pseq(Array.rand(1000, 0.001, 500)),
db: Pseq([-10, -20, -40, -50], inf),
pan: Pseq([-1,0,1,0], inf),
dur: Pseq(Array.rand(1000, 0.00001, 1)),
]);
p = Pbind(*[
instrument: (\bellA),
freq: Pseq(Array.rand(1000, 0.001, 5000)),
db: Pseq([-10, -20, -40, -50], inf),
pan: Pseq([-1,0,1,0], inf),
dur: Pseq(Array.rand(1000, 0.00001, 2)),
]);
p = Pbind(*[
instrument: (\bellA),
freq: Pseq(Array.rand(1000, 0.001, 50)),
db: Pseq([-10, -20, -40, -50], inf),
pan: Pseq([-1,0,1,0], inf),
dur: Pseq(Array.rand(1000, 0.00001, 3)),
]);
p.play;
Array.rand(1000, [1,3,4,5,7], [8]).wait;
}.loop;
}).play;
)
+
p.play;
Array.rand(100, [1,3,4], [3]).wait;
}.loop;
}).play;
)
+
p.play;
Array.rand(10, [1,2,4,6], [10]).wait;
}.loop;
}).play;
)
)
/////////////////////Step # 3 ////**
(
SynthDef.new(\drum, {
var input, sig, env, env1, impact;
impact=SinOsc.ar(120, 0, 1.5);
env1=EnvGen.kr(Env.perc(0.001,0.25));
impact=impact*env1;
input=WhiteNoise.ar(0.8);
sig=LPF.ar(input, XLine.kr(30, 800));
env=EnvGen.kr(Env.perc(0.001, 0.6));
sig=sig*env;
sig=sig+impact;
sig=Pan2.ar(sig,0);
Out.ar(0,sig);
}).play;
SynthDef.new(\snare, {
var input, sig, env, env1, impact;
impact=SinOsc.ar(120, 0, 0.1);
env1=EnvGen.kr(Env.perc(0.001,0.25));
impact=impact*env1;
input=WhiteNoise.ar(0.8);
sig=HPF.ar(input, XLine.kr(300, 180));
env=EnvGen.kr(Env.perc(0.001, 0.5));
sig=sig*env;
sig=sig+impact;
sig=Pan2.ar(sig,0);
Out.ar(0,sig);
}).play;
SynthDef.new(\guitar, {
arg amp=1, freq=4;
var harm1, harm2, harm3, harm4, sig, env;
env=EnvGen.kr(Env.perc(0.01,1.8));
sig=Klang.ar(`[Array.rand(1,1.0,30).sort],freq);
sig=sig*env;
sig=Pan2.ar(sig,0);
Out.ar(0,sig);
}).play;
)
/////////////////////Step # 4 ////**
(
~tempo=XLine.kr(10, 150, 10);
Pbind(
\instrument,\guitar,
\dur,Prand([0.25,0.5, 1/3, 1, 0.125, 0.625],inf),
\amp,0.2,
\freq,Pseq([
Pseq([[60,61,62],[63,120,50,37]]),
Pseq([100,63,43,84,77,4,94,59,39,6,6,2,7,28,28,38,3,55,33,3,65,72,5,72,9,74,7,74,67,4,86,49,35,27,98,84,85,7,2,95,95,66,42,95,2,83,4,23,36,86,72,6,3,5,33,29,42,95,96,2,77,63,32,84,24,45,69,3,9,37,94,2,7,56,7,54,2,9],8),
Prand([20,59,37,77,4,94,59,39,6,6,2,7,28,28,38,3,55,33,3,65,72,5,72,9,74,7,74,67,4,86,49,35,27,98,84,85,7,2,95,95,66,42,95,2,83,4,23,36,86,72,6,3,5,33,29,42,95,96,2,77,63,32,84,24,45,69,39,37,94,2,7,56,7,54,2,970,124,80],5),].midicps,inf)).play(TempoClock(~tempo/60));
Pbind(
\instrument,\snare,
\dur,Pwrand.new(
[
Pseq([0.25], 5),
Pseq([Pseq([1/3], 15), Pseq([1/8], 6)],1),
],
[30,70].normalizeSum,inf),
\amp, 1,).play(TempoClock(~tempo/60));
Pbind(
\instrument,\drum,
\dur,Pwrand(
[
Pseq([0.25],5),
Pseq([Pseq([1/3], 5),Pseq([1/8],4)],1),
Pseq([Pseq([0.5],7),Pseq([1/3],3)],1),
Pseq([Pseq([0.125],3),Pseq([1/8],9)],1),
],
[30,15,15,40].normalizeSum,inf),
\amp,4,).play(TempoClock(~tempo/60));
)