c@126: c@126: Constant-Q Library c@126: ================== c@126: c@130: A C++ library and Vamp plugin implementing the Constant-Q transform c@130: of a time-domain signal. c@126: c@126: https://code.soundsoftware.ac.uk/projects/constant-q-cpp c@126: c@126: The Constant-Q transform is a time-to-frequency-domain transform c@126: related to the short-time Fourier transform, but with output bins c@126: spaced logarithmically in frequency, rather than linearly. The output c@126: bins are therefore linearly spaced in terms of musical pitch. c@126: c@193: This implementation is reasonably fast and is causal, operating c@193: block-by-block on the input, though with quite high latency depending c@193: on the frequency range specified. By default it produces output at a c@193: higher time resolution than some other implementations, using multiple c@193: kernel atoms per time block. The inverse transform is approximate c@193: rather than exact (see the paper cited below for details). c@193: c@193: c@193: About this library c@193: ------------------ c@193: c@126: This library provides: c@126: c@126: * Forward transform: time-domain to complex Constant-Q bins c@126: * Forward spectrogram: time-domain to interpolated Constant-Q c@126: magnitude spectrogram c@126: * Inverse transform: complex Constant-Q bins to time domain c@126: c@163: The Vamp plugin provides: c@163: c@163: * Constant-Q magnitude spectrogram with high and low frequency c@163: extents defined in Hz c@163: * Constant-Q magnitude spectrogram with high and low frequency c@163: extents defined as MIDI pitch values c@163: * Pitch chromagram obtained by folding a Constant-Q spectrogram c@163: around into a single-octave range c@163: c@193: c@193: Building the library and plugin c@193: ------------------------------- c@193: c@193: To compile this code, use "make -f " where is one of c@193: Makefile.linux, Makefile.osx, Makefile.mingw32 depending on c@193: platform. These files set up some flags and include Makefile.inc, c@193: which defines the input files and so forth. You could equally write c@193: your own Makefile which does the same. c@193: c@193: The Vamp plugin part of the build expects to find a compiled version c@193: of the Vamp Plugin SDK in a neighbouring folder (../vamp-plugin-sdk). c@193: The unit tests also require Boost headers to be available. c@193: c@193: Note that this code uses the KissFFT library (compiled from source c@193: bundled here) in its non-default double-precision mode via the use of c@193: the flag -Dkiss_fft_scalar=double in Makefile.inc. If you want to c@193: build this code using an external KissFFT library or custom build c@193: scripts, you may need to do some work to ensure you have the right c@193: configuration. c@193: c@193: c@193: Credits c@193: ------- c@193: c@126: The method is drawn from Christian Schörkhuber and Anssi Klapuri, c@126: "Constant-Q transform toolbox for music processing", SMC 2010. See the c@126: file CITATION for details. If you use this code in research work, c@126: please cite this paper. c@126: c@182: The C++ implementation is by Chris Cannam, Copyright 2014-2015 Queen c@182: Mary, University of London. c@126: c@126: The library is provided under a liberal BSD/MIT-style open source c@126: licence. See the file COPYING for more information. c@126: