annotate dsp/chromagram/Chromagram.h @ 276:4c901426b9f3

* Do not calculate CQ sparse kernel when chromagram is constructed: only when it's actually used * Pre-calculate CQ sparse kernels in the sizes required for the default configurations of some of our transforms
author Chris Cannam <c.cannam@qmul.ac.uk>
date Thu, 04 Dec 2008 11:59:29 +0000
parents c96785becf96
children 6cb2b3cd5356
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@225 7 This file copyright 2005-2006 Christian Landone.
c@225 8 All rights reserved.
c@225 9 */
c@225 10
c@225 11 #ifndef CHROMAGRAM_H
c@225 12 #define CHROMAGRAM_H
c@225 13
c@225 14 #include "dsp/transforms/FFT.h"
c@257 15 #include "base/Window.h"
c@225 16 #include "ConstantQ.h"
c@225 17
c@225 18 struct ChromaConfig{
c@225 19 unsigned int FS;
c@225 20 double min;
c@225 21 double max;
c@225 22 unsigned int BPO;
c@225 23 double CQThresh;
c@259 24 MathUtilities::NormaliseType normalise;
c@225 25 };
c@225 26
c@225 27 class Chromagram
c@225 28 {
c@225 29
c@225 30 public:
c@225 31 Chromagram( ChromaConfig Config );
c@225 32 ~Chromagram();
c@225 33
c@257 34 double* process( const double *data ); // time domain
c@257 35 double* process( const double *real, const double *imag ); // frequency domain
c@225 36 void unityNormalise( double* src );
c@225 37
c@225 38 // Complex arithmetic
c@225 39 double kabs( double real, double imag );
c@225 40
c@225 41 // Results
c@225 42 unsigned int getK() { return m_uK;}
c@225 43 unsigned int getFrameSize() { return m_frameSize; }
c@225 44 unsigned int getHopSize() { return m_hopSize; }
c@225 45
c@225 46 private:
c@225 47 int initialise( ChromaConfig Config );
c@225 48 int deInitialise();
c@257 49
c@257 50 Window<double> *m_window;
c@257 51 double *m_windowbuf;
c@225 52
c@225 53 double* m_chromadata;
c@225 54 double m_FMin;
c@225 55 double m_FMax;
c@225 56 unsigned int m_BPO;
c@225 57 unsigned int m_uK;
c@225 58
c@259 59 MathUtilities::NormaliseType m_normalise;
c@225 60
c@225 61 unsigned int m_frameSize;
c@225 62 unsigned int m_hopSize;
c@225 63
c@228 64 FFT* m_FFT;
c@225 65 ConstantQ* m_ConstantQ;
c@225 66
c@225 67 double* m_FFTRe;
c@225 68 double* m_FFTIm;
c@225 69 double* m_CQRe;
c@225 70 double* m_CQIm;
c@225 71
c@276 72 bool m_skGenerated;
c@225 73 };
c@225 74
c@225 75 #endif