Announcing a new C++ library and Vamp plugin implementing the Constant-Q transform of a time-domain signal.

https://code.soundsoftware.ac.uk/projects/constant-q-cppThe Constant-Q transform is a time-to-frequency-domain transform related to the short-time Fourier transform, but with output bins spaced logarithmically in frequency, rather than linearly. The output bins are therefore linearly spaced in terms of musical pitch. The Constant-Q is useful as a preliminary transform in various other methods such as note transcription and key estimation techniques.

This library provides:

* Forward transform: time-domain to complex Constant-Q bins

* Forward spectrogram: time-domain to interpolated Constant-Q magnitude spectrogram

* Inverse transform: complex Constant-Q bins to time domain

The Vamp plugin provides:

* Constant-Q magnitude spectrogram with high and low frequency extents defined in Hz

* Constant-Q magnitude spectrogram with high and low frequency extents defined as MIDI pitch values

* Pitch chromagram obtained by folding a Constant-Q spectrogram around into a single-octave range

The code is provided with full source under a liberal licence, and plugin binaries are provided for Windows, OS/X, and Linux.

The method is drawn from Christian SchĂ¶rkhuber and Anssi Klapuri, "Constant-Q transform toolbox for music processing", SMC 2010. See the file CITATION for details. If you use this code in research work, please cite this paper.