annotate dsp/chromagram/Chromagram.h @ 3:07ac3de1e53b

* Give the chromagram an alternative entry point passing in frequency domain data * Centre the Hamming windows and do an fftshift when calculating sparse kernel
author cannam
date Mon, 15 May 2006 15:07:27 +0000
parents d7116e3183f8
children 8bb764969d50
rev   line source
cannam@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@0 2
cannam@0 3 /*
cannam@0 4 QM DSP Library
cannam@0 5
cannam@0 6 Centre for Digital Music, Queen Mary, University of London.
cannam@0 7 This file copyright 2005-2006 Christian Landone.
cannam@0 8 All rights reserved.
cannam@0 9 */
cannam@0 10
cannam@0 11 #ifndef CHROMAGRAM_H
cannam@0 12 #define CHROMAGRAM_H
cannam@0 13
cannam@0 14 #include "dsp/transforms/FFT.h"
cannam@0 15 #include "ConstantQ.h"
cannam@0 16
cannam@0 17 struct ChromaConfig{
cannam@0 18 unsigned int FS;
cannam@0 19 double min;
cannam@0 20 double max;
cannam@0 21 unsigned int BPO;
cannam@0 22 double CQThresh;
cannam@0 23 bool isNormalised;
cannam@0 24 };
cannam@0 25
cannam@0 26 class Chromagram
cannam@0 27 {
cannam@0 28
cannam@0 29 public:
cannam@0 30 Chromagram( ChromaConfig Config );
cannam@0 31 ~Chromagram();
cannam@0 32
cannam@3 33 double* process( double *data ); // time domain
cannam@3 34 double* process( double *real, double *imag ); // frequency domain
cannam@0 35 void unityNormalise( double* src );
cannam@0 36
cannam@0 37 // Complex arithmetic
cannam@0 38 double kabs( double real, double imag );
cannam@0 39
cannam@0 40 // Results
cannam@0 41 unsigned int getK() { return m_uK;}
cannam@0 42 unsigned int getFrameSize() { return m_frameSize; }
cannam@0 43 unsigned int getHopSize() { return m_hopSize; }
cannam@0 44
cannam@0 45 private:
cannam@0 46 int initialise( ChromaConfig Config );
cannam@0 47 int deInitialise();
cannam@0 48
cannam@0 49 double* m_chromadata;
cannam@0 50 double m_FMin;
cannam@0 51 double m_FMax;
cannam@0 52 unsigned int m_BPO;
cannam@0 53 unsigned int m_uK;
cannam@0 54
cannam@0 55 bool isNormalised;
cannam@0 56
cannam@0 57 unsigned int m_frameSize;
cannam@0 58 unsigned int m_hopSize;
cannam@0 59
cannam@3 60 FFT* m_FFT;
cannam@0 61 ConstantQ* m_ConstantQ;
cannam@0 62
cannam@0 63 double* m_FFTRe;
cannam@0 64 double* m_FFTIm;
cannam@0 65 double* m_CQRe;
cannam@0 66 double* m_CQIm;
cannam@0 67
cannam@0 68 };
cannam@0 69
cannam@0 70 #endif