diff --git a/src/core/FxMixer.cpp b/src/core/FxMixer.cpp index 864364cf5..ba76a78c5 100644 --- a/src/core/FxMixer.cpp +++ b/src/core/FxMixer.cpp @@ -123,10 +123,17 @@ void FxMixer::processChannel( fx_ch_t _ch, sampleFrame * _buf ) { m_fxChannels[_ch]->m_fxChain.startRunning(); m_fxChannels[_ch]->m_stillRunning = m_fxChannels[_ch]->m_fxChain.processAudioBuffer( _buf, f ); - m_fxChannels[_ch]->m_peakLeft = engine::mixer()->peakValueLeft( _buf, f ) * - m_fxChannels[_ch]->m_volumeModel.value(); - m_fxChannels[_ch]->m_peakRight = engine::mixer()->peakValueRight( _buf, f ) * - m_fxChannels[_ch]->m_volumeModel.value(); + float peakLeft = engine::mixer()->peakValueLeft( _buf, f ) * m_fxChannels[_ch]->m_volumeModel.value(); + float peakRight = engine::mixer()->peakValueRight( _buf, f ) * m_fxChannels[_ch]->m_volumeModel.value(); + + if( peakLeft > m_fxChannels[_ch]->m_peakLeft ) + { + m_fxChannels[_ch]->m_peakLeft = peakLeft; + } + if( peakRight > m_fxChannels[_ch]->m_peakRight ) + { + m_fxChannels[_ch]->m_peakRight = peakRight; + } } m_fxChannels[_ch]->m_used = true; } diff --git a/src/gui/FxMixerView.cpp b/src/gui/FxMixerView.cpp index 8d1b124e0..02d5fb178 100644 --- a/src/gui/FxMixerView.cpp +++ b/src/gui/FxMixerView.cpp @@ -340,17 +340,18 @@ void FxMixerView::updateFaders() const float fall_off = 1.2; if( m->m_fxChannels[i]->m_peakLeft > opl ) { - m_fxChannelViews[i].m_fader->setPeak_L( - m->m_fxChannels[i]->m_peakLeft ); + m_fxChannelViews[i].m_fader->setPeak_L( m->m_fxChannels[i]->m_peakLeft ); + m->m_fxChannels[i]->m_peakLeft = 0; } else { m_fxChannelViews[i].m_fader->setPeak_L( opl/fall_off ); } + if( m->m_fxChannels[i]->m_peakRight > opr ) { - m_fxChannelViews[i].m_fader->setPeak_R( - m->m_fxChannels[i]->m_peakRight ); + m_fxChannelViews[i].m_fader->setPeak_R( m->m_fxChannels[i]->m_peakRight ); + m->m_fxChannels[i]->m_peakRight = 0; } else {