From 9948682d0385f40be51266bb269ba33e2424ef2a Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Tue, 11 Nov 2025 19:52:35 +0100 Subject: [PATCH] [Reverb] - fixed mix down --- reverb/reverb.hpp | 23 +++++++++++------------ tests/test_mix.cpp | 2 +- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/reverb/reverb.hpp b/reverb/reverb.hpp index a2c317c..d511709 100644 --- a/reverb/reverb.hpp +++ b/reverb/reverb.hpp @@ -15,18 +15,14 @@ class Delay uint m_delaySize; public: - Delay(uint delayCapacity, int delayOffset=0) + Delay(uint delayCapacity, int delayOffset) : m_buf(delayCapacity) { - setDelay(delayCapacity-delayOffset, delayOffset); + setDelay(delayCapacity, delayOffset); } - void setDelay(uint delaySize, int delayOffset=0) + void setDelay(uint delaySize, int delayOffset) { - if ((delaySize + delayOffset) > m_buf.capacity()) - { - return; - } float delayRagePerWindow = (float)(delaySize-delayOffset)/(float)numCh; if (delayRagePerWindow < 0) @@ -81,7 +77,7 @@ class Diffusor public: Diffusor(uint maxDelaySize) - : m_dly(maxDelaySize) + : m_dly(maxDelaySize, 0) { // Shuffle spec for (int i=0; i < numCh; i++) @@ -113,7 +109,7 @@ class Diffusor void setDelay(uint delay) { - m_dly.setDelay(delay); + m_dly.setDelay(delay, 0); } uint getDelay() @@ -161,9 +157,9 @@ class Reverb T fb_gain; public: - Reverb(std::initializer_list> maxDelay, uint fb_maxDelay) + Reverb(std::initializer_list> maxDelay, uint fb_maxDelay, uint fb_minDelay) : m_diffusors(maxDelay) - , m_feedbackDly(fb_maxDelay, 0) + , m_feedbackDly(fb_maxDelay, fb_minDelay) , fb_gain(0) { for (int c=0; c < numCh; c++) @@ -217,7 +213,10 @@ class Reverb m_feedbackDly.process(temp, fb_dly_out); // Mix - out[i] = fb_dly_out[0]; + for (int c=0; c < numCh; c++) + { + out[i] += fb_dly_out[c]; + } } } diff --git a/tests/test_mix.cpp b/tests/test_mix.cpp index d1e946b..beeae6f 100644 --- a/tests/test_mix.cpp +++ b/tests/test_mix.cpp @@ -136,7 +136,7 @@ void test_reverb() std::cout << "----------------------------------------------" << std::endl; std::cout << "test_reverb()" << std::endl; - Reverb rev({32}, 2); + Reverb rev({32}, 256, 8); float data_in[10] = {1, 2, 3, 4, 5, 6, 7,8, 9, 10}; float data_out[10] = {0, 0, 0, 0, 0, 0, 0,0, 0, 0};