compressors.lib : 613 : ERROR : undefined symbol : si
BoxIdent[si] is defined here : RMS_FBcompressor_peak_limiter.dsp:12
declare author "Bart Brouns";
declare name "RMS_FBcompressor_peak_limiter";
declare version "1.2";
declare license "GPLv3";
// import("compressors.lib");
// import("stdfaust.lib");
ba = library("basics.lib");
ma = library("maths.lib");
co = library("compressors.lib");
// si = library("signals.lib");
process =
co.RMS_FBcompressor_peak_limiter_N_chan(strength,threshold,thresholdLim,attack,release,knee,link,meter,2);
maxRelTime = co.rmsMaxSize/sr;
sr = 44100;
comp_group(x) = vgroup("COMPRESSOR [tooltip: Reference: http://en.wikipedia.org/wiki/Dynamic_range_compression]", x);
meter_group(x) = comp_group(vgroup("[0]", x));
knob_group(x) = comp_group(hgroup("[1]", x));
checkbox_group(x) = meter_group(hgroup("[0]", x));
cbp = checkbox_group(checkbox("[0] Bypass [tooltip: When this is checked, the compressor has no effect]"));
maxGR = -100;
meter = _<:(_, (ba.linear2db:max(maxGR):meter_group((hbargraph("[1][unit:dB][tooltip: gain reduction in dB]", maxGR, 0))))):attach;
ctl_group(x) = knob_group(hgroup("[3] Compression Control", x));
strength = ctl_group(hslider("[0] Strength [style:knob]
[tooltip: A compression Strength of 0 means no gain reduction and 1 means full gain reduction]",
1, 0, 8, 0.01));
duck_strength =
ctl_group(hslider("[-1] Duck Strength [style:knob]
[tooltip: A compression Strength of 0 means no gain reduction and 1 means full gain reduction]",
1, 0, 8, 0.01));
expand_strength =
ctl_group(hslider("[0] Expand Strength [style:knob]
[tooltip: A compression Strength of 0 means no gain reduction and 1 means full gain reduction]",
1, 0, 8, 0.01));
threshold = ctl_group(hslider("[1] Threshold [unit:dB] [style:knob]
[tooltip: When the signal level exceeds the Threshold (in dB), its level is compressed according to the Strength]",
0, maxGR, 10, 0.1));
knee = ctl_group(hslider("[2] Knee [unit:dB] [style:knob]
[tooltip: soft knee amount in dB]",
6, 0, 30, 0.1));
HPfreq =
ctl_group(hslider("[3] HP freq [scale:log] [style:knob]
[tooltip: cutoff frequency of the sidechain fi.highpass filter]",
20, 20, 10000, 1));
LPfreq =
ctl_group(hslider("[4] LP freq [scale:log] [style:knob]
[tooltip: cutoff frequency of the sidechain fi.lowpass filter]",
10000, 20, 10000, 1));
SClisten = knob_group(checkbox("SC"));
env_group(x) = knob_group(hgroup("[4] Compression Response", x));
attack = env_group(hslider("[1] Attack [unit:ms] [style:knob] [scale:log]
[tooltip: Time constant in ms (1/e smoothing time) for the compression gain to approach (exponentially) a new lower target level (the compression `kicking in')]",
0.1, 0.1, 1000, 0.01)-0.1) : *(0.001) ;
// The actual attack value is 0.1 smaller than the one displayed.
// This is done for hard limiting:
// You need 0 attack for that, but a log scale starting at 0 is useless
release = env_group(hslider("[2] Release [unit:ms] [style: knob] [scale:log]
[tooltip: Time constant in ms (1/e smoothing time) for the compression gain to approach (exponentially) a new higher target level (the compression 'releasing')]",
100, 1, maxRelTime*1000, 0.1)) : *(0.001) : max(1/ma.SR);
prePost = env_group(checkbox("[3] slow/fast [tooltip: Unchecked: log domain return-to-threshold detector
Checked: linear return-to-fi.zero detector]")*-1)+1;
link = env_group(hslider("[4] link [style:knob]
[tooltip: 0 means all channels get individual gain reduction, 1 means they all get the same gain reduction]",
1, 0, 1, 0.01));
FBFF = env_group(hslider("[5] feed-back/forward [style:knob]
[tooltip: fade between a feedback and a feed forward compressor design]",
1, 0, 1, 0.01));
lim_group(x) = knob_group(hgroup("[5] Limiter [tooltip: It's release time is the minimum of the attack and release of the compressor,
and it's knee is half that of the compressor]", x));
thresholdLim = lim_group(hslider("[9] Threshold [unit:dB] [style:knob]
[tooltip: The signal level never exceeds this threshold]",
0, -30, 10, 0.1));
makeupgain = comp_group(hslider("[6] Makeup Gain [unit:dB]
[tooltip: The compressed-signal input level is increased by this amount (in dB) to make up for the level lost due to compression]",
0, 0, maxGR*-1, 0.1)) : ba.db2linear;