Mercurial > hg > constant-q-cpp
comparison README @ 193:8b78ce63f0e1
Docs about building the library
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Tue, 28 Nov 2017 09:25:17 +0000 |
parents | 8e64d3da52f5 |
children |
comparison
equal
deleted
inserted
replaced
192:60b34c5c650f | 193:8b78ce63f0e1 |
---|---|
9 | 9 |
10 The Constant-Q transform is a time-to-frequency-domain transform | 10 The Constant-Q transform is a time-to-frequency-domain transform |
11 related to the short-time Fourier transform, but with output bins | 11 related to the short-time Fourier transform, but with output bins |
12 spaced logarithmically in frequency, rather than linearly. The output | 12 spaced logarithmically in frequency, rather than linearly. The output |
13 bins are therefore linearly spaced in terms of musical pitch. | 13 bins are therefore linearly spaced in terms of musical pitch. |
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 ------------------ | |
14 | 25 |
15 This library provides: | 26 This library provides: |
16 | 27 |
17 * Forward transform: time-domain to complex Constant-Q bins | 28 * Forward transform: time-domain to complex Constant-Q bins |
18 * Forward spectrogram: time-domain to interpolated Constant-Q | 29 * Forward spectrogram: time-domain to interpolated Constant-Q |
26 * Constant-Q magnitude spectrogram with high and low frequency | 37 * Constant-Q magnitude spectrogram with high and low frequency |
27 extents defined as MIDI pitch values | 38 extents defined as MIDI pitch values |
28 * Pitch chromagram obtained by folding a Constant-Q spectrogram | 39 * Pitch chromagram obtained by folding a Constant-Q spectrogram |
29 around into a single-octave range | 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 The method is drawn from Christian Schörkhuber and Anssi Klapuri, | 67 The method is drawn from Christian Schörkhuber and Anssi Klapuri, |
32 "Constant-Q transform toolbox for music processing", SMC 2010. See the | 68 "Constant-Q transform toolbox for music processing", SMC 2010. See the |
33 file CITATION for details. If you use this code in research work, | 69 file CITATION for details. If you use this code in research work, |
34 please cite this paper. | 70 please cite this paper. |
35 | |
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 | 71 |
43 The C++ implementation is by Chris Cannam, Copyright 2014-2015 Queen | 72 The C++ implementation is by Chris Cannam, Copyright 2014-2015 Queen |
44 Mary, University of London. | 73 Mary, University of London. |
45 | 74 |
46 The library is provided under a liberal BSD/MIT-style open source | 75 The library is provided under a liberal BSD/MIT-style open source |