adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: BTrack - A Real-Time Beat Tracker: src/OnsetDetectionFunction.h Source File adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60:
adamstark@60:
adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60:
adamstark@60:
BTrack - A Real-Time Beat Tracker adamstark@60:
adamstark@60:
adamstark@60:
adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60: adamstark@60:
adamstark@60:  All Classes Files Functions Enumerations
adamstark@60: adamstark@60: adamstark@60:
adamstark@60: adamstark@60:
adamstark@60: adamstark@60: adamstark@60:
adamstark@60:
adamstark@60:
adamstark@60:
OnsetDetectionFunction.h
adamstark@60:
adamstark@60:
adamstark@60: Go to the documentation of this file.
1 //=======================================================================
adamstark@60:
20 //=======================================================================
adamstark@60:
21 
adamstark@60:
22 #ifndef __ONSETDETECTIONFUNCTION_H
adamstark@60:
23 #define __ONSETDETECTIONFUNCTION_H
adamstark@60:
24 
adamstark@60:
25 #include "fftw3.h"
adamstark@60:
26 
adamstark@60:
27 //=======================================================================
adamstark@60: adamstark@60:
30 {
adamstark@60:
31  EnergyEnvelope,
adamstark@60:
32  EnergyDifference,
adamstark@60:
33  SpectralDifference,
adamstark@60:
34  SpectralDifferenceHWR,
adamstark@60:
35  PhaseDeviation,
adamstark@60:
36  ComplexSpectralDifference,
adamstark@60:
37  ComplexSpectralDifferenceHWR,
adamstark@60:
38  HighFrequencyContent,
adamstark@60:
39  HighFrequencySpectralDifference,
adamstark@60:
40  HighFrequencySpectralDifferenceHWR
adamstark@60:
41 };
adamstark@60:
42 
adamstark@60:
43 //=======================================================================
adamstark@60: adamstark@60:
46 {
adamstark@60:
47  RectangularWindow,
adamstark@60:
48  HanningWindow,
adamstark@60:
49  HammingWindow,
adamstark@60:
50  BlackmanWindow,
adamstark@60:
51  TukeyWindow
adamstark@60:
52 };
adamstark@60:
53 
adamstark@60: adamstark@60:
55 {
adamstark@60:
56 public:
adamstark@60:
57 
adamstark@60:
64  OnsetDetectionFunction(int hopSize_,int frameSize_,int onsetDetectionFunctionType_,int windowType);
adamstark@60:
65 
adamstark@60: adamstark@60:
68 
adamstark@60:
70  void initialise(int hopSize_,int frameSize_,int onsetDetectionFunctionType_,int windowType);
adamstark@60:
71 
adamstark@60:
73  double calculateOnsetDetectionFunctionSample(double *buffer);
adamstark@60:
74 
adamstark@60:
76  void setOnsetDetectionFunctionType(int onsetDetectionFunctionType_);
adamstark@60:
77 
adamstark@60:
78 private:
adamstark@60:
79 
adamstark@60:
81  void performFFT();
adamstark@60:
82 
adamstark@60:
83  //=======================================================================
adamstark@60:
85  double energyEnvelope();
adamstark@60:
86 
adamstark@60:
88  double energyDifference();
adamstark@60:
89 
adamstark@60:
91  double spectralDifference();
adamstark@60:
92 
adamstark@60:
94  double spectralDifferenceHWR();
adamstark@60:
95 
adamstark@60:
97  double phaseDeviation();
adamstark@60:
98 
adamstark@60:
100  double complexSpectralDifference();
adamstark@60:
101 
adamstark@60:
103  double complexSpectralDifferenceHWR();
adamstark@60:
104 
adamstark@60:
106  double highFrequencyContent();
adamstark@60:
107 
adamstark@60:
109  double highFrequencySpectralDifference();
adamstark@60:
110 
adamstark@60:
112  double highFrequencySpectralDifferenceHWR();
adamstark@60:
113 
adamstark@60:
114  //=======================================================================
adamstark@60:
116  void calculateRectangularWindow();
adamstark@60:
117 
adamstark@60:
119  void calculateHanningWindow();
adamstark@60:
120 
adamstark@60:
122  void calclulateHammingWindow();
adamstark@60:
123 
adamstark@60:
125  void calculateBlackmanWindow();
adamstark@60:
126 
adamstark@60:
128  void calculateTukeyWindow();
adamstark@60:
129 
adamstark@60:
130  //=======================================================================
adamstark@60:
132  double princarg(double phaseVal);
adamstark@60:
133 
adamstark@60:
134 
adamstark@60:
135  double pi;
adamstark@60:
137  int frameSize;
adamstark@60:
138  int hopSize;
adamstark@60:
139  int onsetDetectionFunctionType;
adamstark@60:
141  fftw_plan p;
adamstark@60:
142  fftw_complex *complexIn;
adamstark@60:
143  fftw_complex *complexOut;
adamstark@60:
145  int initialised;
adamstark@60:
147  double *frame;
adamstark@60:
148  double *window;
adamstark@60:
150  double prevEnergySum;
adamstark@60:
152  double *magSpec;
adamstark@60:
153  double *prevMagSpec;
adamstark@60:
155  double *phase;
adamstark@60:
156  double *prevPhase;
adamstark@60:
157  double *prevPhase2;
adamstark@60:
159 };
adamstark@60:
160 
adamstark@60:
161 
adamstark@60:
162 #endif
adamstark@60:
adamstark@60: adamstark@60: adamstark@60: adamstark@60: