diff --git a/Core/StereoDelayFilter.cpp b/Core/StereoDelayFilter.cpp index 35069b5d..9bb0f1ac 100644 --- a/Core/StereoDelayFilter.cpp +++ b/Core/StereoDelayFilter.cpp @@ -5,14 +5,12 @@ int16_t* StereoDelayFilter::ApplyFilter(int16_t* monoBuffer, size_t sampleCount, { UpdateBufferSize(sampleCount, true); - int32_t delay = EmulationSettings::GetStereoDelay(); - if(delay != _lastDelay) { + size_t delaySampleCount = (int32_t)((double)EmulationSettings::GetStereoDelay() / 1000 * sampleRate); + if(delaySampleCount != _lastDelay) { _delayedSamples.clear(); } - _lastDelay = delay; - - size_t delaySampleCount = (int32_t)((double)delay / 1000 * sampleRate); - + _lastDelay = delaySampleCount; + for(size_t i = 0; i < sampleCount; i++) { _delayedSamples.push_back(monoBuffer[i]); } diff --git a/Core/StereoDelayFilter.h b/Core/StereoDelayFilter.h index 179ce0a3..cf47a51e 100644 --- a/Core/StereoDelayFilter.h +++ b/Core/StereoDelayFilter.h @@ -9,7 +9,7 @@ class StereoDelayFilter : public BaseSoundFilter { private: std::deque _delayedSamples; - int32_t _lastDelay; + size_t _lastDelay = 0; public: int16_t* ApplyFilter(int16_t* monoBuffer, size_t sampleCount, uint32_t sampleRate);