FFT Morph Possible?


#1

Exploratory question.

Does anyone have any thoughts on whether it would be possible to make some kind of spectral crossfade/morph object for Axoloti?

I'm imagining you'd need to do an FFT on both inputs, interpolate the spectral data somehow, then reverseFFT for output.

No idea if the Cortex M4 has the necessary grunt to do this. I do know there are libraries for doing FFT and rFFT, but I don't know if it's still a bit ambitious.

Any thoughts, anyone?

a|x


JT contributions
#2

I'm wondering if at some point in the future, it might be cool to have a new inlet/outlet type for spectral (FFT) data. That way, we could have FFT and rFFT objects, and a series of spectral manipulation objects that could be connected between them.

This is all assuming that the Axoloti hardware would be capable of handling the processor load, of course.

a|x


#3

regarding cortex m4 and pvoc
https://github.com/pichenettes/eurorack/tree/master/clouds/dsp/pvoc


#4

One fundamental problem is dealing with FFT operations in a low-latency framework.
In Axoloti, the whole dsp-chain needs to be processed in 0.333 milliseconds, and contains 16 audio samples. Common FFT-based manipulations work with audio blocks of 256, 512, or larger buffers. Expecting a whole FFT-based manipulation on a large buffer to finish within the cpu time available for 16 samples is not reasonable.

One approach is collecting a large buffer in the low-latency loop, and signalling a separate thread that does the fft-process at a lower priority, outside the dsp-loop. But that only works out for fft-based spectrum analysis, there is no guarantee that anything finishes in time for synthesis. "spectral/rfft 128" uses this approach.

Another approach is slicing the fft computation of a large buffer into pieces that fit in the low-latency process. I believe the CMSIS fft functions are not useful for this, it's a deep adventure in code.


Elastique audio and samples interpolation
#5

Ah, I see. So theoretically possible, though. Good to know. I wish I had the skills to tackle this myself.

Olivier wrote an FFT/rFFT implementation for the Clouds Eurorack module, somewhere in here.

Here's a demo

It could well be that he uses a larger buffer that the Axolotl's 16 samples. I know he's used multiple buffers in other products (Braids springs to mind).

a|x