From b681fe226a33cc4207bd74039867f1988ae37c11 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 1 Aug 2023 19:03:37 -0700 Subject: [PATCH] Add Resampler to music filter chain, let I_SetSongSpeed do something --- src/sdl/new_sound.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/sdl/new_sound.cpp b/src/sdl/new_sound.cpp index 050b30539..46cf45094 100644 --- a/src/sdl/new_sound.cpp +++ b/src/sdl/new_sound.cpp @@ -17,6 +17,7 @@ #include "../audio/gain.hpp" #include "../audio/mixer.hpp" #include "../audio/music_player.hpp" +#include "../audio/resample.hpp" #include "../audio/sound_chunk.hpp" #include "../audio/sound_effect_player.hpp" #include "../cxxutil.hpp" @@ -42,6 +43,7 @@ using std::vector; using srb2::audio::Gain; using srb2::audio::Mixer; using srb2::audio::MusicPlayer; +using srb2::audio::Resampler; using srb2::audio::Sample; using srb2::audio::SoundChunk; using srb2::audio::SoundEffectPlayer; @@ -56,6 +58,7 @@ static unique_ptr> master; static shared_ptr> mixer_sound_effects; static shared_ptr> mixer_music; static shared_ptr music_player; +static shared_ptr> resample_music_player; static shared_ptr> gain_sound_effects; static shared_ptr> gain_music_player; static shared_ptr> gain_music_channel; @@ -187,11 +190,12 @@ void initialize_sound() mixer_sound_effects = make_shared>(); mixer_music = make_shared>(); music_player = make_shared(); + resample_music_player = make_shared>(music_player, 1.f); gain_sound_effects = make_shared>(); gain_music_player = make_shared>(); gain_music_channel = make_shared>(); gain_sound_effects->bind(mixer_sound_effects); - gain_music_player->bind(music_player); + gain_music_player->bind(resample_music_player); gain_music_channel->bind(mixer_music); master->add_source(gain_sound_effects); master->add_source(gain_music_channel); @@ -443,7 +447,12 @@ boolean I_SongPaused(void) boolean I_SetSongSpeed(float speed) { - (void) speed; + if (resample_music_player) + { + resample_music_player->ratio(speed); + return true; + } + return false; }