New button (big mama), VU-meters with falloff and hold, bug in delay (value)

(cherry picked from commit 27d2c6f978d07b1daaa4393732481f3016a0a528)
This commit is contained in:
Markus Schmidt
2009-10-24 08:57:48 +02:00
committed by Tobias Doerffel
parent 0331180cd1
commit 4ab2c68bd1
3 changed files with 16 additions and 37 deletions

View File

@@ -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;
}

View File

@@ -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"},

View File

@@ -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) {