From 16c0373adc5bd76db97d5d2231e80463dda242dd Mon Sep 17 00:00:00 2001 From: David Marcec Date: Wed, 22 Apr 2020 14:36:08 +1000 Subject: fix logic error & scale sample volume based on voice volume --- src/audio_core/audio_renderer.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/audio_core/audio_renderer.cpp b/src/audio_core/audio_renderer.cpp index fc6e70f6b..50846a854 100644 --- a/src/audio_core/audio_renderer.cpp +++ b/src/audio_core/audio_renderer.cpp @@ -315,8 +315,8 @@ void AudioRenderer::VoiceState::RefreshBuffer(Core::Memory::Memory& memory, sample *= voice_resources[0]->mix_volumes[0]; } - samples[index * 2] = static_cast(sample); - samples[index * 2 + 1] = static_cast(sample); + samples[index * 2] = static_cast(sample * info.volume); + samples[index * 2 + 1] = static_cast(sample * info.volume); } break; } @@ -336,11 +336,11 @@ void AudioRenderer::VoiceState::RefreshBuffer(Core::Memory::Memory& memory, } if (voice_resources[1]->in_use) { - sample_l *= voice_resources[1]->mix_volumes[1]; + sample_r *= voice_resources[1]->mix_volumes[1]; } - samples[index_l] = static_cast(sample_l); - samples[index_r] = static_cast(sample_r); + samples[index_l] = static_cast(sample_l * info.volume); + samples[index_r] = static_cast(sample_r * info.volume); } break; } @@ -371,8 +371,10 @@ void AudioRenderer::VoiceState::RefreshBuffer(Core::Memory::Memory& memory, BR *= voice_resources[5]->mix_volumes[5]; } - samples[index * 2] = static_cast(0.3694f * FL + 0.2612f * FC + 0.3694f * BL); - samples[index * 2 + 1] = static_cast(0.3694f * FR + 0.2612f * FC + 0.3694f * BR); + samples[index * 2] = + static_cast((0.3694f * FL + 0.2612f * FC + 0.3694f * BL) * info.volume); + samples[index * 2 + 1] = + static_cast((0.3694f * FR + 0.2612f * FC + 0.3694f * BR) * info.volume); } break; } -- cgit v1.2.3