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]);
void scaleN(float output[], const float input[], unsigned n)
Definition: gri_agc2_ff.h:77
void set_decay_rate(float rate)
Definition: gri_agc2_ff.h:50
float gain() const
Definition: gri_agc2_ff.h:46
high performance Automatic Gain Control class with attack and decay rate
Definition: gri_agc2_ff.h:35
gri_agc2_ff(float attack_rate=1e-1, float decay_rate=1e-2, float reference=1.0, float gain=1.0, float max_gain=0.0)
Definition: gri_agc2_ff.h:38
float reference() const
Definition: gri_agc2_ff.h:45
float scale(float input)
Definition: gri_agc2_ff.h:55
void set_max_gain(float max_gain)
Definition: gri_agc2_ff.h:53
float attack_rate() const
Definition: gri_agc2_ff.h:43
float _max_gain
Definition: gri_agc2_ff.h:87
#define GR_CORE_API
Definition: gr_core_api.h:30
float _reference
Definition: gri_agc2_ff.h:85
void set_gain(float gain)
Definition: gri_agc2_ff.h:52
float _decay_rate
Definition: gri_agc2_ff.h:84
float max_gain() const
Definition: gri_agc2_ff.h:47
float decay_rate() const
Definition: gri_agc2_ff.h:44
void set_attack_rate(float rate)
Definition: gri_agc2_ff.h:49
float _gain
Definition: gri_agc2_ff.h:86
void set_reference(float reference)
Definition: gri_agc2_ff.h:51
float _attack_rate
Definition: gri_agc2_ff.h:83