From 8ad608888e9ea24d72802520282136cf5a7659e8 Mon Sep 17 00:00:00 2001 From: ftk Date: Sat, 23 Feb 2019 10:36:25 +0000 Subject: [PATCH] fix audio pitch --- src/raudio.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/raudio.c b/src/raudio.c index 451d3bc3..5f42222e 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -712,11 +712,13 @@ void SetAudioBufferPitch(AudioBuffer *audioBuffer, float pitch) return; } - audioBuffer->pitch = pitch; + float pitchMul = pitch / audioBuffer->pitch; // Pitching is just an adjustment of the sample rate. Note that this changes the duration of the sound - higher pitches // will make the sound faster; lower pitches make it slower. - mal_uint32 newOutputSampleRate = (mal_uint32)((((float)audioBuffer->dsp.src.config.sampleRateOut / (float)audioBuffer->dsp.src.config.sampleRateIn) / pitch) * audioBuffer->dsp.src.config.sampleRateIn); + mal_uint32 newOutputSampleRate = (mal_uint32)((float)audioBuffer->dsp.src.config.sampleRateOut / pitchMul); + audioBuffer->pitch *= (float)audioBuffer->dsp.src.config.sampleRateOut / newOutputSampleRate; + mal_dsp_set_output_sample_rate(&audioBuffer->dsp, newOutputSampleRate); }