Dear all
A question emerged: would the MFCCs of 2 channels average to the same as the MFCC of the average of the source (a mix of the 2 sources). I had a hunch it wasn’t, but just because MFCCs are so strange despite fantastic visualisation tools @tedmoore did (here and here), so I did a quick test. I hope it helps people troubleshoot their intuitions on that cursed multivariate descriptor.
s.reboot
(
b = Buffer.alloc(s, 44100);
c = Buffer.alloc(s, 44100);
d = Buffer(s);
e = Buffer(s);
f = Buffer(s);
)
b.sine2((110..120), 0.01, false, false)
b.play
c.sine2((1000..1010), 0.01, asWavetable: false)
c.play
(
FluidBufCompose.process(s, b, destination: f);
FluidBufCompose.process(s, c, destination: f, destGain: 1)
)
f.play
FluidBufMFCC.process(s, b, features: d, startCoeff: 1, action:{FluidBufStats.process(s,d, stats: e, select: [\mean], action:{e.loadToFloatArray(action:{|x|x.postln})})})
FluidBufMFCC.process(s, c, features: d, startCoeff: 1, action:{FluidBufStats.process(s,d, stats: e, select: [\mean], action:{e.loadToFloatArray(action:{|x|x.postln})})})
FluidBufMFCC.process(s, f, features: d, startCoeff: 1, action:{FluidBufStats.process(s,d, stats: e, select: [\mean], action:{e.loadToFloatArray(action:{|x|x.postln})})})