Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How about the sliding DFT? #5

Open
jurihock opened this issue Apr 25, 2022 · 4 comments
Open

How about the sliding DFT? #5

jurihock opened this issue Apr 25, 2022 · 4 comments
Labels
enhancement New feature or request
Milestone

Comments

@jurihock jurihock added the enhancement New feature or request label Apr 25, 2022
@jurihock jurihock added this to the v2 milestone May 13, 2022
@jurihock
Copy link
Owner Author

The sliding DFT will be first implemented and tested out in voyx.

@jurihock
Copy link
Owner Author

jurihock commented May 23, 2022

As mentioned in [3] the classic SDFT implementation suffers from accumulated frequency bin errors. These errors may become visible or audible after about 10 minutes on single precision, depending on the source signal.

The modulated SDFT implementation proposed in [6] offers reduced error level even on single precision, but at "slightly" higher computational cost (by about factor 1.5 in my measurements).

With cyclic chirp or sweep as a source signal the frequency error appears immediately at about -75 dBFS using the classic SDFT [1] and still stays below -100 dBFS using the modulated SDFT [6] after 30 min. That's the difference...

@jurihock
Copy link
Owner Author

jurihock commented Jun 7, 2022

oSDFT

Not to be confused with oSDFT, which is a completely another nice algorithm and probably most suitable for FPGAs, due to accumulation at the end of the cycle.

The author of [11] reports a lower numerical error level of gSDFT compared to mSDFT from [6], but also a higher workload on larger windows. The finally proposed oSDFT should have exactly the same numerical error level as gSDFT and the lowest workload "among the existing stable" SDFT algorithms...

Unclear:

  • The memory consumption of the oSDFT is much higher compared to mSDFT. In other words, if a large space of memory is used excessively, would that cause caching issues on larger DFT windows? (e.g. compared to brute force computation like in mSDFT with much less "random" memory access)
  • Like shown in table V in [11], in case of M=16 the oSDFT is about 2 times faster than mSDFT, but in case of M=32 only 1.65 times. I'm assuming a non-linear progression with increasing window size. The window size of 32 bins is too tiny for audio, we need something at least 1024.

BTW the gSDFT seems to be patented...

jurihock added a commit that referenced this issue Jun 13, 2022
jurihock added a commit that referenced this issue Jun 14, 2022
jurihock added a commit that referenced this issue Jun 14, 2022
jurihock added a commit that referenced this issue Jun 27, 2022
@jurihock
Copy link
Owner Author

jurihock commented Sep 18, 2022

jurihock added a commit that referenced this issue Nov 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant