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

IIR windowing #3

Closed
TF3RDL opened this issue Jan 17, 2023 · 3 comments
Closed

IIR windowing #3

TF3RDL opened this issue Jan 17, 2023 · 3 comments

Comments

@TF3RDL
Copy link

TF3RDL commented Jan 17, 2023

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

@jurihock
Copy link
Owner

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...

@jurihock
Copy link
Owner

Closing, as std::rotate issue is fixed in #4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants