From eee1dc28e05e662af8948269eea9eabe1986cc29 Mon Sep 17 00:00:00 2001 From: Kearwood Gilbert Date: Fri, 15 Feb 2013 23:40:22 -0800 Subject: [PATCH] Fixed recursive echo issue in reverb --- KREngine/kraken/KRAudioManager.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/KREngine/kraken/KRAudioManager.cpp b/KREngine/kraken/KRAudioManager.cpp index 34d2007..d16763f 100644 --- a/KREngine/kraken/KRAudioManager.cpp +++ b/KREngine/kraken/KRAudioManager.cpp @@ -152,7 +152,7 @@ void KRAudioManager::renderReverbImpulseResponse(KRAudioSample *impulse_response DSPSplitComplex impulse_block_data_complex = m_reverb_workspace[1]; DSPSplitComplex conv_data_complex = m_reverb_workspace[2]; - int reverb_offset = (m_reverb_input_next_sample + KRENGINE_AUDIO_BLOCK_LENGTH - impulse_response_offset); + int reverb_offset = (m_reverb_input_next_sample - impulse_response_offset); if(reverb_offset < 0) { reverb_offset += KRENGINE_REVERB_MAX_SAMPLES; } else { @@ -224,11 +224,6 @@ void KRAudioManager::renderReverb() } } - m_reverb_input_next_sample += KRENGINE_AUDIO_BLOCK_LENGTH; - if(m_reverb_input_next_sample >= KRENGINE_REVERB_MAX_SAMPLES) { - m_reverb_input_next_sample = 0; - } - // Apply impulse response reverb // KRAudioSample *impulse_response = getContext().getAudioManager()->get("hrtf_kemar_H10e040a"); KRAudioSample *impulse_response_sample = getContext().getAudioManager()->get("test_reverb"); @@ -238,6 +233,9 @@ void KRAudioManager::renderReverb() renderReverbImpulseResponse(impulse_response_sample, impulse_response_block * KRENGINE_AUDIO_BLOCK_LENGTH, KRENGINE_AUDIO_BLOCK_LOG2N); } } + + // Rotate reverb buffer + m_reverb_input_next_sample = (m_reverb_input_next_sample + KRENGINE_AUDIO_BLOCK_LENGTH) % KRENGINE_REVERB_MAX_SAMPLES; } void KRAudioManager::renderBlock()