diff --git a/cantorial-pv.scd b/cantorial-pv.scd new file mode 100644 index 0000000..5408325 --- /dev/null +++ b/cantorial-pv.scd @@ -0,0 +1,81 @@ +( +~bufA = Buffer.read(s, "/home/lcoogan/snd/ardour/cantorial loops/export/malavksy_shomea_00.wav"); +~bufB = Buffer.read(s, "/home/lcoogan/snd/ardour/cantorial loops/export/malavksy_shomea_01.wav"); +) + + +{ + PlayBuf.ar(1, ~bufA, BufRateScale.kr(~bufA), doneAction: 2) +}.play; + + +~bufA.play; + +( +SynthDef(\spectralDiff, { + var sigA, sigB, chain, chainA, chainB, diff, out; + + sigA = PlayBuf.ar(1, ~bufA, BufRateScale(~bufA)); + sigB = PlayBuf.ar(1, ~bufB, BufRateScale(~bufB)); + + chainA = FFT(LocalBuf(2048), sigA); + chainB = FFT(LocalBuf(2028), sigB); + + chain = PV_Add(chainA, chainB); + + out = IFFT(chain); + + Out.ar(0, out.dup * 20); +}).play; +) + + + +( +SynthDef(\testFFT, { + var sig, chain, out; + + sig = PlayBuf.ar(1, ~bufA, BufRateScale.kr(~bufA), doneAction: 2); + chainA = FFT(LocalBuf(2048), sig); + chain + out = IFFT(chain); // No spectral processing, just pass-through + + Out.ar(0, out.dup); +}).play; +) + + + + +( +SynthDef(\specMorph, { + | morphAmt = 0.5 | // morph between 0 and 1 + var a, b, fftA, fftB, morphed, out; + + // Playback (mono) + a = PlayBuf.ar(1, ~bufA, BufRateScale.kr(~bufA), loop: 0); + b = PlayBuf.ar(1, ~bufB, BufRateScale.kr(~bufB), loop: 0); + + // FFT + fftA = FFT(LocalBuf(2048), a); + fftB = FFT(LocalBuf(2048), b); + + + morphed = PV_Mul(fftA, fftB, morphAmt); + morphed = PV_Morph(morphed, fftA); + morphed = PV_MagBelow(morphed, 800); + + + // Resynthesize + out = IFFT(morphed); + + // out = FreeVerb.ar(out, room:1); + + // out = Compander.ar(out, control:0.0, thresh: 0.01, slopBelow:0.2, slopAbove:1.0, clampTime:0.1, relaxTime:0.3); + + // out = RHPF.ar(out, 1000, 0.3); + out = Fold.ar(out, -20, 20); + + Out.ar(0, out.dup * 0.1); +}).play; +)