qm-dsp  1.8
Chromagram.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  QM DSP Library
5 
6  Centre for Digital Music, Queen Mary, University of London.
7  This file 2005-2006 Christian Landone.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef CHROMAGRAM_H
17 #define CHROMAGRAM_H
18 
19 #include "dsp/transforms/FFT.h"
20 #include "base/Window.h"
21 #include "ConstantQ.h"
22 
23 struct ChromaConfig{
24  unsigned int FS;
25  double min;
26  double max;
27  unsigned int BPO;
28  double CQThresh;
30 };
31 
32 class Chromagram
33 {
34 
35 public:
36  Chromagram( ChromaConfig Config );
37  ~Chromagram();
38 
39  double* process( const double *data ); // time domain
40  double* process( const double *real, const double *imag ); // frequency domain
41  void unityNormalise( double* src );
42 
43  // Complex arithmetic
44  double kabs( double real, double imag );
45 
46  // Results
47  unsigned int getK() { return m_uK;}
48  unsigned int getFrameSize() { return m_frameSize; }
49  unsigned int getHopSize() { return m_hopSize; }
50 
51 private:
52  int initialise( ChromaConfig Config );
53  int deInitialise();
54 
56  double *m_windowbuf;
57 
58  double* m_chromadata;
59  double m_FMin;
60  double m_FMax;
61  unsigned int m_BPO;
62  unsigned int m_uK;
63 
65 
66  unsigned int m_frameSize;
67  unsigned int m_hopSize;
68 
71 
72  double* m_FFTRe;
73  double* m_FFTIm;
74  double* m_CQRe;
75  double* m_CQIm;
76 
78 };
79 
80 #endif
unsigned int getHopSize()
Definition: Chromagram.h:49
double CQThresh
Definition: Chromagram.h:28
double min
Definition: Chromagram.h:25
unsigned int m_BPO
Definition: Chromagram.h:61
unsigned int BPO
Definition: Chromagram.h:27
FFTReal * m_FFT
Definition: Chromagram.h:69
unsigned int m_frameSize
Definition: Chromagram.h:66
unsigned int m_uK
Definition: Chromagram.h:62
unsigned int FS
Definition: Chromagram.h:24
double max
Definition: Chromagram.h:26
unsigned int getFrameSize()
Definition: Chromagram.h:48
MathUtilities::NormaliseType normalise
Definition: Chromagram.h:29
unsigned int getK()
Definition: Chromagram.h:47
bool m_skGenerated
Definition: Chromagram.h:77
MathUtilities::NormaliseType m_normalise
Definition: Chromagram.h:64
double * m_CQRe
Definition: Chromagram.h:74
double * m_chromadata
Definition: Chromagram.h:58
unsigned int m_hopSize
Definition: Chromagram.h:67
double m_FMin
Definition: Chromagram.h:59
ConstantQ * m_ConstantQ
Definition: Chromagram.h:70
Definition: FFT.h:46
Window< double > * m_window
Definition: Chromagram.h:55
double * m_FFTRe
Definition: Chromagram.h:72
double * m_FFTIm
Definition: Chromagram.h:73
double m_FMax
Definition: Chromagram.h:60
double * m_windowbuf
Definition: Chromagram.h:56
double * m_CQIm
Definition: Chromagram.h:75