Help debugging audio artifact issue when using ARM FFT library on Elk Dev Kit

Hi all, I am hoping someone can help shed some light on an issue I am having when loading a VST2 my elk dev kit, as I’m at the bang-my-head-against-the-wall stage.

The scenario:
I am using a quite fast FFT library inside of my plug-in. It has been tuned for ARM neon and works very well on a similar chip inside Galaxy phones. It also works very well for other architectures.

The issue:
I am hearing a very obvious “jittery” and “stuttery” digital audio artifact when calling some of the process functions in this library within the process block function.

Evidence of note:
The frequency of the glitches appears to change based on buffer size. It is also present (although in lesser intensity) when simply calling the functions and not using them (i.e. the functions are not processing any incoming or outgoing audio). Both of these things would lead me to believe that the function is perhaps taking too long to process within the process block? I’m really unsure. Happy to provide any more detail or examples of the issue. This library functions quite well with less memory and processing resources elsewhere so I’m wondering if it’s something I am overlooking/overthinking.

From the xenomai scheduler stats sushi is using ~ 60% of of the CPU core.

Thanks in advance for the help debugging guys.

EDIT: I should add that using some of the suggested, more aggressive compiler flags improved the issue although did not eliminate: O3 -pipe -ffast-math -feliminate-unused-debug-types -funroll-loops -mvectorize-with-neon-quad"

Hi @drnfckdrn,
could you try to run SUSHI with the --timing-statistics flag and analyze the performance in that way?

(results will be written in SUSHI’s log file or you can query at run-time through the gRPC API).

Xenomai scheduler stats are average over a period that is much longer than the audio interrupt, so if you code execute e.g. one big FFT sporadically, you won’t see it there.

But with the timing statistics, this should be obvious since you should see a high “max” value compared to “avg”.

Thanks very much @Stefano - CPU gobbling issue