diff --git a/plugins/ladspa_effect/calf/calf/modules.h b/plugins/ladspa_effect/calf/calf/modules.h index 24e77f674..fd3f27eb3 100644 --- a/plugins/ladspa_effect/calf/calf/modules.h +++ b/plugins/ladspa_effect/calf/calf/modules.h @@ -225,8 +225,6 @@ public: } uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask) { numsamples += offset; - meter_wet -= meter_wet * 2.5 * numsamples / srate; - meter_out -= meter_out * 2.5 * numsamples / srate; clip -= std::min(clip, numsamples); for (uint32_t i = offset; i < numsamples; i++) { float dry = dryamount.get(); @@ -240,14 +238,8 @@ public: reverb.process(rl, rr); outs[0][i] = dry*s.left + wet*rl; outs[1][i] = dry*s.right + wet*rr; - float m_wet = std::max(fabs(wet*rl), fabs(wet*rr)); - float m_out = std::max(fabs(outs[0][i]), fabs(outs[1][i])); - if(m_wet > meter_wet) { - meter_wet = m_wet; - } - if(m_out > meter_out) { - meter_out = m_out; - } + meter_wet = std::max(fabs(wet*rl), fabs(wet*rr)); + meter_out = std::max(fabs(outs[0][i]), fabs(outs[1][i])); if(outs[0][i] > 1.f or outs[1][i] > 1.f) { clip = srate >> 3; } diff --git a/plugins/ladspa_effect/calf/src/modules.cpp b/plugins/ladspa_effect/calf/src/modules.cpp index 63da1efc1..db40b3993 100644 --- a/plugins/ladspa_effect/calf/src/modules.cpp +++ b/plugins/ladspa_effect/calf/src/modules.cpp @@ -154,7 +154,7 @@ const char *vintage_delay_fbmodes[] = { }; CALF_PORT_PROPS(vintage_delay) = { - { 120, 30, 300,2701, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_BPM, NULL, "bpm", "Tempo" }, + { 120, 30, 300, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_BPM, NULL, "bpm", "Tempo" }, { 4, 1, 16, 1, PF_INT | PF_SCALE_LINEAR | PF_CTL_FADER, NULL, "subdiv", "Subdivide"}, { 3, 1, 16, 1, PF_INT | PF_SCALE_LINEAR | PF_CTL_FADER, NULL, "time_l", "Time L"}, { 5, 1, 16, 1, PF_INT | PF_SCALE_LINEAR | PF_CTL_FADER, NULL, "time_r", "Time R"}, diff --git a/plugins/ladspa_effect/calf/src/modules_dsp.cpp b/plugins/ladspa_effect/calf/src/modules_dsp.cpp index 4d3f3dc28..5f54654d0 100644 --- a/plugins/ladspa_effect/calf/src/modules_dsp.cpp +++ b/plugins/ladspa_effect/calf/src/modules_dsp.cpp @@ -574,9 +574,7 @@ uint32_t compressor_audio_module::process(uint32_t offset, uint32_t numsamples, numsamples += offset; float compression = 1.f; - - peak -= peak * 5.f * numsamples / srate; - + peak = 0.f; clip -= std::min(clip, numsamples); while(offset < numsamples) { @@ -615,12 +613,10 @@ uint32_t compressor_audio_module::process(uint32_t offset, uint32_t numsamples, ++offset; float maxLR = std::max(fabs(outL), fabs(outR)); - - if(maxLR > 1.f) clip = srate >> 3; /* blink clip LED for 125 ms */ - - if(maxLR > peak) { + if(maxLR > peak) peak = maxLR; - } + + if(peak > 1.f) clip = srate >> 3; /* blink clip LED for 125 ms */ } detected = linSlope; @@ -778,11 +774,10 @@ uint32_t multibandcompressor_audio_module::process(uint32_t offset, uint32_t num clip_inR -= std::min(clip_inR, numsamples); clip_outL -= std::min(clip_outL, numsamples); clip_outR -= std::min(clip_outR, numsamples); - meter_inL -= meter_inL * 2.5 * numsamples / srate; - meter_inR -= meter_inR * 2.5 * numsamples / srate; - meter_outL -= meter_outL * 2.5 * numsamples / srate; - meter_outR -= meter_outR * 2.5 * numsamples / srate; - + meter_inL = 0.f; + meter_inR = 0.f; + meter_outL = 0.f; + meter_outR = 0.f; while(offset < numsamples) { // cycle through samples float inL = ins[0][offset]; @@ -873,7 +868,7 @@ uint32_t multibandcompressor_audio_module::process(uint32_t offset, uint32_t num if(outR > 1.f) { clip_outR = srate >> 3; } - // rise up in / out meters + // set up in / out meters if(inL > meter_inL) { meter_inL = inL; } @@ -1087,9 +1082,8 @@ void gain_reduction_audio_module::deactivate() void gain_reduction_audio_module::process(float &left, float &right) { - meter_out -= meter_out * 5.f * 1 / srate; - meter_comp += (1 - meter_comp) * 5.f * 1 / srate; float gain = 1.f; + float maxLR = 0.f; if(bypass < 0.5f) { // this routine is mainly copied from thor's compressor module // greatest sounding compressor I've heard! @@ -1119,18 +1113,11 @@ void gain_reduction_audio_module::process(float &left, float &right) left *= gain; right *= gain; - + maxLR = std::max(fabs(left), fabs(right)); detected = rms ? sqrt(linSlope) : linSlope; } - - float maxLR = std::max(fabs(left), fabs(right)); - - if(maxLR > meter_out) { - meter_out = maxLR; - } - if(gain < meter_comp) { - meter_comp = gain; - } + meter_out = maxLR; + meter_comp = gain; } float gain_reduction_audio_module::output_level(float slope) {