s.boot;
s.record;
s.stopRecording;
//time and tuning
(
~beatsPerMinute=60;
~beatsPerMeasure=4;
~swing=0.0; // -1 to 1, (0) is straight, (+) is swing, (-) is wack
~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
~masterGain = 0.2;
~scale = Scale.ionian(\just);
)
//loading buffers
(
~lieToYouVox = Buffer.readChannel(s,"/Users/conor/Desktop/SuperCollider/yfree buffers/YFREE lie to you vox (01).wav",0,-1,1);
)
//testing buffers
~lieToYouVox.play;
//SynthDefs
(
SynthDef(\lieToYouVox, {
arg out = 0, amp=1;
var sig, env;
b = ~lieToYouVox;
sig = PlayBuf.ar(1, b, 1, doneAction:2)*amp*~masterGain;
Out.ar(out, [sig,sig])
}).play;
)
(
SynthDef(\clapReverb, {
arg outBus=0, amp = 0.5, gain = 1.5, rel = 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, rel], [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 = LPF.ar(sig, 3000);
sig = sig.softclip * amp * 1;
Out.ar(0, [sig,sig]);
}).play;
)
(
SynthDef(\clap, {
arg outBus=0, amp = 0.5, gain = 1.5, rel = 0.2;
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, rel], [0, -4]), doneAction:2);
noise1 = BPF.ar(HPF.ar(GrayNoise.ar(env1), 1800), 2000, 3);
noise2 = BPF.ar(HPF.ar(GrayNoise.ar(env2), 1900), 1200, 0.7, 0.7);
sig = noise1 + noise2;
sig = sig * gain;
sig = LPF.ar(sig, 2000) * 2;
sig = sig.softclip * amp;
Out.ar(0, [sig,sig]);
}).play;
)
(
SynthDef(\kick,{
arg startFreq=60, endFreq=20, decay=4, lowpass=1000, amp=1, noiseAmp=0.01, 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)*3;
sig = sig * gain;
sig = sig.softclip * amp * env;
Out.ar(0, [sig,sig]);
}).play;
)
(
SynthDef(\snare,{
arg amp=0.75, freq=120, gain=1.1;
var env, sig, snare;
env = EnvGen.kr(Env.perc(0.001, BrownNoise.kr(0.1,0.3), 1, -5), 1, doneAction:2);
sig = (SinOsc.ar(freq) - WhiteNoise.ar(0.5, 0.4)) * env * amp;
sig = LPF.ar(sig,BrownNoise.kr(1000,4500));
sig = sig * gain * 3;
sig = sig.softclip * amp;
Out.ar(0, [sig,sig]);
}).play;
)
(
SynthDef.new(\Colleen2, {
arg freq=110, atk=1, rel=1, amp=1, dur=0.2, pan = 0, out = -1;
var sig, env;
freq = freq*(1050/250)*PinkNoise.kr(0.05,1)*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))*1.5;
sig = (sig*env*amp);
sig = Pan2.ar(sig,pan);
Out.ar(out, sig);
}).play;
)
(
SynthDef.new(\Klaus50, {
arg out = 0, freq=440, atk=0.12, rel=0.4, amp=0.5, dur=0.3, pan=0;
var sig, env;
freq = freq*(1050/500)*PinkNoise.kr(0.05,1)*0.5;
sig = Klank.ar(`[ (1..50)*freq, 1/(1..50), nil ], PinkNoise.ar(1));
env = EnvGen.kr(Env.new([0,1,0],[atk,rel],[1,-1]),doneAction:2);
sig = LPF.ar(sig, BrownNoise.kr(250,1250));
sig = HPF.ar(sig, 200);
sig = (sig*env*amp)*PinkNoise.kr(0.01,0.02)*1.2;
sig = Pan2.ar(sig,pan);
Out.ar(out, sig);
}).play;
)
(
SynthDef.new(\Klaus5, {
arg out = 0, freq=440, atk=0.04, rel=0.2, amp=0.5, dur=4, pan=0;
var sig, env;
freq = freq*(1050/500)*PinkNoise.kr(0.05,1)*0.25/2;
sig = Klank.ar(`[ (1..5)*freq, 1/(1..5), nil ], PinkNoise.ar(1));
env = EnvGen.kr(Env.new([0,1,0],[atk,rel],[1,-1]),doneAction:2);
sig = LPF.ar(sig, BrownNoise.kr(250,850));
sig = HPF.ar(sig, 200);
sig = (sig*env*amp)*PinkNoise.kr(0.01,0.02)*1;
sig = Pan2.ar(sig,pan);
Out.ar(out, sig);
}).play;
)
//pdef
(
Pdef(\lieToYouVox,
Pbind(
\instrument, \lieToYouVox,
\lag, 0,
\amp, ~masterGain*1.3*Pseq([1],1),
)
).play;
Pdef(\kick,
Pbind(
\instrument, \kick,
\octave, 4,
\dur,
Pseq([~swingA,~swingB],inf),
\atk, 0.1,
\rel, 0.1,
\amp, Pseq([
1,0,0,0, 0,0,0,1,
1,0,1,0, 0,1,0,0,
1,0,0,0, 0,0,0,1,
1,0,1,0, 0,1,1,1,],inf)*~masterGain,
\lag, 0,
)
).play;
Pdef(\snare,
Pbind(
\instrument, \snare,
\octave, 4,
\dur, Pseq([~swingA,~swingB],inf),
\atk, 0.1,
\rel, 0.1,
\amp, Pseq([0,0,0,0, 1,0,0,0],inf)*~masterGain,
\lag, 0,
)
).play;
Pdef(\clap,
Pbind(
\instrument, \clap,
\octave, 4,
\dur, Pseq([~swingA,~swingB],inf),
\lag, 0,
\amp, Pseq([0,0,0,0, 1,0,0,0],inf)*~masterGain,
)
).play;
Pdef(\bass,
Pbind(
\instrument, \Klaus50,
\octave, [3],
\lag, 0,
\degree, Pseq([
Pseq([0,0,],8),
Pseq([1,1,],8),
Pseq([-3,-3,],8),
Pseq([0,0],8),
],inf),
\dur, Pseq([~swingA,~swingB],inf),
\amp, Pseq([1,0,0,0, 0,0,0,1,
1,0,1,0, 0,1,0,0,
1,0,0,0, 0,0,0,1,
1,0,1,0, 0,1,1,1,],inf)*1.5*~masterGain,
\rel, 2,
\pan, 0,
)
).play;
Pdef(\chords,
Pbind(
\instrument, \Colleen2,
\octave, [5],
\degree, [0,2,4,5,7,9,11,12,11,9,7,5,4,2,0]+Pseq([//[0,2,4,5]+
Pseq([0,0,],8),
Pseq([1,1,],8),
Pseq([-1,-1,],8),
Pseq([0,0],8),
],inf),
\dur, Pseq([~swingA,~swingB],inf),
\lag, 0,
\strum, ~stepDur/4,
\rel, 0.2,
\amp, Pseq([
0,0,0,0, 1,0,0,0,
0,0,0,0, 0,0,0,0,
],inf)*~masterGain,
\pan, 0,
)
).play;
Pdef(\arpegio,
Pbind(
\instrument, \Klaus5,
\octave, [5,7],
\degree, [0,2,4,5,7,9,11,12,11,9,7,5,4,2,0]+Pseq([//[0,2,4,5]
Pseq([0,0,],8),
Pseq([1,1,],8),
Pseq([-1,-1,],8),
Pseq([0,0],8),
],inf),
\dur, Pseq([~swingA,~swingB],inf),
\lag, 0,
\strum, ~stepDur/4,
\amp, Pseq([
0,0,0,0, 1,0,0,0,
0,0,0,0, 0,0,0,0
],inf)*~masterGain,
\pan, 0,
)
).play;
)
//tempo clock
(
v = Main.elapsedTime.ceil;
t = TempoClock(~beatsPerMinute/60, 0, v);
t.schedAbs(0, { //verse
Pdef(\kick).play(quant: 0.1);
Pdef(\snare).play(quant: 0.1);
Pdef(\clap).play(quant: 0.1);
Pbindf(Pdef(\bass),\pan, -1, \octave, 3).play(quant: 0.1);
Pbindf(Pdef(\bass),\pan, 1, \octave, 3).play(quant: 0.1);
Pdef(\lieToYouVox).play(quant: 0.1);
});
t.schedAbs(2*16, { //chorus
Pbindf(Pdef(\arpegio),\pan, -1).play(quant: 0.1);
Pbindf(Pdef(\arpegio),\pan, 1).play(quant: 0.1);
});
t.schedAbs(4*16, { //verse
Pdef(\clap).stop;
Pdef(\snare).stop
});
t.schedAbs(6*16, { //chorus
Pdef(\clap).play(quant: 0.1);
Pdef(\snare).play(quant: 0.1);
});
t.schedAbs(8*16, { //bridge
Pdef(\snare).stop;
Pdef(\clap).stop;
Pbindf(Pdef(\chords), \pan,-1).play(quant: 0.1);
Pbindf(Pdef(\chords), \pan, 1).play(quant: 0.1);
});
t.schedAbs(10*16, { //chorus
Pdef(\snare).play(quant: 0.1);
Pdef(\clap).play(quant: 0.1);
});
t.schedAbs(12*16, { //out
Pdef(\kick).stop;
Pdef(\clap).stop;
Pdef(\snare).stop;
});
)