[Reverb]
- refactored gain loop - added setter for gain
This commit is contained in:
+10
-10
@@ -48,7 +48,6 @@ class Delay
|
|||||||
m_buf.quer(out, m_delay_spec);
|
m_buf.quer(out, m_delay_spec);
|
||||||
++m_buf;
|
++m_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T, size_t numCh>
|
template<typename T, size_t numCh>
|
||||||
@@ -116,11 +115,13 @@ class Reverb
|
|||||||
std::array<Diffusor<T, numCh>, 3> m_diffusors;
|
std::array<Diffusor<T, numCh>, 3> m_diffusors;
|
||||||
Delay<T, numCh> m_feedbackDly;
|
Delay<T, numCh> m_feedbackDly;
|
||||||
T fb_dly_out[numCh];
|
T fb_dly_out[numCh];
|
||||||
|
T fb_gain;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Reverb(uint maxDelay)
|
Reverb(uint maxDelay)
|
||||||
: m_diffusors({maxDelay, maxDelay, maxDelay})
|
: m_diffusors({maxDelay, maxDelay, maxDelay})
|
||||||
, m_feedbackDly(9600, 4800)
|
, m_feedbackDly(9600, 4800)
|
||||||
|
, fb_gain(0)
|
||||||
{
|
{
|
||||||
for (int c=0; c < numCh; c++)
|
for (int c=0; c < numCh; c++)
|
||||||
{
|
{
|
||||||
@@ -128,6 +129,11 @@ class Reverb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setFeedbackGain(T value)
|
||||||
|
{
|
||||||
|
fb_gain = value;
|
||||||
|
}
|
||||||
|
|
||||||
void process_multi(float *in, float *out, unsigned numPoints)
|
void process_multi(float *in, float *out, unsigned numPoints)
|
||||||
{
|
{
|
||||||
for (int i=0; i < numPoints; i++)
|
for (int i=0; i < numPoints; i++)
|
||||||
@@ -138,22 +144,17 @@ class Reverb
|
|||||||
{
|
{
|
||||||
diffusor.process_multi(temp);
|
diffusor.process_multi(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sum
|
// Sum
|
||||||
|
Householder<T, numCh>::inPlace(fb_dly_out);
|
||||||
for (int c=0; c < numCh; c++)
|
for (int c=0; c < numCh; c++)
|
||||||
{
|
{
|
||||||
temp[c] += fb_dly_out[c];
|
temp[c] += fb_gain*fb_dly_out[c];
|
||||||
}
|
}
|
||||||
m_feedbackDly.process(temp, fb_dly_out);
|
m_feedbackDly.process(temp, fb_dly_out);
|
||||||
|
|
||||||
// Mix
|
// Mix
|
||||||
out[i] = fb_dly_out[0];
|
out[i] = fb_dly_out[0];
|
||||||
|
|
||||||
T fb_gain = 0.85;
|
|
||||||
for (int c=0; c < numCh; c++)
|
|
||||||
{
|
|
||||||
fb_dly_out[c] *= fb_gain;
|
|
||||||
}
|
|
||||||
Householder<T, numCh>::inPlace(fb_dly_out);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,7 +170,6 @@ class Reverb
|
|||||||
out[i] = temp;
|
out[i] = temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user