Browse Source

AudioEffectPitchShift: Fix distortion when pitch is 1.0

Fabian S. 11 months ago
parent
commit
8ebabf68f8
1 changed files with 5 additions and 0 deletions
  1. 5 0
      servers/audio/effects/audio_effect_pitch_shift.cpp

+ 5 - 0
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;