comparison dsp/onsets/DetectionFunction.cpp @ 499:af5b7ef02aa7

Style fixes: avoid unsigned, fix formatting
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 03 Jun 2019 14:20:39 +0100
parents fdaa63607c15
children
comparison
equal deleted inserted replaced
498:8b92623e81c9 499:af5b7ef02aa7
18 18
19 ////////////////////////////////////////////////////////////////////// 19 //////////////////////////////////////////////////////////////////////
20 // Construction/Destruction 20 // Construction/Destruction
21 ////////////////////////////////////////////////////////////////////// 21 //////////////////////////////////////////////////////////////////////
22 22
23 DetectionFunction::DetectionFunction( DFConfig Config ) : 23 DetectionFunction::DetectionFunction( DFConfig config ) :
24 m_window(0) 24 m_window(0)
25 { 25 {
26 m_magHistory = NULL; 26 m_magHistory = NULL;
27 m_phaseHistory = NULL; 27 m_phaseHistory = NULL;
28 m_phaseHistoryOld = NULL; 28 m_phaseHistoryOld = NULL;
29 m_magPeaks = NULL; 29 m_magPeaks = NULL;
30 30
31 initialise( Config ); 31 initialise( config );
32 } 32 }
33 33
34 DetectionFunction::~DetectionFunction() 34 DetectionFunction::~DetectionFunction()
35 { 35 {
36 deInitialise(); 36 deInitialise();
114 return runDF(); 114 return runDF();
115 } 115 }
116 116
117 void DetectionFunction::whiten() 117 void DetectionFunction::whiten()
118 { 118 {
119 for (unsigned int i = 0; i < m_halfLength; ++i) { 119 for (int i = 0; i < m_halfLength; ++i) {
120 double m = m_magnitude[i]; 120 double m = m_magnitude[i];
121 if (m < m_magPeaks[i]) { 121 if (m < m_magPeaks[i]) {
122 m = m + (m_magPeaks[i] - m) * m_whitenRelaxCoeff; 122 m = m + (m_magPeaks[i] - m) * m_whitenRelaxCoeff;
123 } 123 }
124 if (m < m_whitenFloor) m = m_whitenFloor; 124 if (m < m_whitenFloor) m = m_whitenFloor;
159 } 159 }
160 160
161 return retVal; 161 return retVal;
162 } 162 }
163 163
164 double DetectionFunction::HFC(unsigned int length, double *src) 164 double DetectionFunction::HFC(int length, double *src)
165 { 165 {
166 unsigned int i; 166 double val = 0;
167 double val = 0; 167 for (int i = 0; i < length; i++) {
168
169 for( i = 0; i < length; i++) {
170 val += src[ i ] * ( i + 1); 168 val += src[ i ] * ( i + 1);
171 } 169 }
172 return val; 170 return val;
173 } 171 }
174 172
175 double DetectionFunction::specDiff(unsigned int length, double *src) 173 double DetectionFunction::specDiff(int length, double *src)
176 { 174 {
177 unsigned int i;
178 double val = 0.0; 175 double val = 0.0;
179 double temp = 0.0; 176 double temp = 0.0;
180 double diff = 0.0; 177 double diff = 0.0;
181 178
182 for( i = 0; i < length; i++) { 179 for (int i = 0; i < length; i++) {
183 180
184 temp = fabs( (src[ i ] * src[ i ]) - (m_magHistory[ i ] * m_magHistory[ i ]) ); 181 temp = fabs( (src[ i ] * src[ i ]) - (m_magHistory[ i ] * m_magHistory[ i ]) );
185 182
186 diff= sqrt(temp); 183 diff= sqrt(temp);
187 184
194 191
195 return val; 192 return val;
196 } 193 }
197 194
198 195
199 double DetectionFunction::phaseDev(unsigned int length, double *srcPhase) 196 double DetectionFunction::phaseDev(int length, double *srcPhase)
200 { 197 {
201 unsigned int i;
202 double tmpPhase = 0; 198 double tmpPhase = 0;
203 double tmpVal = 0; 199 double tmpVal = 0;
204 double val = 0; 200 double val = 0;
205 201
206 double dev = 0; 202 double dev = 0;
207 203
208 for( i = 0; i < length; i++) { 204 for (int i = 0; i < length; i++) {
209 tmpPhase = (srcPhase[ i ]- 2*m_phaseHistory[ i ]+m_phaseHistoryOld[ i ]); 205 tmpPhase = (srcPhase[ i ]- 2*m_phaseHistory[ i ]+m_phaseHistoryOld[ i ]);
210 dev = MathUtilities::princarg( tmpPhase ); 206 dev = MathUtilities::princarg( tmpPhase );
211 207
212 // A previous version of this code only counted the value here 208 // A previous version of this code only counted the value here
213 // if the magnitude exceeded 0.1. My impression is that 209 // if the magnitude exceeded 0.1. My impression is that
226 222
227 return val; 223 return val;
228 } 224 }
229 225
230 226
231 double DetectionFunction::complexSD(unsigned int length, double *srcMagnitude, double *srcPhase) 227 double DetectionFunction::complexSD(int length, double *srcMagnitude, double *srcPhase)
232 { 228 {
233 unsigned int i;
234 double val = 0; 229 double val = 0;
235 double tmpPhase = 0; 230 double tmpPhase = 0;
236 double tmpReal = 0; 231 double tmpReal = 0;
237 double tmpImag = 0; 232 double tmpImag = 0;
238 233
239 double dev = 0; 234 double dev = 0;
240 ComplexData meas = ComplexData( 0, 0 ); 235 ComplexData meas = ComplexData( 0, 0 );
241 ComplexData j = ComplexData( 0, 1 ); 236 ComplexData j = ComplexData( 0, 1 );
242 237
243 for( i = 0; i < length; i++) { 238 for (int i = 0; i < length; i++) {
244 239
245 tmpPhase = (srcPhase[ i ]- 2*m_phaseHistory[ i ]+m_phaseHistoryOld[ i ]); 240 tmpPhase = (srcPhase[ i ]- 2*m_phaseHistory[ i ]+m_phaseHistoryOld[ i ]);
246 dev= MathUtilities::princarg( tmpPhase ); 241 dev= MathUtilities::princarg( tmpPhase );
247 242
248 meas = m_magHistory[i] - ( srcMagnitude[ i ] * exp( j * dev) ); 243 meas = m_magHistory[i] - ( srcMagnitude[ i ] * exp( j * dev) );
258 } 253 }
259 254
260 return val; 255 return val;
261 } 256 }
262 257
263 double DetectionFunction::broadband(unsigned int length, double *src) 258 double DetectionFunction::broadband(int length, double *src)
264 { 259 {
265 double val = 0; 260 double val = 0;
266 for (unsigned int i = 0; i < length; ++i) { 261 for (int i = 0; i < length; ++i) {
267 double sqrmag = src[i] * src[i]; 262 double sqrmag = src[i] * src[i];
268 if (m_magHistory[i] > 0.0) { 263 if (m_magHistory[i] > 0.0) {
269 double diff = 10.0 * log10(sqrmag / m_magHistory[i]); 264 double diff = 10.0 * log10(sqrmag / m_magHistory[i]);
270 if (diff > m_dbRise) val = val + 1; 265 if (diff > m_dbRise) val = val + 1;
271 } 266 }