void Spectrograph::updateBars() { m_bars.fill(Bar()); FrequencySpectrum::const_iterator i = m_spectrum.begin(); const FrequencySpectrum::const_iterator end = m_spectrum.end(); for ( ; i != end; ++i) { const FrequencySpectrum::Element e = *i; if (e.frequency >= m_lowFreq && e.frequency < m_highFreq) { Bar &bar = m_bars[barIndex(e.frequency)]; bar.value = qMax(bar.value, e.amplitude); bar.clipped |= e.clipped; } } update(); }
//刷新频谱bar void Spectrograph::updateBars() { m_bars.fill(Bar()); //遍历频谱参数 for (FrequencySpectrum::const_iterator iter = m_spectrum.begin(); iter != m_spectrum.end(); ++iter) { const FrequencySpectrum::Element element = *iter; //如果进过快速傅里叶过的频谱参数大于等于频谱下界小于频谱上界则进行以下操作 if (element.frequency >= m_lowFreq && element.frequency < m_highFreq) { Bar &bar = m_bars[barIndex(element.frequency)]; bar.value = qMax(bar.value, element.amplitude); //频谱bar振幅范围 bar.clipped |= element.clipped; } } update(); }
void Engine::updateBars() { m_barData.clear(); FrequencySpectrum::const_iterator i = m_spectrum.begin(); const FrequencySpectrum::const_iterator end = m_spectrum.end(); for ( ; i != end; ++i) { // qDebug() << "Engine::updateBars:"; const FrequencySpectrum::Element e = *i; if (e.frequency >= SpectrumLowFreq && e.frequency < SpectrumHighFreq) { int index = barIndex(e.frequency); int value = (int) (e.amplitude * 450); // m_bar[index] = qMax(m_bar.at(index), value); m_bar[index] = value; } } for(int i=0; i<SpectrumNumBands; i++){ m_barData.append(m_bar[i]); // qDebug() << "Engine::updateBars m_barData:" << m_barData.at(i); } emit barDataChanged(m_barData); }