lsp-plugins / lsp-plugins

Linux Studio Plugins Project
https://lsp-plug.in/
GNU Lesser General Public License v3.0
522 stars 44 forks source link

Implement warped FFT #146

Open amlib opened 3 years ago

amlib commented 3 years ago

Such feature would allow FFT bins to be more evenly spread across the frequency spectrum, making plugins such as the equalizers and loudness compensator have a lower FFT size while maintaining about the same quality. Would also improve latency.

sadko4u commented 3 years ago

It requires some R&D, probably not earlier than the 1.2.0 release. Is there any good article decribing the practical implementation of the WDFT algorithms?

amlib commented 3 years ago

I came across this paper a while ago, which is the reason why I made this request: http://users.spa.aalto.fi/mak/PUB/WASPAA1997Karjalainen.pdf But I don't know if this one will help.

I also found this one, which cites the previous one and seems to go into much more detail: http://users.spa.aalto.fi/mak/PUB/JAES2000Harma.pdf

sadko4u commented 3 years ago

@AdrianoML thanks. I've already looked both papers and they seem to be more simple explaining the solution. As I understand, the only difference is that additional chain of all-pass filters is added before the DFT and allows to modify ("time-stretch") the input signal so the pure sine becomes some way stretched from the middle of the frame to the corners (or vice verse). So it gives the same effect as poles of the DFT have non-linear spread between each other. And the reverse chain of all-pass filters is added after reverse DFT which allows to transform the wapred sine wave back to normal form.