Mercurial > hg > qm-dsp
diff dsp/chromagram/ConstantQ.h @ 225:49844bc8a895
* Queen Mary C++ DSP library
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Wed, 05 Apr 2006 17:35:59 +0000 |
parents | |
children | 2e3f5d2d62c1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dsp/chromagram/ConstantQ.h Wed Apr 05 17:35:59 2006 +0000 @@ -0,0 +1,73 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + QM DSP Library + + Centre for Digital Music, Queen Mary, University of London. + This file copyright 2005-2006 Christian Landone. + All rights reserved. +*/ + +#ifndef CONSTANTQ_H +#define CONSTANTQ_H + +#include <vector> +#include "dsp/maths/MathAliases.h" +#include "dsp/maths/MathUtilities.h" + +struct CQConfig{ + unsigned int FS; + double min; + double max; + unsigned int BPO; + double CQThresh; +}; + +class ConstantQ { + +//public functions incl. sparsekernel so can keep out of loop in main +public: + void process( double* FFTRe, double* FFTIm, double* CQRe, double* CQIm ); + + ConstantQ( CQConfig Config ); + ~ConstantQ(); + + double* process( double* FFTData ); + + void sparsekernel(); + + double hamming(int len, int n) { + double out = 0.54 - 0.46*cos(2*PI*n/len); + return(out); + } + + int getnumwin() { return m_numWin;} + double getQ() { return m_dQ;} + int getK() {return m_uK ;} + int getfftlength() { return m_FFTLength;} + int gethop() { return m_hop;} + +private: + void initialise( CQConfig Config ); + void deInitialise(); + + double* m_CQdata; + unsigned int m_FS; + double m_FMin; + double m_FMax; + double m_dQ; + double m_CQThresh; + unsigned int m_numWin; + unsigned int m_hop; + unsigned int m_BPO; + unsigned int m_FFTLength; + unsigned int m_uK; + std::vector<unsigned> m_sparseKernelIs; + std::vector<unsigned> m_sparseKernelJs; + std::vector<double> m_sparseKernelImagValues; + std::vector<double> m_sparseKernelRealValues; +}; + + +#endif//CONSTANTQ_H +