这是我的自动增益控制方法,它可以工作,但我会在第一次冲动时快速爆发。如何缩小它以使其不会超过 0dbfs?1e-4 的速度也有点作用,但太慢了。
double AGC(double x)
{
double ref = pow(10.0, (-18.0/10.0); //-18dBFS Convert to Linear
double rate = 1.0; // coefficient when increasing/decreasing gain
x = x * m_Gain; //scale input(x)
m_Gain += (ref - (fabs(x) * fabs(x))) * rate;
return x;
}