23 #ifndef _GRI_AGC2_FF_H_
24 #define _GRI_AGC2_FF_H_
38 gri_agc2_ff (
float attack_rate = 1e-1,
float decay_rate = 1e-2,
float reference = 1.0,
39 float gain = 1.0,
float max_gain = 0.0)
40 : _attack_rate(attack_rate), _decay_rate(decay_rate), _reference(reference),
41 _gain(gain), _max_gain(max_gain) {};
46 float gain ()
const {
return _gain; }
56 float output = input * _gain;
58 float tmp = (fabsf(output)) - _reference;
59 float rate = _decay_rate;
60 if(fabsf(tmp) > _gain)
65 fprintf(stdout,
"rate = %f\ttmp = %f\t gain = %f\n", rate, tmp, _gain);
72 if (_max_gain > 0.0 && _gain > _max_gain)
77 void scaleN (
float output[],
const float input[],
unsigned n){
78 for (
unsigned i = 0; i < n; i++)
79 output[i] = scale (input[i]);