annotate constant-q-cpp/README @ 372:af71cbdab621 tip

Update bqvec code
author Chris Cannam
date Tue, 19 Nov 2019 10:13:32 +0000
parents 5d0a2ebb4d17
children
rev   line source
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