MCPcopy Create free account
hub / github.com/Signalsmith-Audio/reverb-example-code / MultiChannelFeedback

Class MultiChannelFeedback

reverb-example-code.h:41–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39
40template<int channels=8>
41struct MultiChannelFeedback {
42 using Array = std::array<double, channels>;
43
44 double delayMs = 150;
45 double decayGain = 0.85;
46
47 std::array<int, channels> delaySamples;
48 std::array<Delay, channels> delays;
49
50 void configure(double sampleRate) {
51 double delaySamplesBase = delayMs*0.001*sampleRate;
52 for (int c = 0; c < channels; ++c) {
53 // Distribute delay times exponentially between delayMs and 2*delayMs
54 double r = c*1.0/channels;
55 delaySamples[c] = std::pow(2, r)*delaySamplesBase;
56
57 delays[c].resize(delaySamples[c] + 1);
58 delays[c].reset();
59 }
60 }
61
62 Array process(Array input) {
63 Array delayed;
64 for (int c = 0; c < channels; ++c) {
65 delayed[c] = delays[c].read(delaySamples[c]);
66 }
67
68 for (int c = 0; c < channels; ++c) {
69 double sum = input[c] + delayed[c]*decayGain;
70 delays[c].write(sum);
71 }
72
73 return delayed;
74 }
75};
76
77template<int channels=8>
78struct MultiChannelMixedFeedback {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected