|
@@ -58,7 +58,8 @@ void AudioEffectDistortionInstance::process(const AudioFrame *p_src_frames, Audi
|
|
|
|
|
|
switch (base->mode) {
|
|
switch (base->mode) {
|
|
case AudioEffectDistortion::MODE_CLIP: {
|
|
case AudioEffectDistortion::MODE_CLIP: {
|
|
- a = powf(a, 1.0001 - drive_f);
|
|
|
|
|
|
+ float a_sign = a < 0 ? -1.0f : 1.0f;
|
|
|
|
+ a = powf(abs(a), 1.0001 - drive_f) * a_sign;
|
|
if (a > 1.0) {
|
|
if (a > 1.0) {
|
|
a = 1.0;
|
|
a = 1.0;
|
|
} else if (a < (-1.0)) {
|
|
} else if (a < (-1.0)) {
|