MCPcopy Create free account
hub / github.com/audacity/audacity / GetProcessedValue

Method GetProcessedValue

libraries/lib-fft/SpectrumAnalyst.cpp:287–334  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

285}
286
287float SpectrumAnalyst::GetProcessedValue(float freq0, float freq1) const
288{
289 float bin0, bin1, binwidth;
290
291 if (mAlg == Spectrum) {
292 bin0 = freq0 * mWindowSize / mRate;
293 bin1 = freq1 * mWindowSize / mRate;
294 } else {
295 bin0 = freq0 * mRate;
296 bin1 = freq1 * mRate;
297 }
298 binwidth = bin1 - bin0;
299
300 float value = float(0.0);
301
302 if (binwidth < 1.0) {
303 float binmid = (bin0 + bin1) / 2.0;
304 int ibin = (int)(binmid) - 1;
305 if (ibin < 1)
306 ibin = 1;
307 if (ibin >= GetProcessedSize() - 3)
308 ibin = std::max(0, GetProcessedSize() - 4);
309
310 value = CubicInterpolate(mProcessed[ibin],
311 mProcessed[ibin + 1],
312 mProcessed[ibin + 2],
313 mProcessed[ibin + 3], binmid - ibin);
314
315 } else {
316 if (bin0 < 0)
317 bin0 = 0;
318 if (bin1 >= GetProcessedSize())
319 bin1 = GetProcessedSize() - 1;
320
321 if ((int)(bin1) > (int)(bin0))
322 value += mProcessed[(int)(bin0)] * ((int)(bin0) + 1 - bin0);
323 bin0 = 1 + (int)(bin0);
324 while (bin0 < (int)(bin1)) {
325 value += mProcessed[(int)(bin0)];
326 bin0 += 1.0;
327 }
328 value += mProcessed[(int)(bin1)] * (bin1 - (int)(bin1));
329
330 value /= binwidth;
331 }
332
333 return value;
334}
335
336float SpectrumAnalyst::FindPeak(float xPos, float *pY) const
337{

Callers 2

DrawPlotMethod · 0.80
PlotPaintMethod · 0.80

Calls 1

maxFunction · 0.85

Tested by

no test coverage detected