[Reverb]
- fixed mix down
This commit is contained in:
+11
-12
@@ -15,18 +15,14 @@ class Delay
|
|||||||
uint m_delaySize;
|
uint m_delaySize;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Delay(uint delayCapacity, int delayOffset=0)
|
Delay(uint delayCapacity, int delayOffset)
|
||||||
: m_buf(delayCapacity)
|
: 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;
|
float delayRagePerWindow = (float)(delaySize-delayOffset)/(float)numCh;
|
||||||
|
|
||||||
if (delayRagePerWindow < 0)
|
if (delayRagePerWindow < 0)
|
||||||
@@ -81,7 +77,7 @@ class Diffusor
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
Diffusor(uint maxDelaySize)
|
Diffusor(uint maxDelaySize)
|
||||||
: m_dly(maxDelaySize)
|
: m_dly(maxDelaySize, 0)
|
||||||
{
|
{
|
||||||
// Shuffle spec
|
// Shuffle spec
|
||||||
for (int i=0; i < numCh; i++)
|
for (int i=0; i < numCh; i++)
|
||||||
@@ -113,7 +109,7 @@ class Diffusor
|
|||||||
|
|
||||||
void setDelay(uint delay)
|
void setDelay(uint delay)
|
||||||
{
|
{
|
||||||
m_dly.setDelay(delay);
|
m_dly.setDelay(delay, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint getDelay()
|
uint getDelay()
|
||||||
@@ -161,9 +157,9 @@ class Reverb
|
|||||||
T fb_gain;
|
T fb_gain;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Reverb(std::initializer_list<Diffusor<T, numCh>> maxDelay, uint fb_maxDelay)
|
Reverb(std::initializer_list<Diffusor<T, numCh>> maxDelay, uint fb_maxDelay, uint fb_minDelay)
|
||||||
: m_diffusors(maxDelay)
|
: m_diffusors(maxDelay)
|
||||||
, m_feedbackDly(fb_maxDelay, 0)
|
, m_feedbackDly(fb_maxDelay, fb_minDelay)
|
||||||
, fb_gain(0)
|
, fb_gain(0)
|
||||||
{
|
{
|
||||||
for (int c=0; c < numCh; c++)
|
for (int c=0; c < numCh; c++)
|
||||||
@@ -217,7 +213,10 @@ class Reverb
|
|||||||
m_feedbackDly.process(temp, fb_dly_out);
|
m_feedbackDly.process(temp, fb_dly_out);
|
||||||
|
|
||||||
// Mix
|
// Mix
|
||||||
out[i] = fb_dly_out[0];
|
for (int c=0; c < numCh; c++)
|
||||||
|
{
|
||||||
|
out[i] += fb_dly_out[c];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -136,7 +136,7 @@ void test_reverb()
|
|||||||
std::cout << "----------------------------------------------" << std::endl;
|
std::cout << "----------------------------------------------" << std::endl;
|
||||||
std::cout << "test_reverb()" << std::endl;
|
std::cout << "test_reverb()" << std::endl;
|
||||||
|
|
||||||
Reverb<double, 8> rev({32}, 2);
|
Reverb<double, 8> rev({32}, 256, 8);
|
||||||
|
|
||||||
float data_in[10] = {1, 2, 3, 4, 5, 6, 7,8, 9, 10};
|
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};
|
float data_out[10] = {0, 0, 0, 0, 0, 0, 0,0, 0, 0};
|
||||||
|
|||||||
Reference in New Issue
Block a user