[SCM] calf/master: * Compressor: More RMS tweaks
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:38:12 UTC 2013
The following commit has been merged in the master branch:
commit 7fcada27819921c77c94d886d75f340177db2f36
Author: Thor Harald Johansen <thj at thj.no>
Date: Sat Nov 1 15:48:44 2008 +0100
* Compressor: More RMS tweaks
diff --git a/src/calf/modules_dev.h b/src/calf/modules_dev.h
index b964d76..81598c0 100644
--- a/src/calf/modules_dev.h
+++ b/src/calf/modules_dev.h
@@ -37,7 +37,7 @@ public:
float *params[param_count];
uint32_t srate;
static parameter_properties param_props[];
- float clip, peak;
+ float clip, peak, asample2;
void activate() {
target = 1.f;
aim = 1.f;
@@ -56,16 +56,18 @@ public:
float knee = *params[param_knee];
while(offset < numsamples) {
- float asample = std::max(fabs(ins[0][offset]), fabs(ins[1][offset]));
- if(rms) asample *= asample;
-
+ float asample1 = std::max(fabs(ins[0][offset]), fabs(ins[1][offset]));
+ float asample;
+ if(rms) {
+ asample2 += (asample1*asample1 - asample2) * 200 / srate;
+ asample = sqrt(asample2);
+ } else asample = asample1;
+
if(asample > 0 && (asample > threshold || knee < 1)) {
if(IS_FAKE_INFINITY(ratio)) {
target = threshold;
} else {
- target = asample - threshold;
- target /= ratio;
- target += threshold;
+ target = (asample - threshold) / ratio + threshold;
}
if(knee < 1) {
@@ -82,21 +84,17 @@ public:
peak -= peak * 0.0001;
- float raim;
- if(rms) raim = sqrt(aim);
- raim = aim;
-
- float outL = ins[0][offset] * raim * makeup;
+ float outL = ins[0][offset] * aim * makeup;
outs[0][offset] = outL;
- float outR = ins[1][offset] * raim * makeup;
+ float outR = ins[1][offset] * aim * makeup;
outs[1][offset] = outR;
++offset;
float maxLR = std::max(fabs(outL), fabs(outR));
- if(maxLR > 1) clip = srate / 10;
+ if(maxLR > 1) clip = srate / 10; /* blink clip LED for 100 ms */
if(maxLR > peak) peak = maxLR;
if(clip > 0) {
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list