You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
1.7 KiB
Plaintext

(
~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;
)