annotate dsp/chromagram/ConstantQ.h @ 489:701233f8ed41

Make include-guards consistent
author Chris Cannam <cannam@all-day-breakfast.com>
date Fri, 31 May 2019 16:48:37 +0100
parents 5998ee1042d3
children 1bea13b8f951
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
cannam@489 16 #ifndef QM_DSP_CONSTANTQ_H
cannam@489 17 #define QM_DSP_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
cannam@465 23 struct CQConfig {
cannam@465 24 double 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
cannam@483 31 class ConstantQ
cannam@483 32 {
c@225 33 public:
c@257 34 void process( const double* FFTRe, const double* FFTIm,
c@257 35 double* CQRe, double* CQIm );
c@225 36
c@225 37 ConstantQ( CQConfig Config );
c@225 38 ~ConstantQ();
c@225 39
c@257 40 double* process( const double* FFTData );
c@225 41
c@225 42 void sparsekernel();
c@225 43
c@225 44 double hamming(int len, int n) {
cannam@487 45 double out = 0.54 - 0.46*cos(2*M_PI*n/len);
cannam@483 46 return(out);
c@225 47 }
cannam@483 48
c@225 49 int getnumwin() { return m_numWin;}
c@225 50 double getQ() { return m_dQ;}
c@225 51 int getK() {return m_uK ;}
c@225 52 int getfftlength() { return m_FFTLength;}
c@225 53 int gethop() { return m_hop;}
c@225 54
c@225 55 private:
c@225 56 void initialise( CQConfig Config );
c@225 57 void deInitialise();
cannam@483 58
c@225 59 double* m_CQdata;
cannam@465 60 double m_FS;
c@225 61 double m_FMin;
c@225 62 double m_FMax;
c@225 63 double m_dQ;
c@225 64 double m_CQThresh;
c@225 65 unsigned int m_numWin;
c@225 66 unsigned int m_hop;
c@225 67 unsigned int m_BPO;
c@225 68 unsigned int m_FFTLength;
c@225 69 unsigned int m_uK;
c@276 70
c@276 71 struct SparseKernel {
c@276 72 std::vector<unsigned> is;
c@276 73 std::vector<unsigned> js;
c@276 74 std::vector<double> imag;
c@276 75 std::vector<double> real;
c@276 76 };
c@276 77
c@276 78 SparseKernel *m_sparseKernel;
c@225 79 };
c@225 80
c@225 81
c@225 82 #endif//CONSTANTQ_H
c@225 83