ezFFT latency
Hi all! I am looking for a solution to some ezFFT limitations that I would really like to expand. I am talking about latency. For a window size of 128 bins and a sampling frequency of 32000, the latency is 20 ms. Is there a way to reduce the latency while maintaining the frequency step width? Maybe there is a way to double the algorithm by splitting it into two calculation threads? Or double the sampling frequency, but only calculate up to 16kHz? Thanks!
Best Answer
-
Hi,
There's a fundamental limit that can't be beaten: one block length. On an ideal, infinitely fast computer, this would be the (pure FFT) latency due to block-wise calculations. For 128 bins, this equals 256 samples. At 32k, this results in 8 ms. The already optimized EzFFT build for streaming audio needs 20 ms (5/2 of 8 ms) because it waits for a complete block, performs calculations, and then transmits via the audio stream.
Using a higher sample rate doesn't solve this problem; you still need a block size that covers roughly one bass frequency cycle.
https://www.native-instruments.com/de/reaktor-community/reaktor-user-library/entry/show/10267/
took a while to build but significantly reduced latency by using event iterations instead of the audio stream. You can switch overlap and block size, but it makes the system a bit unreliable, resource-intensive, and more complicated to develop with.
Cheers,
Jan
0
Answers
-
Hi,
There's a fundamental limit that can't be beaten: one block length. On an ideal, infinitely fast computer, this would be the (pure FFT) latency due to block-wise calculations. For 128 bins, this equals 256 samples. At 32k, this results in 8 ms. The already optimized EzFFT build for streaming audio needs 20 ms (5/2 of 8 ms) because it waits for a complete block, performs calculations, and then transmits via the audio stream.
Using a higher sample rate doesn't solve this problem; you still need a block size that covers roughly one bass frequency cycle.
https://www.native-instruments.com/de/reaktor-community/reaktor-user-library/entry/show/10267/
took a while to build but significantly reduced latency by using event iterations instead of the audio stream. You can switch overlap and block size, but it makes the system a bit unreliable, resource-intensive, and more complicated to develop with.
Cheers,
Jan
0 -
Reaktor doesn't report latency to your daw but there's a track marker in the user library. If I remember it produces a click at the start of a recording. It makes it fairly easy to get an idea of the latency your fft ensemble has. https://www.native-instruments.com/en/reaktor-community/reaktor-user-library/entry/show/14137/
0 -
Thanks for the answer, but what you answered has nothing to do with my question. It's about the ezFFT module from the user library. And by the way, the first answer was exhaustive.
0 -
I know it doesn't, thought I'd pitch that in because after working extensively on an fft project, you might throw in the towel if the latency was so bad it seemed unusable. That little track marker spits out a click and makes it real easy to time align a high latency track. Since reaktor doesn't report latency you have to shift the track left afterwards. Or what's worse, having to ****** all other tracks right. Sorry I didn't have a direct answer.
1 -
Thank you :) But in my project you can't move tracks. I'm making a fundamentally new DJ mixer, it works live, so the delay is very critical. At the moment the delay is 8 ms for the input signal and 4 ms for mixer control, plus the ASIO delay. This is quite enough to work live without the feeling of lag.
0 -
Cool, can't beat ASIO drivers for low latency. It would be a drag without it. Have fun!!!
0
Categories
- All Categories
- 19 Welcome
- 1.4K Hangout
- 60 NI News
- 735 Tech Talks
- 3.9K Native Access
- 15.8K Komplete
- 1.9K Komplete General
- 4.1K Komplete Kontrol
- 5.5K Kontakt
- 1.5K Reaktor
- 364 Battery 4
- 816 Guitar Rig & FX
- 416 Massive X & Synths
- 1.2K Other Software & Hardware
- 5.5K Maschine
- 7K Traktor
- 7K Traktor Software & Hardware
- Check out everything you can do
- Create an account
- See member benefits
- Answer questions
- Ask the community
- See product news
- Connect with creators