From c8b2dcea510142ef884bd6a94ddc000dad84c95e Mon Sep 17 00:00:00 2001 From: Stubbjax Date: Sat, 20 Dec 2025 14:26:43 +1100 Subject: [PATCH 1/2] bugfix: Use global volume modifiers when applying audio volume overrides --- .../Source/MilesAudioDevice/MilesAudioManager.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp b/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp index 973669ed6b..7e8354b3dc 100644 --- a/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp +++ b/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp @@ -2109,7 +2109,7 @@ void MilesAudioManager::adjustVolumeOfPlayingAudio(AsciiString eventName, Real n playing->m_audioEventRTS->setVolume(newVolume); Real desiredVolume = playing->m_audioEventRTS->getVolume() * playing->m_audioEventRTS->getVolumeShift(); AIL_sample_volume_pan(playing->m_sample, NULL, &pan); - AIL_set_sample_volume_pan(playing->m_sample, desiredVolume, pan); + AIL_set_sample_volume_pan(playing->m_sample, m_soundVolume * desiredVolume, pan); } } @@ -2119,7 +2119,7 @@ void MilesAudioManager::adjustVolumeOfPlayingAudio(AsciiString eventName, Real n // Adjust it playing->m_audioEventRTS->setVolume(newVolume); Real desiredVolume = playing->m_audioEventRTS->getVolume() * playing->m_audioEventRTS->getVolumeShift(); - AIL_set_3D_sample_volume(playing->m_3DSample, desiredVolume); + AIL_set_3D_sample_volume(playing->m_3DSample, m_sound3DVolume * desiredVolume); } } @@ -2129,8 +2129,12 @@ void MilesAudioManager::adjustVolumeOfPlayingAudio(AsciiString eventName, Real n // Adjust it playing->m_audioEventRTS->setVolume(newVolume); Real desiredVolume = playing->m_audioEventRTS->getVolume() * playing->m_audioEventRTS->getVolumeShift(); + Real streamVolume = (playing->m_audioEventRTS->getAudioEventInfo()->m_soundType == AT_Music) + ? m_musicVolume + : m_speechVolume; + AIL_stream_volume_pan(playing->m_stream, NULL, &pan); - AIL_set_stream_volume_pan(playing->m_stream, desiredVolume, pan); + AIL_set_stream_volume_pan(playing->m_stream, streamVolume * desiredVolume, pan); } } } From afe69c5c018d729d039d33f9f9c3e2592615b96b Mon Sep 17 00:00:00 2001 From: Stubbjax Date: Mon, 22 Dec 2025 09:42:18 +1100 Subject: [PATCH 2/2] refactor: Simplify volume assignment logic --- .../Source/MilesAudioDevice/MilesAudioManager.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp b/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp index 7e8354b3dc..a4f6b1bc9e 100644 --- a/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp +++ b/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp @@ -2107,9 +2107,8 @@ void MilesAudioManager::adjustVolumeOfPlayingAudio(AsciiString eventName, Real n if (playing && playing->m_audioEventRTS->getEventName() == eventName) { // Adjust it playing->m_audioEventRTS->setVolume(newVolume); - Real desiredVolume = playing->m_audioEventRTS->getVolume() * playing->m_audioEventRTS->getVolumeShift(); AIL_sample_volume_pan(playing->m_sample, NULL, &pan); - AIL_set_sample_volume_pan(playing->m_sample, m_soundVolume * desiredVolume, pan); + AIL_set_sample_volume_pan(playing->m_sample, getEffectiveVolume(playing->m_audioEventRTS), pan); } } @@ -2118,8 +2117,7 @@ void MilesAudioManager::adjustVolumeOfPlayingAudio(AsciiString eventName, Real n if (playing && playing->m_audioEventRTS->getEventName() == eventName) { // Adjust it playing->m_audioEventRTS->setVolume(newVolume); - Real desiredVolume = playing->m_audioEventRTS->getVolume() * playing->m_audioEventRTS->getVolumeShift(); - AIL_set_3D_sample_volume(playing->m_3DSample, m_sound3DVolume * desiredVolume); + AIL_set_3D_sample_volume(playing->m_3DSample, getEffectiveVolume(playing->m_audioEventRTS)); } } @@ -2128,13 +2126,8 @@ void MilesAudioManager::adjustVolumeOfPlayingAudio(AsciiString eventName, Real n if (playing && playing->m_audioEventRTS->getEventName() == eventName) { // Adjust it playing->m_audioEventRTS->setVolume(newVolume); - Real desiredVolume = playing->m_audioEventRTS->getVolume() * playing->m_audioEventRTS->getVolumeShift(); - Real streamVolume = (playing->m_audioEventRTS->getAudioEventInfo()->m_soundType == AT_Music) - ? m_musicVolume - : m_speechVolume; - AIL_stream_volume_pan(playing->m_stream, NULL, &pan); - AIL_set_stream_volume_pan(playing->m_stream, streamVolume * desiredVolume, pan); + AIL_set_stream_volume_pan(playing->m_stream, getEffectiveVolume(playing->m_audioEventRTS), pan); } } }