mirror of
https://github.com/Michatec/Radio.git
synced 2026-05-31 03:12:40 +02:00
Update radio.cpp
This commit is contained in:
@@ -92,18 +92,34 @@ public:
|
|||||||
*/
|
*/
|
||||||
class Reverb {
|
class Reverb {
|
||||||
public:
|
public:
|
||||||
std::vector<float> delayLine;
|
std::vector<float> d1, d2, d3;
|
||||||
int pos = 0;
|
int p1 = 0, p2 = 0, p3 = 0;
|
||||||
float feedback = 0.8f;
|
|
||||||
|
float feedback = 0.7f;
|
||||||
float mix = 0.0f;
|
float mix = 0.0f;
|
||||||
|
|
||||||
Reverb() { delayLine.resize(22050, 0.0f); } // ~500ms
|
Reverb() {
|
||||||
|
d1.resize(11025, 0.0f); // 250ms
|
||||||
|
d2.resize(14700, 0.0f); // 333ms
|
||||||
|
d3.resize(17640, 0.0f); // 400ms
|
||||||
|
}
|
||||||
|
|
||||||
float process(float in) {
|
float process(float in) {
|
||||||
float delayed = delayLine[static_cast<size_t>(pos)];
|
float y1 = d1[p1];
|
||||||
delayLine[static_cast<size_t>(pos)] = in + delayed * feedback;
|
float y2 = d2[p2];
|
||||||
pos = (pos + 1) % static_cast<int>(delayLine.size());
|
float y3 = d3[p3];
|
||||||
return in * (1.0f - mix) + delayed * mix;
|
|
||||||
|
d1[p1] = in + y1 * feedback;
|
||||||
|
d2[p2] = in + y2 * feedback;
|
||||||
|
d3[p3] = in + y3 * feedback;
|
||||||
|
|
||||||
|
p1 = (p1 + 1) % d1.size();
|
||||||
|
p2 = (p2 + 1) % d2.size();
|
||||||
|
p3 = (p3 + 1) % d3.size();
|
||||||
|
|
||||||
|
float reverb = (y1 + y2 + y3) / 3.0f;
|
||||||
|
|
||||||
|
return in * (1.0f - mix) + reverb * mix;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user