adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: BTrack - A Real-Time Beat Tracker: src/OnsetDetectionFunction.h Source File adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23:
adamstark@23:
adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23:
adamstark@23:
BTrack - A Real-Time Beat Tracker adamstark@23:
adamstark@23:
adamstark@23:
adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23: adamstark@23:
adamstark@24:  All Classes Files Functions Enumerations Pages
adamstark@23: adamstark@23: adamstark@23:
adamstark@23: adamstark@23:
adamstark@23: adamstark@23: adamstark@23:
adamstark@23:
adamstark@23:
adamstark@23:
OnsetDetectionFunction.h
adamstark@23:
adamstark@23:
adamstark@23: Go to the documentation of this file.
1 //=======================================================================
adamstark@23:
20 //=======================================================================
adamstark@23:
21 
adamstark@23:
22 #ifndef __ONSETDETECTIONFUNCTION_H
adamstark@23:
23 #define __ONSETDETECTIONFUNCTION_H
adamstark@23:
24 
adamstark@23:
25 #include "fftw3.h"
adamstark@23:
26 
adamstark@23:
27 //=======================================================================
adamstark@23: adamstark@23:
30 {
adamstark@23:
31  EnergyEnvelope,
adamstark@23:
32  EnergyDifference,
adamstark@23:
33  SpectralDifference,
adamstark@23:
34  SpectralDifferenceHWR,
adamstark@23:
35  PhaseDeviation,
adamstark@23:
36  ComplexSpectralDifference,
adamstark@23:
37  ComplexSpectralDifferenceHWR,
adamstark@23:
38  HighFrequencyContent,
adamstark@23:
39  HighFrequencySpectralDifference,
adamstark@23:
40  HighFrequencySpectralDifferenceHWR
adamstark@23:
41 };
adamstark@23:
42 
adamstark@23:
43 //=======================================================================
adamstark@23: adamstark@23:
46 {
adamstark@23:
47  RectangularWindow,
adamstark@23:
48  HanningWindow,
adamstark@23:
49  HammingWindow,
adamstark@23:
50  BlackmanWindow,
adamstark@23:
51  TukeyWindow
adamstark@23:
52 };
adamstark@23:
53 
adamstark@24:
54 //=======================================================================
adamstark@24: adamstark@24:
57 {
adamstark@24:
58 public:
adamstark@24:
59 
adamstark@24:
66  OnsetDetectionFunction(int hopSize_,int frameSize_,int onsetDetectionFunctionType_,int windowType);
adamstark@24:
67 
adamstark@24: adamstark@24:
70 
adamstark@24:
77  void initialise(int hopSize_,int frameSize_,int onsetDetectionFunctionType_,int windowType);
adamstark@24:
78 
adamstark@24:
83  double calculateOnsetDetectionFunctionSample(double *buffer);
adamstark@24:
84 
adamstark@24:
88  void setOnsetDetectionFunctionType(int onsetDetectionFunctionType_);
adamstark@23:
89 
adamstark@24:
90 private:
adamstark@24:
91 
adamstark@24:
93  void performFFT();
adamstark@24:
94 
adamstark@24:
95  //=======================================================================
adamstark@24:
97  double energyEnvelope();
adamstark@23:
98 
adamstark@24:
100  double energyDifference();
adamstark@23:
101 
adamstark@24:
103  double spectralDifference();
adamstark@23:
104 
adamstark@24:
106  double spectralDifferenceHWR();
adamstark@23:
107 
adamstark@24:
109  double phaseDeviation();
adamstark@23:
110 
adamstark@24:
112  double complexSpectralDifference();
adamstark@24:
113 
adamstark@24:
115  double complexSpectralDifferenceHWR();
adamstark@24:
116 
adamstark@24:
118  double highFrequencyContent();
adamstark@24:
119 
adamstark@24:
121  double highFrequencySpectralDifference();
adamstark@24:
122 
adamstark@24:
124  double highFrequencySpectralDifferenceHWR();
adamstark@24:
125 
adamstark@24:
126  //=======================================================================
adamstark@24:
128  void calculateRectangularWindow();
adamstark@24:
129 
adamstark@24:
131  void calculateHanningWindow();
adamstark@24:
132 
adamstark@24:
134  void calclulateHammingWindow();
adamstark@24:
135 
adamstark@24:
137  void calculateBlackmanWindow();
adamstark@24:
138 
adamstark@24:
140  void calculateTukeyWindow();
adamstark@24:
141 
adamstark@24:
142  //=======================================================================
adamstark@24:
147  double princarg(double phaseVal);
adamstark@24:
148 
adamstark@24:
149 
adamstark@24:
150  double pi;
adamstark@24:
152  int frameSize;
adamstark@24:
153  int hopSize;
adamstark@24:
154  int onsetDetectionFunctionType;
adamstark@24:
156  fftw_plan p;
adamstark@24:
157  fftw_complex *complexIn;
adamstark@24:
158  fftw_complex *complexOut;
adamstark@24:
160  int initialised;
adamstark@24:
162  double *frame;
adamstark@24:
163  double *window;
adamstark@24:
165  double prevEnergySum;
adamstark@24:
167  double *magSpec;
adamstark@24:
168  double *prevMagSpec;
adamstark@24:
170  double *phase;
adamstark@24:
171  double *prevPhase;
adamstark@24:
172  double *prevPhase2;
adamstark@24:
174 };
adamstark@24:
175 
adamstark@24:
176 
adamstark@24:
177 #endif
adamstark@23:
adamstark@23: adamstark@23: adamstark@23: adamstark@23: