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