[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;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
template<typename T, size_t numCh>
|
||||
@@ -116,11 +115,13 @@ class Reverb
|
||||
std::array<Diffusor<T, numCh>, 3> m_diffusors;
|
||||
Delay<T, numCh> m_feedbackDly;
|
||||
T fb_dly_out[numCh];
|
||||
T fb_gain;
|
||||
|
||||
public:
|
||||
Reverb(uint maxDelay)
|
||||
: m_diffusors({maxDelay, maxDelay, maxDelay})
|
||||
, m_feedbackDly(9600, 4800)
|
||||
, fb_gain(0)
|
||||
{
|
||||
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)
|
||||
{
|
||||
for (int i=0; i < numPoints; i++)
|
||||
@@ -138,22 +144,17 @@ class Reverb
|
||||
{
|
||||
diffusor.process_multi(temp);
|
||||
}
|
||||
|
||||
// Sum
|
||||
Householder<T, numCh>::inPlace(fb_dly_out);
|
||||
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);
|
||||
|
||||
// Mix
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user