s.boot;
s.record;
s.stopRecording;
//timing and tuning
(
~beatsPerMinute=75;
~beatsPerMeasure=4;
~swing=0.01; // -1 to 1, (0) is straight, (+) is swing, (-) is wack
~scale = Scale.phrygian(\just);
~stepDur = (60/1)*(1/~beatsPerMinute)*(1/~beatsPerMeasure); //~stepDur = (sec/step)=(sec/min)*(min/beat)*(beats/step)
~swingA = ~stepDur+(~swing*~stepDur); //strong side of the swing beat
~swingB = ~stepDur-(~swing*~stepDur); //weak side of the swing beat
//lag in seconds. (0) is on top of the beat, (+) is behind, (-) is ahead
~groovyKick=(1)*~stepDur/256;
~groovySnare=(1)*~stepDur/256;
~groovyHat=(1)*~stepDur/1600;
~groovyClap=(1)*~stepDur/256;
TempoClock.default.tempo = 1;
s.latency = 0.2;
)
//loading buffers
(
~halawaVox = Buffer.readChannel(s,"/Users/conor/Desktop/SuperCollider/yfree buffers/180104 halawa vox.wav",0,-1,1);
)
//testing buffers
~halawaVox.play;
//SynthDefs
(
SynthDef(\halawaVox, {
arg out = 0, amp=1;
var sig, env;
b = ~halawaVox;
sig = PlayBuf.ar(1, b, 1, doneAction:2)*amp*2*~masterGain;
Out.ar(out, [sig,sig])
}).play;
)
(
SynthDef(\clap, {
arg outBus=0, amp = 0.5, gain = 1.5;
var env1, env2, sig, noise1, noise2;
env1 = EnvGen.ar(Env.new([0, 1, 0, 1, 0, 1, 0, 1, 0], [0.001, 0.013, 0, 0.01, 0, 0.01, 0, 0.03], [0, -3, 0, -3, 0, -3, 0, -4]));
env2 = EnvGen.ar(Env.new([0, 1, 0], [0.02, 0.3], [0, -4]), doneAction:2);
noise1 = BPF.ar(HPF.ar(GrayNoise.ar(env1), 600), 2000, 3);
noise2 = BPF.ar(HPF.ar(GrayNoise.ar(env2), 1000), 1200, 0.7, 0.7);
sig = noise1 + noise2;
sig = sig * gain;
sig = sig.softclip * amp * ~masterGain;
Out.ar(0, [sig,sig]);
}).play;
)
(
SynthDef(\kick,{
arg startFreq=60, endFreq=10, decay=0.8, lowpass=500, amp=1, noiseAmp=0.00, gain=1, dur=0.8;
var sig, env, freq;
freq = XLine.kr(startFreq, endFreq, dur, 1, 0);
env = EnvGen.kr(Env.perc(0.0014, dur, 1, -5), 1, doneAction:2);
sig = {(LPF.ar(Ringz.ar(Impulse.ar(0), freq, decay), lowpass) * amp) ! 2};
sig = sig + LPF.ar((noiseAmp*BrownNoise.ar(1)),lowpass);
sig = sig * gain;
sig = sig.softclip * amp * env * ~masterGain;
Out.ar(0, [sig,sig]);
}).play;
)
(
SynthDef(\snare,{
arg amp=0.75, freq=120, gain=1;
var env, sig, snare;
env = EnvGen.kr(Env.perc(0.001, 0.1, 1, -5), 1, doneAction:2);
sig = (SinOsc.ar(freq) - WhiteNoise.ar(0.5, 0.5)) * env * amp;
sig = sig * gain;
sig = sig.softclip * amp * ~masterGain;
Out.ar(0, [sig,sig]);
}).play;
)
(
SynthDef(\hat,{
arg amp=0.75;
var env, sig;
env = EnvGen.kr(Env.perc(0.001, 0.1, 1, -4), 1, doneAction:2);
sig = HPF.ar((WhiteNoise.ar(0.5, 0.5) * env * amp * ~masterGain), 4000);
Out.ar(0, [sig,sig]);
}).play;
)
(
SynthDef.new(\Klaus1000, {
arg out = 0, freq=440, atk=0.1, rel=0.1, amp=1, dur=0.2, pan=0;
var sig, env;
freq = freq*(395/500)*PinkNoise.kr(0.00,1);
sig = Klank.ar(`[ (1..500)*freq, 1/(1..500), nil ], PinkNoise.ar(1));
sig = LPF.ar(sig, 20000);
env = EnvGen.kr(Env.new([0,1,0],[atk,rel],[1,-1]),doneAction:2);
sig = (sig*env*amp*~masterGain)*0.05;
sig = Pan2.ar(sig,pan);
Out.ar(out, sig);
}).play;
)
(
SynthDef.new(\Colleen, {
arg freq=110, atk=0.1, rel=1.5, amp=1, dur=1, pan = 0, out = -1;
var sig, env;
freq = freq*(395/250)*PinkNoise.kr(0.05,1)*BrownNoise.kr(0.01,1)*2;
sig = LPF.ar(CombC.ar(Decay.ar(Impulse.ar(0), 0.2,
BrownNoise.ar), 4/(BrownNoise.kr(XLine.kr(10,1,0.2),freq)), 4/(PinkNoise.kr(XLine.kr(10,1,0.2),freq)), 3, 0.4),4000);
env = EnvGen.kr(Env.new([0,1,0],[atk,rel],[1,-1]),doneAction:2);
//sig = sig + PinkNoise.ar(0.1);
sig = LPF.ar(sig, XLine.kr(500,1000,rel*0.1));
sig = (sig*env*amp*~masterGain)*1;
sig = Pan2.ar(sig,pan);
Out.ar(out, sig);
}).play;
)
(
SynthDef.new(\Colleen2, {
arg freq=110, atk=0.01, rel=0.3, amp=1, dur=0.2, pan = 0, out = -1;
var sig, env;
freq = freq*(395/250)*PinkNoise.kr(0.01,1);
sig = LPF.ar(CombC.ar(Decay.ar(Impulse.ar(0), 0.2,
BrownNoise.ar), 4/(BrownNoise.kr(XLine.kr(10,1,0.2),freq)), 4/(PinkNoise.kr(XLine.kr(10,1,0.2),freq)), 3, 0.4),4000);
env = EnvGen.kr(Env.new([0,1,0],[atk,rel],[1,-1]),doneAction:2);
//sig = sig + PinkNoise.ar(0.1);
sig = LPF.ar(sig, XLine.kr(50,1000,rel*0.1));
sig = (sig*env*amp);
sig = Pan2.ar(sig,pan);
Out.ar(out, sig);
}).play;
)
//Pdefs
(
Pdef(\vox,
Pbind(
\instrument, \halawaVox,
\lag, ~groovyKick,
\amp, ~masterGain*1*Pseq([1],1),
)
).play;
Pdef(\kick,
Pbind(
\instrument, \kick,
\lag, 0,
\dur, Pseq([~swingA,~swingB],inf),
\amp, ~masterGain*6*
Pseq([
1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0,
1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0,
1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0,
1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,1,0,
], 1),
)
).play;
Pdef(\clap,
Pbind(
\instrument, \clap,
\lag, 0,
\dur, Pseq([~swingA,~swingB],inf),
\amp, ~masterGain*6*
Pseq([
0,0,0,0, 1,0,0,0,
], 8),
)
).play;
Pdef(\snare,
Pbind(
\instrument, \snare,
\lag, 0,
\dur, Pseq([~swingA,~swingB],inf),
\amp, ~masterGain*6*
Pseq([
0,0,0,0, 1,0,0,0,
], 8),
)
).play;
Pdef(\bassL,
Pbind(
\instrument, \Colleen,
\lag, 0,
\dur, Pseq([~swingA,~swingB],inf),
\degree,Pseq([
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, -1,-1,-1,-1, -1,-1,-1,-1,
-2,-2,-2,-2, -2,-2,-2,-2, -2,-2,-2,-2, -2,-2,-2,-2,
-4,-4,-4,-4, -4,-4,-4,-4, -4,-4,-4,-4, -4,-4,-4,-4,
], 1)+[0,4],
\octave, [3,5],
\strum, 0.03,
\amp, ~masterGain*4*Pseq([1,0,1,0,],inf),
\pan, -1,
)
).play;
Pdef(\bassR,
Pbind(
\instrument, \Colleen,
\lag, Pseq([0.001,0.002],inf),
\dur, Pseq([~swingA,~swingB],inf),
\degree,Pseq([
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, -1,-1,-1,-1, -1,-1,-1,-1,
-2,-2,-2,-2, -2,-2,-2,-2, -2,-2,-2,-2, -2,-2,-2,-2,
-4,-4,-4,-4, -4,-4,-4,-4, -4,-4,-4,-4, -4,-4,-4,-4,
], 1)+[0,4],
\octave, [3,4],
\amp, ~masterGain*4*Pseq([1,0,1,0], inf),
\strum, 0.05,
\pan, 1,
)
).play;
Pdef(\chordsL,
Pbind(
\instrument, \Klaus1000,
\lag, Pseq([0.001,0.002],inf),
\dur, ~stepDur*8,
\degree, [0,2,4,7]+Pseq([0,0,0,-1,-2,-2,-4,-4],1),
\octave, [5,6],
\amp, ~masterGain*0.8*Pseq([0,0,1,1,1,0,0,0,],1),
\pan, -1,
\atk, 0.03,
\strum, 0.03,
\rel, 2,
)
).play;
Pdef(\chordsR,
Pbind(
\instrument, \Klaus1000,
\lag, 0,
\dur, ~stepDur*8,
\degree, [0,2,4,7]+Pseq([0,0,0,-1,-2,-2,-4,-4],1),
\octave, [5,6],
\amp, ~masterGain*0.8*Pseq([0,0,1,1,1,0,0,0,],1),
\pan, 1,
\atk, 0.03,
\strum, 0.05,
\rel, 2,
)
).play;
Pdef(\arpegioL,
Pbind(
\instrument, \Colleen2,
\lag, 0,
\dur, Pseq([~swingA,~swingB],inf),
\degree, Pseq([
0,8,4,0, 8,4,0,8, 4,0,8,4, Pshuf([0,8,4,0,],1),
8,4,0,8, 4,0,8,4, 0,8,4,0, Pshuf([8,4,0,8,],1),
0,8,2,0, 8,2,0,8, 2,0,8,2, Pshuf([0,8,2,0,],1),
0,5,11,0, 5,11,0,5, Pshuf([11,0,5,11, 0,5,11,0,],1),
],1),
\octave, Pseq([5,6],inf),
\amp, ~masterGain*1*Pseq([0.2,1],inf),
\pan, 1,
\atk, 0.01,
\rel, 2,
)
).play;
Pdef(\arpegioR,
Pbind(
\instrument, \Colleen2,
\lag, 0,
\dur, Pseq([~swingA,~swingB],inf),
\degree, Pseq([
4,5,9,4, 5,9,4,5, 9,4,5,9, Pshuf([4,5,9,4],1),
4,5,9,4, 5,9,4,5, 9,4,5,9, Pshuf([4,5,9,4],1),
4,5,9,4, 5,9,4,5, 9,4,5,9, Pshuf([4,5,9,4],1),
4,5,9,4, 5,9,4,5, Pshuf([4,5,9,4, 5,9,4,5,],1),
],1),
\octave, Pseq([5,6],inf),
\amp, ~masterGain*1*Pseq([0.5,1],inf),
\pan, -1,
\atk, 0.03,
\rel, 2,
)
).play;
)
//Scheduling using Ppar
Pdef(\kick).play;
(
Pseq([
Ppar([Pdef(\kick),Pdef(\snare),],1),
],1).play;
)
//Scheduling using TempoClock
(
v = Main.elapsedTime.ceil;
t = TempoClock(~beatsPerMinute/60, 0, v);
t.schedAbs(0, {
Pdef(\kick).play(quant: 0.1);
Pdef(\snare).play(quant: 0.1);
Pdef(\clap).play(quant: 0.1);
Pdef(\bassR).play(quant: 0.1);
Pdef(\bassL).play(quant: 0.1);
Pdef(\vox).play(quant: 0.1);
});
t.schedAbs(16, {
Pdef(\kick).stop;
Pdef(\snare).stop;
Pdef(\clap).stop;
Pdef(\bassR).stop;
Pdef(\bassL).stop;
Pdef(\kick).play(quant: 0.1);
Pdef(\snare).play(quant: 0.1);
Pdef(\clap).play(quant: 0.1);
Pdef(\bassR).play(quant: 0.1);
Pdef(\bassL).play(quant: 0.1);
});
t.schedAbs(2*16, {
Pdef(\kick).stop;
Pdef(\snare).stop;
Pdef(\clap).stop;
Pdef(\bassR).stop;
Pdef(\bassL).stop;
Pdef(\kick).play(quant: 0.1);
Pdef(\bassR).play(quant: 0.1);
Pdef(\bassL).play(quant: 0.1);
Pdef(\chordsL).play(quant: 0.1);
Pdef(\chordsR).play(quant: 0.1);
});
t.schedAbs(3*16, {
Pdef(\kick).stop;
Pdef(\bassR).stop;
Pdef(\bassL).stop;
Pdef(\chordsL).stop;
Pdef(\chordsR).stop;
Pdef(\kick).play(quant: 0.1);
Pdef(\snare).play(quant: 0.1);
Pdef(\clap).play(quant: 0.1);
Pdef(\bassR).play(quant: 0.1);
Pdef(\bassL).play(quant: 0.1);
});
t.schedAbs(4*16, {
Pdef(\kick).stop;
Pdef(\snare).stop;
Pdef(\clap).stop;
Pdef(\bassR).stop;
Pdef(\bassL).stop;
Pdef(\kick).play(quant: 0.1);
Pdef(\snare).play(quant: 0.1);
Pdef(\clap).play(quant: 0.1);
Pdef(\bassR).play(quant: 0.1);
Pdef(\bassL).play(quant: 0.1);
});
t.schedAbs(5*16, {
Pdef(\kick).stop;
Pdef(\snare).stop;
Pdef(\clap).stop;
Pdef(\bassR).stop;
Pdef(\bassL).stop;
Pdef(\kick).play(quant: 0.1);
Pdef(\bassR).play(quant: 0.1);
Pdef(\bassL).play(quant: 0.1);
Pdef(\chordsL).play(quant: 0.1);
Pdef(\chordsR).play(quant: 0.1);
});
t.schedAbs(6*16, {
Pdef(\kick).stop;
Pdef(\bassR).stop;
Pdef(\bassL).stop;
Pdef(\chordsL).stop;
Pdef(\chordsR).stop;
Pdef(\kick).play(quant: 0.1);
Pdef(\snare).play(quant: 0.1);
Pdef(\clap).play(quant: 0.1);
Pdef(\bassR).play(quant: 0.1);
Pdef(\bassL).play(quant: 0.1);
Pdef(\arpegioL).play(quant: 0.1);
Pdef(\arpegioR).play(quant: 0.1);
});
t.schedAbs(7*16, {
Pdef(\kick).stop;
Pdef(\bassR).stop;
Pdef(\bassL).stop;
Pdef(\snare).stop;
Pdef(\clap).stop;
Pdef(\arpegioL).stop;
Pdef(\arpegioR).stop;
Pdef(\kick).play(quant: 0.1);
Pdef(\snare).play(quant: 0.1);
Pdef(\clap).play(quant: 0.1);
Pdef(\bassR).play(quant: 0.1);
Pdef(\bassL).play(quant: 0.1);
Pdef(\arpegioL).play(quant: 0.1);
Pdef(\arpegioR).play(quant: 0.1);
});
t.schedAbs(8*16, {
Pdef(\kick).stop;
Pdef(\snare).stop;
Pdef(\clap).stop;
Pdef(\bassR).stop;
Pdef(\bassL).stop;
Pdef(\arpegioL).stop;
Pdef(\arpegioR).stop;
Pdef(\kick).play(quant: 0.1);
Pdef(\bassR).play(quant: 0.1);
Pdef(\bassL).play(quant: 0.1);
Pdef(\chordsL).play(quant: 0.1);
Pdef(\chordsR).play(quant: 0.1);
});
)