On Fri, Mar 20, 2020, at 4:58 PM, Andreas Gustafsson wrote:
> robert bristow-johnson wrote:
but i would be excited to see a good
> > implementation of constant Q filterbank that is very close to
> > perfect reconstruction if the modification in the frequency domain
> > is null. 
> 
> Isn't this pretty much what my Gaborator library (gaborator.com) does?
> It performs constant Q analysis using Gaussian windows, and resynthesis
> that reconstructs the original signal to within about -115 dB using
> single precision floats.

A while ago I read through some the literature [1] on implementing an 
invertible CQT as a special case of the Nonstationary Gabor Transform. It's 
implemented by the essentia library [2] among other places probably.

The main idea is that you take the FFT of your whole signal, then apply the 
filter bank in the frequency domain (just multiplication). Then you IFFT each 
filtered signal, which gives you the time-domain samples for each band of the 
filter bank. Each frequency-domain filter has a different bandwidth, so your 
IFFT is a different length for each one, which gives you the different sample 
rates for each one. They also give an "online" version where you do the 
processing in chunks, but really for this to work I think you'd need large-ish 
chunks so the latency would be pretty bad.

The whole process is in some ways dual to the usual STFT process, where we 
first window and then FFT. in the NSGT you first FFT and then window, and then 
IFFT each band to get a Time-Frequency representation.

For resynthesis you end up with a similar window overlap constraint as in STFT, 
except now the windows are in the frequency domain. It's a little more 
complicated because the window centers aren't evenly-spaced, so creating COLA 
windows is complicated. There are some fancier approaches to designing a set of 
synthesis windows that are complementary (inverse) of the analysis windows, 
which is what the frame-theory folks like that Austrian group seem to like to 
use.

One of the nice things about the NSGT is it lets you be really flexible in your 
filterbank design while still giving you invertibility.

Andreas - is this the general approach you use for Gaborator?


[1]: Balazs, P., Dörfler, M., Jaillet, F., Holighaus, N., & Velasco, G. (2011). 
Theory, implementation and applications of nonstationary Gabor frames. Journal 
of Computational and Applied Mathematics, 236(6), 1481–1496.
[2]: https://mtg.github.io/essentia-labs/news/2019/02/07/invertible-constant-q/
_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp

Reply via email to