From aff3c10d70220117c1425511fc2006282d301c9a Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:42:20 -0600 Subject: [PATCH 01/20] Update Amplifier.cpp --- plugins/Amplifier/Amplifier.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/Amplifier/Amplifier.cpp b/plugins/Amplifier/Amplifier.cpp index d90ea55b329..a2880bc445e 100644 --- a/plugins/Amplifier/Amplifier.cpp +++ b/plugins/Amplifier/Amplifier.cpp @@ -72,8 +72,8 @@ bool AmplifierEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames ) } double outSum = 0.0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; const ValueBuffer * volBuf = m_ampControls.m_volumeModel.valueBuffer(); const ValueBuffer * panBuf = m_ampControls.m_panModel.valueBuffer(); @@ -121,8 +121,8 @@ bool AmplifierEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames ) s[0] *= left1 * left2 * 0.01; s[1] *= right1 * right2 * 0.01; - buf[f][0] = d * buf[f][0] + w * s[0]; - buf[f][1] = d * buf[f][1] + w * s[1]; + buf[f][0] = d[0] * buf[f][0] + w[0] * s[0]; + buf[f][1] = d[1] * buf[f][1] + w[1] * s[1]; } checkGate( outSum / frames ); From 7a0ebf2895919dde59b9f1072d2110765c126e8b Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:42:56 -0600 Subject: [PATCH 02/20] Update BassBooster.cpp --- plugins/BassBooster/BassBooster.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/BassBooster/BassBooster.cpp b/plugins/BassBooster/BassBooster.cpp index 6fdb1671c66..a30404583ab 100644 --- a/plugins/BassBooster/BassBooster.cpp +++ b/plugins/BassBooster/BassBooster.cpp @@ -87,8 +87,8 @@ bool BassBoosterEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames const ValueBuffer *gainBuffer = m_bbControls.m_gainModel.valueBuffer(); double outSum = 0.0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; for( fpp_t f = 0; f < frames; ++f ) { @@ -105,8 +105,8 @@ bool BassBoosterEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames sample_t s[2] = { buf[f][0], buf[f][1] }; m_bbFX.nextSample( s[0], s[1] ); - buf[f][0] = d * buf[f][0] + w * s[0]; - buf[f][1] = d * buf[f][1] + w * s[1]; + buf[f][0] = d[0] * buf[f][0] + w[0] * s[0]; + buf[f][1] = d[1] * buf[f][1] + w[1] * s[1]; } checkGate( outSum / frames ); From 938e9eeb02b5d2a26d340492326d8eae8461cb58 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:43:49 -0600 Subject: [PATCH 03/20] Update Bitcrush.cpp --- plugins/Bitcrush/Bitcrush.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/Bitcrush/Bitcrush.cpp b/plugins/Bitcrush/Bitcrush.cpp index 0580d47cd5e..fa39fd8fd7b 100644 --- a/plugins/Bitcrush/Bitcrush.cpp +++ b/plugins/Bitcrush/Bitcrush.cpp @@ -219,8 +219,8 @@ bool BitcrushEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames ) // now downsample and write it back to main buffer double outSum = 0.0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; for( int f = 0; f < frames; ++f ) { float lsum = 0.0f; @@ -230,8 +230,8 @@ bool BitcrushEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames ) lsum += m_buffer[f * OS_RATE + o][0] * OS_RESAMPLE[o]; rsum += m_buffer[f * OS_RATE + o][1] * OS_RESAMPLE[o]; } - buf[f][0] = d * buf[f][0] + w * qBound( -m_outClip, lsum, m_outClip ) * m_outGain; - buf[f][1] = d * buf[f][1] + w * qBound( -m_outClip, rsum, m_outClip ) * m_outGain; + buf[f][0] = d[0] * buf[f][0] + w[0] * qBound( -m_outClip, lsum, m_outClip ) * m_outGain; + buf[f][1] = d[1] * buf[f][1] + w[1] * qBound( -m_outClip, rsum, m_outClip ) * m_outGain; outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; } From b94d2f313f58729cf166ee7e0d21d9758759564e Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:44:22 -0600 Subject: [PATCH 04/20] Update CrossoverEQ.cpp --- plugins/CrossoverEQ/CrossoverEQ.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/CrossoverEQ/CrossoverEQ.cpp b/plugins/CrossoverEQ/CrossoverEQ.cpp index e7d3dce7d34..ecb1f6b7107 100644 --- a/plugins/CrossoverEQ/CrossoverEQ.cpp +++ b/plugins/CrossoverEQ/CrossoverEQ.cpp @@ -186,14 +186,14 @@ bool CrossoverEQEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames } } - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; double outSum = 0.0; for( int f = 0; f < frames; ++f ) { outSum = buf[f][0] * buf[f][0] + buf[f][1] * buf[f][1]; - buf[f][0] = d * buf[f][0] + w * m_work[f][0]; - buf[f][1] = d * buf[f][1] + w * m_work[f][1]; + buf[f][0] = d[0] * buf[f][0] + w[0] * m_work[f][0]; + buf[f][1] = d[1] * buf[f][1] + w[1] * m_work[f][1]; } checkGate( outSum ); From ba5e3a9ceed574f9646eeacbe09248549952ce50 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:45:04 -0600 Subject: [PATCH 05/20] Update DelayEffect.cpp --- plugins/Delay/DelayEffect.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/Delay/DelayEffect.cpp b/plugins/Delay/DelayEffect.cpp index 0daad0d9d8c..ad9dbbe06a8 100644 --- a/plugins/Delay/DelayEffect.cpp +++ b/plugins/Delay/DelayEffect.cpp @@ -83,8 +83,8 @@ bool DelayEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames ) } double outSum = 0.0; const float sr = Engine::mixer()->processingSampleRate(); - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; sample_t dryS[2]; float lPeak = 0.0; float rPeak = 0.0; @@ -128,8 +128,8 @@ bool DelayEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames ) lPeak = buf[f][0] > lPeak ? buf[f][0] : lPeak; rPeak = buf[f][1] > rPeak ? buf[f][1] : rPeak; - buf[f][0] = ( d * dryS[0] ) + ( w * buf[f][0] ); - buf[f][1] = ( d * dryS[1] ) + ( w * buf[f][1] ); + buf[f][0] = ( d[0] * dryS[0] ) + ( w[0] * buf[f][0] ); + buf[f][1] = ( d[1] * dryS[1] ) + ( w[1] * buf[f][1] ); outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; lengthPtr += lengthInc; From 0280ee5beb1637a124a16db977ca8303ff8e420f Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:45:45 -0600 Subject: [PATCH 06/20] Update DualFilter.cpp --- plugins/DualFilter/DualFilter.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/DualFilter/DualFilter.cpp b/plugins/DualFilter/DualFilter.cpp index 5b8b7a622c1..58ca1d4f739 100644 --- a/plugins/DualFilter/DualFilter.cpp +++ b/plugins/DualFilter/DualFilter.cpp @@ -81,8 +81,8 @@ bool DualFilterEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames } double outSum = 0.0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; if( m_dfControls.m_filter1Model.isValueChanged() || m_filter1changed ) { @@ -196,8 +196,8 @@ bool DualFilterEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; // do another mix with dry signal - buf[f][0] = d * buf[f][0] + w * s[0]; - buf[f][1] = d * buf[f][1] + w * s[1]; + buf[f][0] = d[0] * buf[f][0] + w[0] * s[0]; + buf[f][1] = d[1] * buf[f][1] + w[1] * s[1]; //increment pointers cut1Ptr += cut1Inc; From 236e1c540dbb58dd54cd77fe49569cefde436724 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:46:28 -0600 Subject: [PATCH 07/20] Update EqEffect.cpp --- plugins/Eq/EqEffect.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/Eq/EqEffect.cpp b/plugins/Eq/EqEffect.cpp index 6b7c61bcc49..ad91a3091a4 100644 --- a/plugins/Eq/EqEffect.cpp +++ b/plugins/Eq/EqEffect.cpp @@ -74,8 +74,8 @@ bool EqEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames ) const int sampleRate = Engine::mixer()->processingSampleRate(); //wet/dry controls - const float dry = dryLevel(); - const float wet = wetLevel(); + const float dry [2] = {dryLevelL(),dryLevelR()}; + const float wet [2] = {wetLevelL(),wetLevelR()}; sample_t dryS[2]; // setup sample exact controls float hpRes = m_eqControls.m_hpResModel.value(); @@ -262,8 +262,8 @@ bool EqEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames ) } //apply wet / dry levels - buf[f][1] = ( dry * dryS[1] ) + ( wet * buf[f][1] ); - buf[f][0] = ( dry * dryS[0] ) + ( wet * buf[f][0] ); + buf[f][1] = ( dry[1] * dryS[1] ) + ( wet[1] * buf[f][1] ); + buf[f][0] = ( dry[0] * dryS[0] ) + ( wet[0] * buf[f][0] ); } From f15c2ed9ab0711b16fc8e4c91f63b2a248ef68bb Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:47:06 -0600 Subject: [PATCH 08/20] Update FlangerEffect.cpp --- plugins/Flanger/FlangerEffect.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/Flanger/FlangerEffect.cpp b/plugins/Flanger/FlangerEffect.cpp index 7e441cf62a3..e05ce61fff3 100644 --- a/plugins/Flanger/FlangerEffect.cpp +++ b/plugins/Flanger/FlangerEffect.cpp @@ -90,8 +90,8 @@ bool FlangerEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames ) return( false ); } double outSum = 0.0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; const float length = m_flangerControls.m_delayTimeModel.value() * Engine::mixer()->processingSampleRate(); const float noise = m_flangerControls.m_whiteNoiseAmountModel.value(); float amplitude = m_flangerControls.m_lfoAmountModel.value() * Engine::mixer()->processingSampleRate(); @@ -121,8 +121,8 @@ bool FlangerEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames ) m_rDelay->tick( &buf[f][1] ); } - buf[f][0] = ( d * dryS[0] ) + ( w * buf[f][0] ); - buf[f][1] = ( d * dryS[1] ) + ( w * buf[f][1] ); + buf[f][0] = ( d[0] * dryS[0] ) + ( w[0] * buf[f][0] ); + buf[f][1] = ( d[1] * dryS[1] ) + ( w[1] * buf[f][1] ); outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; } checkGate( outSum / frames ); From a799d875cddaab3ec3c8e812a2812ea661bb41ac Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:48:14 -0600 Subject: [PATCH 09/20] Update LadspaEffect.cpp --- plugins/LadspaEffect/LadspaEffect.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/LadspaEffect/LadspaEffect.cpp b/plugins/LadspaEffect/LadspaEffect.cpp index d7e66bf47aa..d9a8ad3ad4a 100644 --- a/plugins/LadspaEffect/LadspaEffect.cpp +++ b/plugins/LadspaEffect/LadspaEffect.cpp @@ -223,8 +223,8 @@ bool LadspaEffect::processAudioBuffer( sampleFrame * _buf, // Copy the LADSPA output buffers to the LMMS buffer. double out_sum = 0.0; channel = 0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; for( ch_cnt_t proc = 0; proc < processorCount(); ++proc ) { for( int port = 0; port < m_portCount; ++port ) @@ -240,7 +240,7 @@ bool LadspaEffect::processAudioBuffer( sampleFrame * _buf, for( fpp_t frame = 0; frame < frames; ++frame ) { - _buf[frame][channel] = d * _buf[frame][channel] + w * pp->buffer[frame]; + _buf[frame][channel] = d[channel] * _buf[frame][channel] + w[channel] * pp->buffer[frame]; out_sum += _buf[frame][channel] * _buf[frame][channel]; } ++channel; From cebfa2e5bcfa61c276aa9e57c2b005629178d89e Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:48:49 -0600 Subject: [PATCH 10/20] Update MultitapEcho.cpp --- plugins/MultitapEcho/MultitapEcho.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/MultitapEcho/MultitapEcho.cpp b/plugins/MultitapEcho/MultitapEcho.cpp index bff032deed9..9920b45de1e 100644 --- a/plugins/MultitapEcho/MultitapEcho.cpp +++ b/plugins/MultitapEcho/MultitapEcho.cpp @@ -97,8 +97,8 @@ bool MultitapEchoEffect::processAudioBuffer( sampleFrame * buf, const fpp_t fram } double outSum = 0.0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; // get processing vars const int steps = m_controls.m_steps.value(); @@ -149,8 +149,8 @@ bool MultitapEchoEffect::processAudioBuffer( sampleFrame * buf, const fpp_t fram for( int f = 0; f < frames; ++f ) { - buf[f][0] = d * buf[f][0] + w * m_work[f][0]; - buf[f][1] = d * buf[f][1] + w * m_work[f][1]; + buf[f][0] = d[0] * buf[f][0] + w[0] * m_work[f][0]; + buf[f][1] = d[1] * buf[f][1] + w[1] * m_work[f][1]; outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; } From f97e5ef14036b05832eac1972dc1a2d6f02d5ac9 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:49:30 -0600 Subject: [PATCH 11/20] Update ReverbSC.cpp --- plugins/ReverbSC/ReverbSC.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/ReverbSC/ReverbSC.cpp b/plugins/ReverbSC/ReverbSC.cpp index 3d56fd0d0ae..785cf1a08b0 100644 --- a/plugins/ReverbSC/ReverbSC.cpp +++ b/plugins/ReverbSC/ReverbSC.cpp @@ -79,8 +79,8 @@ bool ReverbSCEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames ) } double outSum = 0.0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; SPFLOAT tmpL, tmpR; SPFLOAT dcblkL, dcblkR; @@ -115,8 +115,8 @@ bool ReverbSCEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames ) sp_revsc_compute(sp, revsc, &s[0], &s[1], &tmpL, &tmpR); sp_dcblock_compute(sp, dcblk[0], &tmpL, &dcblkL); sp_dcblock_compute(sp, dcblk[1], &tmpR, &dcblkR); - buf[f][0] = d * buf[f][0] + w * dcblkL * outGain; - buf[f][1] = d * buf[f][1] + w * dcblkR * outGain; + buf[f][0] = d[0] * buf[f][0] + w[0] * dcblkL * outGain; + buf[f][1] = d[1] * buf[f][1] + w[1] * dcblkR * outGain; outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; } From 597907fd37ef18d07fb46e4c4dfa45841f73ea01 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:50:26 -0600 Subject: [PATCH 12/20] Update VstEffect.cpp --- plugins/VstEffect/VstEffect.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/VstEffect/VstEffect.cpp b/plugins/VstEffect/VstEffect.cpp index 2d23086753c..c97e5a3e02d 100644 --- a/plugins/VstEffect/VstEffect.cpp +++ b/plugins/VstEffect/VstEffect.cpp @@ -88,7 +88,8 @@ bool VstEffect::processAudioBuffer( sampleFrame * _buf, const fpp_t _frames ) if( m_plugin ) { - const float d = dryLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; #ifdef __GNUC__ sampleFrame buf[_frames]; #else @@ -102,11 +103,10 @@ bool VstEffect::processAudioBuffer( sampleFrame * _buf, const fpp_t _frames ) } double out_sum = 0.0; - const float w = wetLevel(); for( fpp_t f = 0; f < _frames; ++f ) { - _buf[f][0] = w*buf[f][0] + d*_buf[f][0]; - _buf[f][1] = w*buf[f][1] + d*_buf[f][1]; + _buf[f][0] = w[0]*buf[f][0] + d[0]*_buf[f][0]; + _buf[f][1] = w[1]*buf[f][1] + d[1]*_buf[f][1]; } for( fpp_t f = 0; f < _frames; ++f ) { From a20e119b263e6d87fe0844dfee7fdfe7a7ccbf28 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:51:17 -0600 Subject: [PATCH 13/20] Update dynamics_processor.cpp --- plugins/dynamics_processor/dynamics_processor.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/dynamics_processor/dynamics_processor.cpp b/plugins/dynamics_processor/dynamics_processor.cpp index 8c02b827da4..4b302a08158 100644 --- a/plugins/dynamics_processor/dynamics_processor.cpp +++ b/plugins/dynamics_processor/dynamics_processor.cpp @@ -104,8 +104,8 @@ bool dynProcEffect::processAudioBuffer( sampleFrame * _buf, float gain; double out_sum = 0.0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; const int stereoMode = m_dpControls.m_stereomodeModel.value(); const float inputGain = m_dpControls.m_inputModel.value(); @@ -217,8 +217,8 @@ bool dynProcEffect::processAudioBuffer( sampleFrame * _buf, out_sum += _buf[f][0]*_buf[f][0] + _buf[f][1]*_buf[f][1]; // mix wet/dry signals - _buf[f][0] = d * _buf[f][0] + w * s[0]; - _buf[f][1] = d * _buf[f][1] + w * s[1]; + _buf[f][0] = d[0] * _buf[f][0] + w[0] * s[0]; + _buf[f][1] = d[1] * _buf[f][1] + w[1] * s[1]; } checkGate( out_sum / _frames ); From de3661eb64de1829ab764beb4b876243b7fef64f Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:51:57 -0600 Subject: [PATCH 14/20] Update stereo_enhancer.cpp --- plugins/stereo_enhancer/stereo_enhancer.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/stereo_enhancer/stereo_enhancer.cpp b/plugins/stereo_enhancer/stereo_enhancer.cpp index 2faa5846d2f..c6a4ed5d59a 100644 --- a/plugins/stereo_enhancer/stereo_enhancer.cpp +++ b/plugins/stereo_enhancer/stereo_enhancer.cpp @@ -95,8 +95,8 @@ bool stereoEnhancerEffect::processAudioBuffer( sampleFrame * _buf, return( false ); } - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; for( fpp_t f = 0; f < _frames; ++f ) { @@ -122,8 +122,8 @@ bool stereoEnhancerEffect::processAudioBuffer( sampleFrame * _buf, m_seFX.nextSample( s[0], s[1] ); - _buf[f][0] = d * _buf[f][0] + w * s[0]; - _buf[f][1] = d * _buf[f][1] + w * s[1]; + _buf[f][0] = d[0] * _buf[f][0] + w[0] * s[0]; + _buf[f][1] = d[1] * _buf[f][1] + w[1] * s[1]; out_sum += _buf[f][0]*_buf[f][0] + _buf[f][1]*_buf[f][1]; // Update currFrame From 414d558bcccd40c57509510c975d2b51e1dd6316 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:52:51 -0600 Subject: [PATCH 15/20] Update stereo_matrix.cpp --- plugins/stereo_matrix/stereo_matrix.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/stereo_matrix/stereo_matrix.cpp b/plugins/stereo_matrix/stereo_matrix.cpp index a03a615ba37..8a647eae9a7 100644 --- a/plugins/stereo_matrix/stereo_matrix.cpp +++ b/plugins/stereo_matrix/stereo_matrix.cpp @@ -81,22 +81,22 @@ bool stereoMatrixEffect::processAudioBuffer( sampleFrame * _buf, for( fpp_t f = 0; f < _frames; ++f ) { - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; sample_t l = _buf[f][0]; sample_t r = _buf[f][1]; // Init with dry-mix - _buf[f][0] = l * d; - _buf[f][1] = r * d; + _buf[f][0] = l * d[0]; + _buf[f][1] = r * d[1]; // Add it wet _buf[f][0] += ( m_smControls.m_llModel.value( f ) * l + - m_smControls.m_rlModel.value( f ) * r ) * w; + m_smControls.m_rlModel.value( f ) * r ) * w[0]; _buf[f][1] += ( m_smControls.m_lrModel.value( f ) * l + - m_smControls.m_rrModel.value( f ) * r ) * w; + m_smControls.m_rrModel.value( f ) * r ) * w[1]; out_sum += _buf[f][0]*_buf[f][0] + _buf[f][1]*_buf[f][1]; } From dc9b86a5c53616e2be2b828fc3cf78ca74d515d4 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:54:08 -0600 Subject: [PATCH 16/20] Update waveshaper.cpp --- plugins/waveshaper/waveshaper.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/waveshaper/waveshaper.cpp b/plugins/waveshaper/waveshaper.cpp index 3f9d3e19fba..98e0f933f44 100644 --- a/plugins/waveshaper/waveshaper.cpp +++ b/plugins/waveshaper/waveshaper.cpp @@ -81,8 +81,8 @@ bool waveShaperEffect::processAudioBuffer( sampleFrame * _buf, int i = 0; double out_sum = 0.0; - const float d = dryLevel(); - const float w = wetLevel(); + const float d [2] = {dryLevelL(),dryLevelR()}; + const float w [2] = {wetLevelL(),wetLevelR()}; float input = m_wsControls.m_inputModel.value(); float output = m_wsControls.m_outputModel.value(); const float * samples = m_wsControls.m_wavegraphModel.samples(); @@ -142,8 +142,8 @@ bool waveShaperEffect::processAudioBuffer( sampleFrame * _buf, out_sum += _buf[f][0]*_buf[f][0] + _buf[f][1]*_buf[f][1]; // mix wet/dry signals - _buf[f][0] = d * _buf[f][0] + w * s[0]; - _buf[f][1] = d * _buf[f][1] + w * s[1]; + _buf[f][0] = d[0] * _buf[f][0] + w[0] * s[0]; + _buf[f][1] = d[1] * _buf[f][1] + w[1] * s[1]; outputPtr += outputInc; inputPtr += inputInc; From 45893a37e970e22387ec298310f764d92f92e5c8 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 09:58:42 -0600 Subject: [PATCH 17/20] Update Effect.cpp --- src/core/Effect.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/Effect.cpp b/src/core/Effect.cpp index 8cdcc9c600a..c9e5440327e 100644 --- a/src/core/Effect.cpp +++ b/src/core/Effect.cpp @@ -46,6 +46,7 @@ Effect::Effect( const Plugin::Descriptor * _desc, m_bufferCount( 0 ), m_enabledModel( true, this, tr( "Effect enabled" ) ), m_wetDryModel( 1.0f, -1.0f, 1.0f, 0.01f, this, tr( "Wet/Dry mix" ) ), + m_panModel( 0.0f, -100.0f, 100.0f, 0.01f, this, tr( "Panning" ) ), m_gateModel( 0.0f, 0.0f, 1.0f, 0.01f, this, tr( "Gate" ) ), m_autoQuitModel( 1.0f, 1.0f, 8000.0f, 100.0f, 1.0f, this, tr( "Decay" ) ), m_autoQuitDisabled( false ) @@ -80,6 +81,7 @@ void Effect::saveSettings( QDomDocument & _doc, QDomElement & _this ) { m_enabledModel.saveSettings( _doc, _this, "on" ); m_wetDryModel.saveSettings( _doc, _this, "wet" ); + m_panModel.saveSettings( _doc, _this, "panning" ); m_autoQuitModel.saveSettings( _doc, _this, "autoquit" ); m_gateModel.saveSettings( _doc, _this, "gate" ); controls()->saveState( _doc, _this ); @@ -92,6 +94,7 @@ void Effect::loadSettings( const QDomElement & _this ) { m_enabledModel.loadSettings( _this, "on" ); m_wetDryModel.loadSettings( _this, "wet" ); + m_panModel.loadSettings( _this, "panning" ); m_autoQuitModel.loadSettings( _this, "autoquit" ); m_gateModel.loadSettings( _this, "gate" ); From 6520a06a56c33febe3e2617f45151e417f019e9e Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 10:02:01 -0600 Subject: [PATCH 18/20] Update Effect.h --- include/Effect.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/include/Effect.h b/include/Effect.h index d6aa04d9710..c995d364b2d 100644 --- a/include/Effect.h +++ b/include/Effect.h @@ -117,6 +117,27 @@ class LMMS_EXPORT Effect : public Plugin return 1.0f - m_wetDryModel.value(); } + inline float panAmount() const + { + return m_panModel.value(); + } + inline float wetLevelL() const + { + return ( m_panModel.value() < 0 ) ? m_wetDryModel.value() : ( m_wetDryModel.value() * ( ( -m_panModel.value() + 100 ) / 100 ) ); + } + inline float wetLevelR() const + { + return ( m_panModel.value() > 0 ) ? m_wetDryModel.value() : ( m_wetDryModel.value() * ( ( m_panModel.value() + 100 ) / 100 ) ); + } + inline float dryLevelL() const + { + return 1.0f - ( ( m_panModel.value() < 0 ) ? m_wetDryModel.value() : ( m_wetDryModel.value() * ( ( -m_panModel.value() + 100 ) / 100 ) ) ); + } + inline float dryLevelR() const + { + return 1.0f - ( ( m_panModel.value() > 0 ) ? m_wetDryModel.value() : ( m_wetDryModel.value() * ( ( m_panModel.value() + 100 ) / 100 ) ) ); + } + inline float gate() const { const float level = m_gateModel.value(); @@ -212,6 +233,7 @@ class LMMS_EXPORT Effect : public Plugin BoolModel m_enabledModel; FloatModel m_wetDryModel; + FloatModel m_panModel; FloatModel m_gateModel; TempoSyncKnobModel m_autoQuitModel; From 5403a4cef406ad140ccfbf70c45fce508fbc937d Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 10:06:48 -0600 Subject: [PATCH 19/20] Update EffectView.cpp --- src/gui/widgets/EffectView.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/gui/widgets/EffectView.cpp b/src/gui/widgets/EffectView.cpp index 97f8bbed042..5f2ec57f24f 100644 --- a/src/gui/widgets/EffectView.cpp +++ b/src/gui/widgets/EffectView.cpp @@ -62,21 +62,28 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) : m_wetDry = new Knob( knobBright_26, this ); m_wetDry->setLabel( tr( "W/D" ) ); - m_wetDry->move( 27, 5 ); + m_wetDry->move( 25, 5 ); m_wetDry->setEnabled( isEnabled ); m_wetDry->setHintText( tr( "Wet Level:" ), "" ); + m_pan = new Knob( knobBright_26, this ); + m_pan->setLabel( tr( "PAN" ) ); + m_pan->move( 56, 5 ); + m_pan->setEnabled( isEnabled ); + m_pan->setHintText( tr( "Panning:" ), "%" ); + + m_autoQuit = new TempoSyncKnob( knobBright_26, this ); m_autoQuit->setLabel( tr( "DECAY" ) ); - m_autoQuit->move( 60, 5 ); + m_autoQuit->move( 85, 5 ); m_autoQuit->setEnabled( isEnabled ); m_autoQuit->setHintText( tr( "Time:" ), "ms" ); m_gate = new Knob( knobBright_26, this ); m_gate->setLabel( tr( "GATE" ) ); - m_gate->move( 93, 5 ); + m_gate->move( 118, 5 ); m_gate->setEnabled( isEnabled ); m_gate->setHintText( tr( "Gate:" ), "" ); @@ -89,7 +96,7 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) : this ); QFont f = ctls_btn->font(); ctls_btn->setFont( pointSize<8>( f ) ); - ctls_btn->setGeometry( 140, 14, 50, 20 ); + ctls_btn->setGeometry( 152, 14, 50, 20 ); connect( ctls_btn, SIGNAL( clicked() ), this, SLOT( editControls() ) ); @@ -227,6 +234,7 @@ void EffectView::modelChanged() { m_bypass->setModel( &effect()->m_enabledModel ); m_wetDry->setModel( &effect()->m_wetDryModel ); + m_pan->setModel( &effect()->m_panModel ); m_autoQuit->setModel( &effect()->m_autoQuitModel ); m_gate->setModel( &effect()->m_gateModel ); } From 91ca024d4017702b25731af4ef27e67ebfe571a7 Mon Sep 17 00:00:00 2001 From: Douglas <34612565+DouglasDGI@users.noreply.github.com> Date: Sat, 29 Sep 2018 10:07:59 -0600 Subject: [PATCH 20/20] Update EffectView.h --- include/EffectView.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/EffectView.h b/include/EffectView.h index 71a0e7128cb..ef43ccb189f 100644 --- a/include/EffectView.h +++ b/include/EffectView.h @@ -82,6 +82,7 @@ public slots: QPixmap m_bg; LedCheckBox * m_bypass; Knob * m_wetDry; + Knob * m_pan; TempoSyncKnob * m_autoQuit; Knob * m_gate; QMdiSubWindow * m_subWindow;