cannam@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ cannam@0: cannam@0: /* cannam@0: QM DSP Library cannam@0: cannam@0: Centre for Digital Music, Queen Mary, University of London. cannam@0: This file copyright 2005-2006 Christian Landone. cannam@0: All rights reserved. cannam@0: */ cannam@0: cannam@0: #ifndef CONSTANTQ_H cannam@0: #define CONSTANTQ_H cannam@0: cannam@0: #include cannam@0: #include "dsp/maths/MathAliases.h" cannam@0: #include "dsp/maths/MathUtilities.h" cannam@0: cannam@0: struct CQConfig{ cannam@0: unsigned int FS; cannam@0: double min; cannam@0: double max; cannam@0: unsigned int BPO; cannam@0: double CQThresh; cannam@0: }; cannam@0: cannam@0: class ConstantQ { cannam@0: cannam@0: //public functions incl. sparsekernel so can keep out of loop in main cannam@0: public: cannam@0: void process( double* FFTRe, double* FFTIm, double* CQRe, double* CQIm ); cannam@0: cannam@0: ConstantQ( CQConfig Config ); cannam@0: ~ConstantQ(); cannam@0: cannam@0: double* process( double* FFTData ); cannam@0: cannam@0: void sparsekernel(); cannam@0: cannam@0: double hamming(int len, int n) { cannam@0: double out = 0.54 - 0.46*cos(2*PI*n/len); cannam@0: return(out); cannam@0: } cannam@0: cannam@0: int getnumwin() { return m_numWin;} cannam@0: double getQ() { return m_dQ;} cannam@0: int getK() {return m_uK ;} cannam@0: int getfftlength() { return m_FFTLength;} cannam@0: int gethop() { return m_hop;} cannam@0: cannam@0: private: cannam@0: void initialise( CQConfig Config ); cannam@0: void deInitialise(); cannam@0: cannam@0: double* m_CQdata; cannam@0: unsigned int m_FS; cannam@0: double m_FMin; cannam@0: double m_FMax; cannam@0: double m_dQ; cannam@0: double m_CQThresh; cannam@0: unsigned int m_numWin; cannam@0: unsigned int m_hop; cannam@0: unsigned int m_BPO; cannam@0: unsigned int m_FFTLength; cannam@0: unsigned int m_uK; cannam@0: std::vector m_sparseKernelIs; cannam@0: std::vector m_sparseKernelJs; cannam@0: std::vector m_sparseKernelImagValues; cannam@0: std::vector m_sparseKernelRealValues; cannam@0: }; cannam@0: cannam@0: cannam@0: #endif//CONSTANTQ_H cannam@0: