Mercurial > hg > svgui
comparison layer/SpectrogramLayer.cpp @ 860:4a5d144bd5d0 tonioni
Merge from default branch
author | Chris Cannam |
---|---|
date | Tue, 09 Sep 2014 16:36:21 +0100 |
parents | d7f6f60a8b30 |
children | 1986c9b0d9c3 0fe1f4407261 |
comparison
equal
deleted
inserted
replaced
842:8432d2551fb2 | 860:4a5d144bd5d0 |
---|---|
1443 | 1443 |
1444 for (int s = s0i; s <= s1i; ++s) { | 1444 for (int s = s0i; s <= s1i; ++s) { |
1445 | 1445 |
1446 if (!fft->isColumnAvailable(s)) continue; | 1446 if (!fft->isColumnAvailable(s)) continue; |
1447 | 1447 |
1448 float binfreq = (sr * q) / m_windowSize; | 1448 float binfreq = (float(sr) * q) / m_windowSize; |
1449 if (q == q0i) freqMin = binfreq; | 1449 if (q == q0i) freqMin = binfreq; |
1450 if (q == q1i) freqMax = binfreq; | 1450 if (q == q1i) freqMax = binfreq; |
1451 | 1451 |
1452 if (peaksOnly && !fft->isLocalPeak(s, q)) continue; | 1452 if (peaksOnly && !fft->isLocalPeak(s, q)) continue; |
1453 | 1453 |
2477 FFTModel *fft = getFFTModel(v); | 2477 FFTModel *fft = getFFTModel(v); |
2478 if (!fft) return false; | 2478 if (!fft) return false; |
2479 | 2479 |
2480 FFTModel::PeakSet peakfreqs; | 2480 FFTModel::PeakSet peakfreqs; |
2481 | 2481 |
2482 int px = -1, psx = -1; | 2482 int psx = -1; |
2483 | 2483 |
2484 #ifdef __GNUC__ | 2484 #ifdef __GNUC__ |
2485 float values[maxbin - minbin + 1]; | 2485 float values[maxbin - minbin + 1]; |
2486 #else | 2486 #else |
2487 float *values = (float *)alloca((maxbin - minbin + 1) * sizeof(float)); | 2487 float *values = (float *)alloca((maxbin - minbin + 1) * sizeof(float)); |
2498 if (sx0 < 0) continue; | 2498 if (sx0 < 0) continue; |
2499 if (sx1 <= sx0) sx1 = sx0 + 1; | 2499 if (sx1 <= sx0) sx1 = sx0 + 1; |
2500 | 2500 |
2501 for (int sx = sx0; sx < sx1; ++sx) { | 2501 for (int sx = sx0; sx < sx1; ++sx) { |
2502 | 2502 |
2503 if (x == px && sx == psx) continue; | |
2504 if (sx < 0 || sx >= int(fft->getWidth())) continue; | 2503 if (sx < 0 || sx >= int(fft->getWidth())) continue; |
2505 | 2504 |
2506 if (!m_synchronous) { | 2505 if (!m_synchronous) { |
2507 if (!fft->isColumnAvailable(sx)) { | 2506 if (!fft->isColumnAvailable(sx)) { |
2508 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2507 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2929 if (!m_model) return false; | 2928 if (!m_model) return false; |
2930 | 2929 |
2931 // SVDEBUG << "SpectrogramLayer::setDisplayExtents: " << min << "->" << max << endl; | 2930 // SVDEBUG << "SpectrogramLayer::setDisplayExtents: " << min << "->" << max << endl; |
2932 | 2931 |
2933 if (min < 0) min = 0; | 2932 if (min < 0) min = 0; |
2934 if (max > m_model->getSampleRate()/2) max = m_model->getSampleRate()/2; | 2933 if (max > m_model->getSampleRate()/2.f) max = m_model->getSampleRate()/2.f; |
2935 | 2934 |
2936 int minf = lrintf(min); | 2935 int minf = lrintf(min); |
2937 int maxf = lrintf(max); | 2936 int maxf = lrintf(max); |
2938 | 2937 |
2939 if (m_minFrequency == minf && m_maxFrequency == maxf) return true; | 2938 if (m_minFrequency == minf && m_maxFrequency == maxf) return true; |