Chris@366
|
1
|
Chris@366
|
2 Constant-Q Library
|
Chris@366
|
3 ==================
|
Chris@366
|
4
|
Chris@366
|
5 A C++ library and Vamp plugin implementing the Constant-Q transform
|
Chris@366
|
6 of a time-domain signal.
|
Chris@366
|
7
|
Chris@366
|
8 https://code.soundsoftware.ac.uk/projects/constant-q-cpp
|
Chris@366
|
9
|
Chris@366
|
10 The Constant-Q transform is a time-to-frequency-domain transform
|
Chris@366
|
11 related to the short-time Fourier transform, but with output bins
|
Chris@366
|
12 spaced logarithmically in frequency, rather than linearly. The output
|
Chris@366
|
13 bins are therefore linearly spaced in terms of musical pitch.
|
Chris@366
|
14
|
Chris@366
|
15 This library provides:
|
Chris@366
|
16
|
Chris@366
|
17 * Forward transform: time-domain to complex Constant-Q bins
|
Chris@366
|
18 * Forward spectrogram: time-domain to interpolated Constant-Q
|
Chris@366
|
19 magnitude spectrogram
|
Chris@366
|
20 * Inverse transform: complex Constant-Q bins to time domain
|
Chris@366
|
21
|
Chris@366
|
22 The Vamp plugin provides:
|
Chris@366
|
23
|
Chris@366
|
24 * Constant-Q magnitude spectrogram with high and low frequency
|
Chris@366
|
25 extents defined in Hz
|
Chris@366
|
26 * Constant-Q magnitude spectrogram with high and low frequency
|
Chris@366
|
27 extents defined as MIDI pitch values
|
Chris@366
|
28 * Pitch chromagram obtained by folding a Constant-Q spectrogram
|
Chris@366
|
29 around into a single-octave range
|
Chris@366
|
30
|
Chris@366
|
31 The method is drawn from Christian Schörkhuber and Anssi Klapuri,
|
Chris@366
|
32 "Constant-Q transform toolbox for music processing", SMC 2010. See the
|
Chris@366
|
33 file CITATION for details. If you use this code in research work,
|
Chris@366
|
34 please cite this paper.
|
Chris@366
|
35
|
Chris@366
|
36 The implementation is reasonably fast and is causal, operating
|
Chris@366
|
37 block-by-block on the input, though with quite high latency
|
Chris@366
|
38 depending on the frequency range specified. By default it produces
|
Chris@366
|
39 output at a higher time resolution than some other implementations,
|
Chris@366
|
40 using multiple kernel atoms per time block. The inverse transform is
|
Chris@366
|
41 approximate rather than exact (see the paper for details).
|
Chris@366
|
42
|
Chris@366
|
43 The C++ implementation is by Chris Cannam, Copyright 2014-2015 Queen
|
Chris@366
|
44 Mary, University of London.
|
Chris@366
|
45
|
Chris@366
|
46 The library is provided under a liberal BSD/MIT-style open source
|
Chris@366
|
47 licence. See the file COPYING for more information.
|
Chris@366
|
48
|