diff --git a/ChangeLog b/ChangeLog index c949b0202..8989de0ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,10 @@ - shade volume bars according to volume - fixed drawing of background while scrolling + * plugins/stereo_matrix/stereo_matrix.cpp: + Made wet/dry knob do something. Acts as a nice panning knob when the + matrix has the channels swapped. + 2008-04-20 Tobias Doerffel * src/gui/widgets/group_box.cpp: diff --git a/plugins/stereo_matrix/stereo_matrix.cpp b/plugins/stereo_matrix/stereo_matrix.cpp index 37e53bc77..7572f06b9 100644 --- a/plugins/stereo_matrix/stereo_matrix.cpp +++ b/plugins/stereo_matrix/stereo_matrix.cpp @@ -81,13 +81,24 @@ bool stereoMatrixEffect::processAudioBuffer( sampleFrame * _buf, for( fpp_t f = 0; f < _frames; ++f ) { + const float d = getDryLevel(); + const float w = getWetLevel(); + sample_t l = _buf[f][0]; sample_t r = _buf[f][1]; - _buf[f][0] = m_smControls.m_llModel.value( f ) * l + - m_smControls.m_rlModel.value( f ) * r; - _buf[f][1] = m_smControls.m_lrModel.value( f ) * l + - m_smControls.m_rrModel.value( f ) * r; + // Init with dry-mix + _buf[f][0] = l * d; + _buf[f][1] = r * d; + + // Add it wet + _buf[f][0] += ( m_smControls.m_llModel.value( f ) * l + + m_smControls.m_rlModel.value( f ) * r ) * w; + + _buf[f][1] += ( m_smControls.m_lrModel.value( f ) * l + + m_smControls.m_rrModel.value( f ) * r ) * w; + + } return( isRunning() );