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
+