Fix double apply gain shift in AGC
This commit is contained in:
@@ -31,23 +31,23 @@ public class AGC implements Effect {
|
|||||||
double absSampleLeft = Math.abs(samples[i][Sentence.LEFT]) * gain;
|
double absSampleLeft = Math.abs(samples[i][Sentence.LEFT]) * gain;
|
||||||
double absSampleRight = Math.abs(samples[i][Sentence.RIGHT]) * gain;
|
double absSampleRight = Math.abs(samples[i][Sentence.RIGHT]) * gain;
|
||||||
|
|
||||||
|
double factor = 0.0d;
|
||||||
|
|
||||||
if (absSampleLeft > ceiling) {
|
if (absSampleLeft > ceiling) {
|
||||||
gain -= attack;
|
factor = -attack;
|
||||||
if (gain < 0) gain = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (absSampleRight > ceiling) {
|
if (absSampleRight > ceiling) {
|
||||||
gain -= attack;
|
factor = -attack;
|
||||||
if (gain < 0) gain = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((absSampleLeft < ceiling) && (absSampleRight < ceiling)) {
|
if ((absSampleLeft < ceiling) && (absSampleRight < ceiling)) {
|
||||||
gain += decay;
|
factor = decay;
|
||||||
if (gain > limit) {
|
|
||||||
gain = limit;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gain += factor;
|
||||||
|
if (gain > limit) gain = limit;
|
||||||
|
|
||||||
samples[i][Sentence.LEFT] *= gain;
|
samples[i][Sentence.LEFT] *= gain;
|
||||||
samples[i][Sentence.RIGHT] *= gain;
|
samples[i][Sentence.RIGHT] *= gain;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user