comparison dsp/onsets/DetectionFunction.h @ 12:da277e8b5244

* Some fixes to peak picker * Add broadband energy rise detection function (same as the percussive onset detector in the Vamp example plugins)
author cannam
date Fri, 18 May 2007 16:43:17 +0000
parents c539af5259da
children f2b5c4251bf3
comparison
equal deleted inserted replaced
11:8837aaa2a0e6 12:da277e8b5244
18 18
19 #define DF_HFC (1) 19 #define DF_HFC (1)
20 #define DF_SPECDIFF (2) 20 #define DF_SPECDIFF (2)
21 #define DF_PHASEDEV (3) 21 #define DF_PHASEDEV (3)
22 #define DF_COMPLEXSD (4) 22 #define DF_COMPLEXSD (4)
23 #define DF_BROADBAND (5)
23 24
24 struct DFConfig{ 25 struct DFConfig{
25 double stepSecs; // DF step in seconds 26 double stepSecs; // DF step in seconds
26 unsigned int stepSize; // DF step in samples 27 unsigned int stepSize; // DF step in samples
27 unsigned int frameLength; // DF analysis window - usually 2*step 28 unsigned int frameLength; // DF analysis window - usually 2*step
28 int DFType; // type of detection function ( see defines ) 29 int DFType; // type of detection function ( see defines )
30 double dbRise; // only used for broadband df (and required for it)
29 }; 31 };
30 32
31 class DetectionFunction 33 class DetectionFunction
32 { 34 {
33 public: 35 public:
42 44
43 double HFC( unsigned int length, double* src); 45 double HFC( unsigned int length, double* src);
44 double specDiff( unsigned int length, double* src); 46 double specDiff( unsigned int length, double* src);
45 double phaseDev(unsigned int length, double *srcMagnitude, double *srcPhase); 47 double phaseDev(unsigned int length, double *srcMagnitude, double *srcPhase);
46 double complexSD(unsigned int length, double *srcMagnitude, double *srcPhase); 48 double complexSD(unsigned int length, double *srcMagnitude, double *srcPhase);
49 double broadband(unsigned int length, double *srcMagnitude, double *srcPhase);
47 50
48 private: 51 private:
49 void initialise( DFConfig Config ); 52 void initialise( DFConfig Config );
50 void deInitialise(); 53 void deInitialise();
51 54
52 int m_DFType; 55 int m_DFType;
53 unsigned int m_dataLength; 56 unsigned int m_dataLength;
54 unsigned int m_halfLength; 57 unsigned int m_halfLength;
58 double m_dbRise;
55 59
56 double* m_magHistory; 60 double* m_magHistory;
57 double* m_phaseHistory; 61 double* m_phaseHistory;
58 double* m_phaseHistoryOld; 62 double* m_phaseHistoryOld;
59 63