comparison dsp/onsets/DetectionFunction.cpp @ 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
107 break; 107 break;
108 108
109 case DF_COMPLEXSD: 109 case DF_COMPLEXSD:
110 retVal = complexSD( m_halfLength, m_magnitude, m_thetaAngle); 110 retVal = complexSD( m_halfLength, m_magnitude, m_thetaAngle);
111 break; 111 break;
112
113 case DF_BROADBAND:
114 retVal = broadband( m_halfLength, m_magnitude, m_thetaAngle);
112 } 115 }
113 116
114 return retVal; 117 return retVal;
115 } 118 }
116 119
210 } 213 }
211 214
212 return val; 215 return val;
213 } 216 }
214 217
218 double DetectionFunction::broadband(unsigned int length, double *srcMagnitude, double *srcPhase)
219 {
220 double val = 0;
221 for (unsigned int i = 0; i < length; ++i) {
222 double sqrmag = srcMagnitude[i] * srcMagnitude[i];
223 if (m_magHistory[i] > 0.0) {
224 double diff = 10.0 * log10(sqrmag / m_magHistory[i]);
225 if (diff > m_dbRise) val = val + 1;
226 }
227 m_magHistory[i] = sqrmag;
228 }
229 return val;
230 }
231
215 double* DetectionFunction::getSpectrumMagnitude() 232 double* DetectionFunction::getSpectrumMagnitude()
216 { 233 {
217 return m_magnitude; 234 return m_magnitude;
218 } 235 }
219 236