[audio_core] Fix audio reverb effect #2646

Merged
MaranBr merged 1 commit from reverb-fix into master 2025-10-02 01:30:06 +02:00
Member

This fixes the audio reverb effect that was causing loud noise in some games and on some platforms.

This fixes the audio reverb effect that was causing loud noise in some games and on some platforms.
MaranBr added 1 commit 2025-10-01 22:07:34 +02:00
Fix reverb effect
All checks were successful
eden-license / license-header (pull_request) Successful in 23s
16865d6764
requested reviews from MrPurple666, Lizzie, CamilleLaVey, Maufeat, crueter 2025-10-01 22:07:35 +02:00
MaranBr changed title from [audio_core] Fix reverb effect to [audio_core] Fix audio reverb effect 2025-10-01 22:16:21 +02:00
crueter reviewed 2025-10-01 22:17:07 +02:00
@ -191,8 +191,6 @@ static void InitializeReverbEffect(const ReverbInfo::ParameterVersion2& params,
const auto center_delay_time{(5 * delay).to_uint_floor()};
state.center_delay_line.Initialize(center_delay_time, 1.0f);
UpdateReverbEffectParameter(params, state);
Owner

shouldn't this just be in a #ifndef __unix__

shouldn't this just be in a `#ifndef __unix__`
Author
Member

This block of code controls when the effect should be updated:

void ReverbCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
    std::array<std::span<const s32>, MaxChannels> input_buffers{};
    std::array<std::span<s32>, MaxChannels> output_buffers{};

    for (u32 i = 0; i < parameter.channel_count; i++) {
        input_buffers[i] = processor.mix_buffers.subspan(inputs[i] * processor.sample_count,
                                                         processor.sample_count);
        output_buffers[i] = processor.mix_buffers.subspan(outputs[i] * processor.sample_count,
                                                          processor.sample_count);
    }

    auto state_{reinterpret_cast<ReverbInfo::State*>(state)};

    if (effect_enabled) {
        if (parameter.state == ReverbInfo::ParameterState::Updating) {
            UpdateReverbEffectParameter(parameter, *state_);
        } else if (parameter.state == ReverbInfo::ParameterState::Initialized) {
            InitializeReverbEffect(parameter, *state_, workbuffer, long_size_pre_delay_supported);
        }
    }
    ApplyReverbEffect(parameter, *state_, effect_enabled, input_buffers, output_buffers,
                      processor.sample_count);
}
This block of code controls when the effect should be updated: ```cpp void ReverbCommand::Process(const AudioRenderer::CommandListProcessor& processor) { std::array<std::span<const s32>, MaxChannels> input_buffers{}; std::array<std::span<s32>, MaxChannels> output_buffers{}; for (u32 i = 0; i < parameter.channel_count; i++) { input_buffers[i] = processor.mix_buffers.subspan(inputs[i] * processor.sample_count, processor.sample_count); output_buffers[i] = processor.mix_buffers.subspan(outputs[i] * processor.sample_count, processor.sample_count); } auto state_{reinterpret_cast<ReverbInfo::State*>(state)}; if (effect_enabled) { if (parameter.state == ReverbInfo::ParameterState::Updating) { UpdateReverbEffectParameter(parameter, *state_); } else if (parameter.state == ReverbInfo::ParameterState::Initialized) { InitializeReverbEffect(parameter, *state_, workbuffer, long_size_pre_delay_supported); } } ApplyReverbEffect(parameter, *state_, effect_enabled, input_buffers, output_buffers, processor.sample_count); } ```
crueter marked this conversation as resolved
MaranBr scheduled this pull request to auto merge when all checks succeed 2025-10-01 23:14:53 +02:00
crueter approved these changes 2025-10-02 00:14:50 +02:00
MaranBr force-pushed reverb-fix from 16865d6764 to 4434e1bb90 2025-10-02 00:26:10 +02:00 Compare
Shinmegumi approved these changes 2025-10-02 01:30:04 +02:00
MaranBr merged commit 1a5b3fb239 into master 2025-10-02 01:30:06 +02:00
MaranBr deleted branch reverb-fix 2025-10-02 01:30:06 +02:00
Sign in to join this conversation.
No description provided.