Nbickford / REAPERDenoiser

Tutorial source code: A JSFX denoiser for REAPER based on Norbert Weiner's deconvolution algorithm.
MIT License
24 stars 2 forks source link

MDCT implementation #6

Closed micsthepick closed 1 year ago

micsthepick commented 4 years ago

I've messed around with implementing this algorithm with the MDCT (built into JSFX), and it seems to have some interesting side effects. For one, it seems to greatly reduce the amount of ringing/echo from the processing, and it also seems to be significantly more effective for a given value of k squared.

I think it may be interesting to include a second copy that uses the MDCT (perhaps not replace the existing version, since the MDCT has a much smaller maximum frame size)

The reason that it is so effective may also be in part (but I suspect that this is not the whole story) because of the moving average in my version. (Each time the noise buffer is written to, it takes the weighted average of 3 times the old value and one times the new recorded value), so even if you don't include a MDCT version, I think it helps to get a more accurate noise profile by taking a proper average (perhaps even a moving average, so that all samples are weighted evenly, rather than more recent ones with greater weight)

Nbickford commented 3 years ago

Hi Michael! Sorry for the long wait; I don't have a fix for this yet and I think I need to do some research, but here's a sort of tree diagram of my thoughts at the moment.

Nbickford commented 3 years ago

Quick update on this:

micsthepick commented 3 years ago

This is the latest version of the denoiser that I have https://raw.githubusercontent.com/micsthepick/REAPERDenoiser/develop/REAPERDenoiserMDCTinverted.jsfx, it uses spectral blurring, and also uses an inverted technique to try and reduce the pre-reverb by putting it in the noise (which is subtracted out anyway) - I'm not sure if it makes that much difference

micsthepick commented 1 year ago

just realizing that the latest issue that I posted (#7) kinda addresses this issue