inverse CQT
See original GitHub issue(cc @ebattenberg @dpwe)
Seems like we ought to be able to do this, if we preserve phase in the cqt.
The main barrier comes from variable_hop, which uses oversampling and aggregation to handle large hop-sizes with small filters. This works fine in magnitude, but I don’t see a clean way to make it work out in the complex domain.
Perhaps we can add a dtype
parameter to cqt: if the user requests a complex-type output, we preserve phase, and throw an exception on variable-hop aggregation. Otherwise, we let it through in the current state.
Are there other barriers to icqt that I’m not seeing at the moment?
Issue Analytics
- State:
- Created 9 years ago
- Comments:21 (19 by maintainers)
Top Results From Across the Web
MATLAB icqt - MathWorks
Inverse constant-Q transform, returned as a vector or matrix. If the input to cqt was a single signal, then xrec is a vector....
Read more >An overview of the inverse CQT transform (ICQT), where an...
CQT refers to a time-frequency represen-tation where the frequency bins are geometrically spaced and the Q-factors (ratios of the center frequencies to band- ......
Read more >Sound quality comparison of inverse constant-Q ... - YouTube
Sound quality comparison of inverse constant-Q conversion with bins_per_octave in LibROSA CQT /iCQT. 264 views 1 year ago.
Read more >librosa.icqt — librosa 0.10.0.dev0 documentation
Compute the inverse constant-Q transform. Given a constant-Q transform representation C of an audio signal y , this function produces an approximation y_hat...
Read more >Towards an Inverse Constant Q Transform - Arrow@TU Dublin
an inverse Discrete Fourier Transform. 1. THE CONSTANT Q TRANSFORM. The Constant Q transform (CQT) was derived by.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
I’ve updated the notebook to work on the latest #417 PR, which fixes a number of attenuation continuity errors in addition to normalizing filters by length.
The results now look and sound good enough (IMO) to actively work toward implementation in librosa, once #417 is merged.
Here’s an example of
cqt(y)
(left) andcqt(icqt(cqt(y)))
(right):More plots and examples are included in the notebook. There are still a couple of issues to work out (eg the unscaled case), and I think there might be a small amount of delay introduced by the icqt.
I don’t think we should have multiple CQT implementations.
As I mentioned above, we have a working implementation of inverse cqt. I’m holding off on making a PR because it requires phase information, which is currently not produced by default.
If we provide icqt functionality, I want it to work “out of the box”. This will be possible in 0.5.0 when the deprecated default parameter settings are replaced, and
cqt
is complex-valued by default.