Skip to content
Permalink
master
Go to file
 
 
Cannot retrieve contributors at this time
72 lines (54 sloc) 2.95 KB
s.boot;
~wass = Buffer.read(s, "/Users/alex/Music/Projects/Junto/0424 - Fluctuating Rhythm/Wasserflut.wav");
~tube_exc = Buffer.read(s, "/Users/alex/Music/Projects/Junto/0424 - Fluctuating Rhythm/tube exc.wav");
~tube_gate = Buffer.read(s, "/Users/alex/Music/Projects/Junto/0424 - Fluctuating Rhythm/tube HP gated 2.wav");
(
a = SynthDef(\help_beattrack, { |out, pregain=0.7, pipegain=0.1, hipegain=0.02, lock=0, lag1=7.385, lag2=0.4615 |
var in, fftL, fftR, tube;
var trackbL, trackhL, trackqL, tempoL, tempadjL;
var trackbR, trackhR, trackqR, tempoR, tempadjR;
var dTL, dTR;
var inmodL, inmodL2, inmodL3, inmodL4, ratemodL, ratemodL2, ratemodL3, ratemodL4;
var inmodR, inmodR2, inmodR3, inmodR4, ratemodR, ratemodR2, ratemodR3, ratemodR4;
var premix, allDone;
in = PlayBuf.ar(2,~tube_gate,BufRateScale.kr(~tube_gate),1,0,1);
tube = PlayBuf.ar(2, ~tube_exc, BufRateScale.kr(~tube_exc), 1, 0, 1);
fftL = FFT(LocalBuf(1024), in[0]);
fftR = FFT(LocalBuf(1024), in[1]);
#trackbL, trackhL, trackqL, tempoL = BeatTrack.kr(fftL, lock);
#trackbR, trackhR, trackqR, tempoR = BeatTrack.kr(fftR, lock);
tempadjL = (tempoL==nil).if({60/65},{tempoL/2 * 60/65});
tempadjR = (tempoR==nil).if({60/65},{tempoR/2 * 60/65});
dTL = Changed.kr(tempadjL);
dTR = Changed.kr(tempadjR);
[tempadjL, tempadjR].poll(dTL | dTR);
ratemodL = VarLag.kr(tempadjL, lag1, warp: \cub);
ratemodL2 = VarLag.kr(tempadjL, lag1, warp: \exp);
ratemodL3 = VarLag.kr(tempadjL, lag2, warp: \lin);
ratemodL4 = VarLag.kr(tempadjL, lag2, warp: \exp);
ratemodR = VarLag.kr(tempadjR, lag1, warp: \cub);
ratemodR2 = VarLag.kr(tempadjR, lag1, warp: \exp);
ratemodR3 = VarLag.kr(tempadjR, lag2, warp: \lin);
ratemodR4 = VarLag.kr(tempadjR, lag2, warp: \exp);
inmodL = PlayBuf.ar(2,~wass,ratemodL*BufRateScale.kr(~wass),1,0,0);
inmodL2 = PlayBuf.ar(2,~wass,ratemodL2*BufRateScale.kr(~wass),1,0,0);
inmodL3 = PlayBuf.ar(2,~wass,ratemodL3*BufRateScale.kr(~wass),1,0,0);
inmodL4 = PlayBuf.ar(2,~wass,ratemodL4*BufRateScale.kr(~wass),1,0,0);
inmodR = PlayBuf.ar(2,~wass,ratemodR*BufRateScale.kr(~wass),1,0,0);
inmodR2 = PlayBuf.ar(2,~wass,ratemodR2*BufRateScale.kr(~wass),1,0,0);
inmodR3 = PlayBuf.ar(2,~wass,ratemodR3*BufRateScale.kr(~wass),1,0,0);
inmodR4 = PlayBuf.ar(2,~wass,ratemodR4*BufRateScale.kr(~wass),1,0,0);
allDone = [Done.kr(inmodL), Done.kr(inmodL2), Done.kr(inmodL3), Done.kr(inmodL4), Done.kr(inmodR), Done.kr(inmodR2), Done.kr(inmodR3), Done.kr(inmodR4)].sum;
allDone.poll(Changed.kr(allDone));
FreeSelf.kr(allDone-7.5);
premix = pregain*(Pan2.ar(inmodL, -0.9, 0.707) + Pan2.ar(inmodL2, -0.2) + Pan2.ar(inmodL3, -0.4) + Pan2.ar(inmodL4, -0.05) + Pan2.ar(inmodR, 0.9, 0.707) + Pan2.ar(inmodR2, 0.2) + Pan2.ar(inmodR3, 0.4) + Pan2.ar(inmodR4, 0.05));
Out.ar(out, premix+(pipegain*tube)+(hipegain*in))
}).play;
s.record
)
s.stopRecording;
a.set(\lag1, 8.0 * 60/65);
a.set(\lag2, 1.0 * 60/65);
a.set(\pregain, 0.7);
a.set(\pipegain, 0.1);
a.set(\hipegain, 0.02);