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