-
Notifications
You must be signed in to change notification settings - Fork 3
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
IIR windowing #3
Comments
Thanks for suggestion! As always, the are many ways to do something. The current implementation aims not to be the most "perfect" one. But it's good enough to start with, I think. And yes, I'm not that happy about the input buffering. Not much because of the footprint or linear access to it, but because of the circular shift, required for the each input sample. I still decided to use std::rotate for more transparency instead of branching or cursor adjustments in the loop. I'm not sure about the efficiency/stability of an IIR filter bank. Since the output latency is more important to me, it's not a compromise. But anyway I'll think about it again when I get a chance... |
Closing, as std::rotate issue is fixed in #4. |
It is worth noting that asymmetric window functions are impossible to implement, not even the window skew parameter outlined in my collection of audio analysis functions on a sliding DFT, but what you can do is make the sDFT an IIR filter bank (which is a damped sine wave). which uses less RAM (since it doesn't need ring buffers) and it can be cascaded (just like biquad filters) to achieve a steeper rolloff at the cost of greater delay (thus, bad time resolution) on long window sizes
The text was updated successfully, but these errors were encountered: