From 7f346d6c45a7ea034fc5ce5b5816ee02adcd5c59 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 16 Nov 2025 13:55:44 +0100 Subject: [PATCH] Fix crackling when resampling audio --- distribution/changelog.txt | 1 + src/openrct2-ui/audio/AudioMixer.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 334d3458c4..6955bd5238 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -13,6 +13,7 @@ - Fix: [#25488] Crash in headless mode. - Fix: [#25494] The Go-Karts steep to flat track does not draw correctly in the flat side tunnel. - Fix: [#25518] The virtual floor does not draw correctly if expanded on the positive x and y axes. +- Fix: [#25519] Crackling audio when sampling frequencies do not match. - Fix: [objects#401] Round tunnels on down slopes glitch. - Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. - Fix: [objects#408] Australian fountain sets have confusing naming. diff --git a/src/openrct2-ui/audio/AudioMixer.cpp b/src/openrct2-ui/audio/AudioMixer.cpp index 856fbbca1b..a52acc7f73 100644 --- a/src/openrct2-ui/audio/AudioMixer.cpp +++ b/src/openrct2-ui/audio/AudioMixer.cpp @@ -200,7 +200,7 @@ void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t len // Read raw PCM from channel int32_t readSamples = numSamples * rate; - auto readLength = static_cast(readSamples / cvt.len_ratio) * outputByteRate; + auto readLength = static_cast(ceil(readSamples / cvt.len_ratio)) * outputByteRate; _channelBuffer.resize(readLength); size_t bytesRead = channel->Read(_channelBuffer.data(), readLength);