pv experiment
parent
89a8663b87
commit
482a1b78a3
@ -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;
|
||||
)
|
||||
Loading…
Reference in New Issue