Average of channels of MFCCs

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})})})
3 Likes