diff --git a/examples/audio/audio_module_playing.c b/examples/audio/audio_module_playing.c index 1bb996a7..9a85cbc0 100644 --- a/examples/audio/audio_module_playing.c +++ b/examples/audio/audio_module_playing.c @@ -52,6 +52,7 @@ int main(void) Music music = LoadMusicStream("resources/mini1111.xm"); music.looping = false; + float pitch = 1.0f; PlayMusicStream(music); @@ -84,6 +85,11 @@ int main(void) else ResumeMusicStream(music); } + if (IsKeyDown(KEY_DOWN)) pitch -= 0.01f; + else if (IsKeyDown(KEY_UP)) pitch += 0.01f; + + SetMusicPitch(music, pitch); + // Get timePlayed scaled to bar dimensions timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music)*(screenWidth - 40); diff --git a/src/raudio.c b/src/raudio.c index ec24a1ee..8859547e 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -634,16 +634,14 @@ void SetAudioBufferPitch(AudioBuffer *buffer, float pitch) { if (buffer != NULL) { - float pitchMul = pitch/buffer->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 - ma_uint32 newOutputSampleRate = (ma_uint32)((float)buffer->converter.config.sampleRateOut/pitchMul); - buffer->pitch *= (float)buffer->converter.config.sampleRateOut/newOutputSampleRate; - - ma_data_converter_set_rate(&buffer->converter, buffer->converter.config.sampleRateIn, newOutputSampleRate); + ma_uint32 outputSampleRate = (ma_uint32)((float)buffer->converter.config.sampleRateOut/pitch); + ma_data_converter_set_rate(&buffer->converter, buffer->converter.config.sampleRateIn, outputSampleRate); + + buffer->pitch = pitch; } } @@ -1477,7 +1475,7 @@ void SetMusicVolume(Music music, float volume) // Set pitch for music void SetMusicPitch(Music music, float pitch) { - SetAudioStreamPitch(music.stream, pitch); + SetAudioBufferPitch(music.stream.buffer, pitch); } // Get music time length (in seconds)