annotate dsp/chromagram/ConstantQ.h @ 321:f1e6be2de9a5

A threshold (delta) is added in the peak picking parameters structure (PPickParams). It is used as an offset when computing the smoothed detection function. A constructor for the structure PPickParams is also added to set the parameters to 0 when a structure instance is created. Hence programmes using the peak picking parameter structure and which do not set the delta parameter (e.g. QM Vamp note onset detector) won't be affected by the modifications. Functions modified: - dsp/onsets/PeakPicking.cpp - dsp/onsets/PeakPicking.h - dsp/signalconditioning/DFProcess.cpp - dsp/signalconditioning/DFProcess.h
author mathieub <mathieu.barthet@eecs.qmul.ac.uk>
date Mon, 20 Jun 2011 19:01:48 +0100
parents d5014ab8b0e5
children 50a97c8d52ed
rev   line source
c@225 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
c@225 2
c@225 3 /*
c@225 4 QM DSP Library
c@225 5
c@225 6 Centre for Digital Music, Queen Mary, University of London.
c@309 7 This file 2005-2006 Christian Landone.
c@309 8
c@309 9 This program is free software; you can redistribute it and/or
c@309 10 modify it under the terms of the GNU General Public License as
c@309 11 published by the Free Software Foundation; either version 2 of the
c@309 12 License, or (at your option) any later version. See the file
c@309 13 COPYING included with this distribution for more information.
c@225 14 */
c@225 15
c@225 16 #ifndef CONSTANTQ_H
c@225 17 #define CONSTANTQ_H
c@225 18
c@225 19 #include <vector>
c@241 20 #include "maths/MathAliases.h"
c@241 21 #include "maths/MathUtilities.h"
c@225 22
c@225 23 struct CQConfig{
c@245 24 unsigned int FS; // samplerate
c@245 25 double min; // minimum frequency
c@245 26 double max; // maximum frequency
c@245 27 unsigned int BPO; // bins per octave
c@245 28 double CQThresh; // threshold
c@225 29 };
c@225 30
c@225 31 class ConstantQ {
c@225 32
c@225 33 //public functions incl. sparsekernel so can keep out of loop in main
c@225 34 public:
c@257 35 void process( const double* FFTRe, const double* FFTIm,
c@257 36 double* CQRe, double* CQIm );
c@225 37
c@225 38 ConstantQ( CQConfig Config );
c@225 39 ~ConstantQ();
c@225 40
c@257 41 double* process( const double* FFTData );
c@225 42
c@225 43 void sparsekernel();
c@225 44
c@225 45 double hamming(int len, int n) {
c@225 46 double out = 0.54 - 0.46*cos(2*PI*n/len);
c@225 47 return(out);
c@225 48 }
c@225 49
c@225 50 int getnumwin() { return m_numWin;}
c@225 51 double getQ() { return m_dQ;}
c@225 52 int getK() {return m_uK ;}
c@225 53 int getfftlength() { return m_FFTLength;}
c@225 54 int gethop() { return m_hop;}
c@225 55
c@225 56 private:
c@225 57 void initialise( CQConfig Config );
c@225 58 void deInitialise();
c@225 59
c@225 60 double* m_CQdata;
c@225 61 unsigned int m_FS;
c@225 62 double m_FMin;
c@225 63 double m_FMax;
c@225 64 double m_dQ;
c@225 65 double m_CQThresh;
c@225 66 unsigned int m_numWin;
c@225 67 unsigned int m_hop;
c@225 68 unsigned int m_BPO;
c@225 69 unsigned int m_FFTLength;
c@225 70 unsigned int m_uK;
c@276 71
c@276 72 struct SparseKernel {
c@276 73 std::vector<unsigned> is;
c@276 74 std::vector<unsigned> js;
c@276 75 std::vector<double> imag;
c@276 76 std::vector<double> real;
c@276 77 };
c@276 78
c@276 79 SparseKernel *m_sparseKernel;
c@225 80 };
c@225 81
c@225 82
c@225 83 #endif//CONSTANTQ_H
c@225 84