Revision 193:390d3c69ab40
| README | ||
|---|---|---|
| 12 | 12 |
spaced logarithmically in frequency, rather than linearly. The output |
| 13 | 13 |
bins are therefore linearly spaced in terms of musical pitch. |
| 14 | 14 |
|
| 15 |
This implementation is reasonably fast and is causal, operating |
|
| 16 |
block-by-block on the input, though with quite high latency depending |
|
| 17 |
on the frequency range specified. By default it produces output at a |
|
| 18 |
higher time resolution than some other implementations, using multiple |
|
| 19 |
kernel atoms per time block. The inverse transform is approximate |
|
| 20 |
rather than exact (see the paper cited below for details). |
|
| 21 |
|
|
| 22 |
|
|
| 23 |
About this library |
|
| 24 |
------------------ |
|
| 25 |
|
|
| 15 | 26 |
This library provides: |
| 16 | 27 |
|
| 17 | 28 |
* Forward transform: time-domain to complex Constant-Q bins |
| ... | ... | |
| 28 | 39 |
* Pitch chromagram obtained by folding a Constant-Q spectrogram |
| 29 | 40 |
around into a single-octave range |
| 30 | 41 |
|
| 42 |
|
|
| 43 |
Building the library and plugin |
|
| 44 |
------------------------------- |
|
| 45 |
|
|
| 46 |
To compile this code, use "make -f <file>" where <file> is one of |
|
| 47 |
Makefile.linux, Makefile.osx, Makefile.mingw32 depending on |
|
| 48 |
platform. These files set up some flags and include Makefile.inc, |
|
| 49 |
which defines the input files and so forth. You could equally write |
|
| 50 |
your own Makefile which does the same. |
|
| 51 |
|
|
| 52 |
The Vamp plugin part of the build expects to find a compiled version |
|
| 53 |
of the Vamp Plugin SDK in a neighbouring folder (../vamp-plugin-sdk). |
|
| 54 |
The unit tests also require Boost headers to be available. |
|
| 55 |
|
|
| 56 |
Note that this code uses the KissFFT library (compiled from source |
|
| 57 |
bundled here) in its non-default double-precision mode via the use of |
|
| 58 |
the flag -Dkiss_fft_scalar=double in Makefile.inc. If you want to |
|
| 59 |
build this code using an external KissFFT library or custom build |
|
| 60 |
scripts, you may need to do some work to ensure you have the right |
|
| 61 |
configuration. |
|
| 62 |
|
|
| 63 |
|
|
| 64 |
Credits |
|
| 65 |
------- |
|
| 66 |
|
|
| 31 | 67 |
The method is drawn from Christian Schörkhuber and Anssi Klapuri, |
| 32 | 68 |
"Constant-Q transform toolbox for music processing", SMC 2010. See the |
| 33 | 69 |
file CITATION for details. If you use this code in research work, |
| 34 | 70 |
please cite this paper. |
| 35 | 71 |
|
| 36 |
The implementation is reasonably fast and is causal, operating |
|
| 37 |
block-by-block on the input, though with quite high latency |
|
| 38 |
depending on the frequency range specified. By default it produces |
|
| 39 |
output at a higher time resolution than some other implementations, |
|
| 40 |
using multiple kernel atoms per time block. The inverse transform is |
|
| 41 |
approximate rather than exact (see the paper for details). |
|
| 42 |
|
|
| 43 | 72 |
The C++ implementation is by Chris Cannam, Copyright 2014-2015 Queen |
| 44 | 73 |
Mary, University of London. |
| 45 | 74 |
|
Also available in: Unified diff