From 8ebabf68f84ab5558eeb2d1c983e3ee95a023ae7 Mon Sep 17 00:00:00 2001 From: "Fabian S." <49322676+pattlebass@users.noreply.github.com> Date: Tue, 17 Sep 2024 13:57:36 +0300 Subject: [PATCH] AudioEffectPitchShift: Fix distortion when pitch is 1.0 --- servers/audio/effects/audio_effect_pitch_shift.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/servers/audio/effects/audio_effect_pitch_shift.cpp b/servers/audio/effects/audio_effect_pitch_shift.cpp index beca5039046..89273d744b8 100644 --- a/servers/audio/effects/audio_effect_pitch_shift.cpp +++ b/servers/audio/effects/audio_effect_pitch_shift.cpp @@ -286,6 +286,11 @@ void SMBPitchShift::smbFft(float *fftBuffer, long fftFrameSize, long sign) /* clang-format on */ void AudioEffectPitchShiftInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) { + // Avoid distortion by skipping processing if pitch_scale is 1.0. + if (Math::is_equal_approx(base->pitch_scale, 1.0f)) { + return; + } + float sample_rate = AudioServer::get_singleton()->get_mix_rate(); float *in_l = (float *)p_src_frames;