pvcalc2 Process the bins of two FFT chains
chain = chain.pvcalc2(chain2, numframes, func, frombin, tobin, zeroothers)
pvcalc2 is just like pvcalc but can combine two FFT chains together. See pvcalc for more information.
func should be a function that takes four arrays as inputs (magnitudes1, phases1, magnitudes2, phases2) and returns a resulting pair of arrays [magnitude, phase].
Example
(
s.boot.doWhenBooted{
~fftsize = 1024;
b = Buffer.alloc(s, ~fftsize, 1);
c = Buffer.read(s,"sounds/a11wlk01.wav");
d = Buffer.alloc(s, ~fftsize, 1);
//// Load a second audio file of some sort:
//e = Buffer.read(s,"sounds/amenfast.wav");
e = Buffer.read(s,"sounds/break.aiff");
}
)
(
x = {
var in, chain, in2, chain2, out;
in = PlayBuf.ar(1, c, BufRateScale.kr(c), loop: 1);
chain = FFT(b, in);
in2 = PlayBuf.ar(1, e, BufRateScale.kr(e), loop: 1);
chain2 = FFT(d, in2);
chain = chain.pvcalc2(chain2, b.numFrames, {|mags, phases, mags2, phases2|
[mags * mags2 / 10, phases2 + phases]
}, frombin: 0, tobin: 125, zeroothers: 0);
out = IFFT(chain);
Out.ar(0, 0.5 * out.dup);
}.play(s);
)
x.free;