New button (big mama), VU-meters with falloff and hold, bug in delay (value)
(cherry picked from commit 27d2c6f978d07b1daaa4393732481f3016a0a528)
This commit is contained in:
committed by
Tobias Doerffel
parent
0331180cd1
commit
4ab2c68bd1
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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"},
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user