Wiki » History » Version 15

Version 14 (Chris Cannam, 2013-05-17 10:22 PM) → Version 15/30 (Chris Cannam, 2013-05-17 10:23 PM)

h1. Wiki

h2. The method

*The method to be implemented* is that from "Anssi's Constant-Q Toolbox page":http://www.eecs.qmul.ac.uk/~anssik/cqt/.

* The MATLAB toolbox reference implementation is "here":/projects/constant-q-toolbox.

* The "QM-DSP":/projects/qm-dsp library also contains a Constant-Q implementation: implementation; there is a Vamp plugin of it in the "QM Vamp Plugins":/projects/qm-vamp-plugins set. I believe it is based on the method of Brown and Puckette. Our version isn't very good. Among other things, we should aim to produce an improved plugin.

*Has anyone already made one* corresponding directly to the Schörkhuber/Klapuri method? We don't want to duplicate effort. And if someone has, why don't I know about it? -- can we do anything to help make it more universally known?

*What other modern methods* exist in C++?

h2. What we want it for

The immediate requirement is as the first step in implementing Emmanouil Benetos and Simon Dixon's "music transcription":http://www.mitpressjournals.org/doi/abs/10.1162/COMJ_a_00146 method for a Vamp plugin.

But the reason we aren't using the QM-DSP constant-Q implementation is that it simply isn't good enough, and that means it isn't really good enough for the rest of the world either. We should make a better one to improve upon the existing QM Vamp Plugin as well.

h2. Implementation notes

The Schörkhuber/Klapuri method has (at least) three useful qualities:

# It's mathematically diligent. Decisions such as kernel and window shape are explained and supported in the paper.
# It is invertible.
# There is a MATLAB implementation available, and others have tested it.