17 if (!std::isfinite(sample_rate) || sample_rate <= SampleType{0.0f})
18 sample_rate = SampleType{44100.0f};
20 sample_rate_ = sample_rate;
22 std::max(1,
static_cast<int>(
23 sample_rate * max_delay_ms * SampleType{0.001f}));
24 delay_l_.prepare(max_delay);
25 delay_r_.prepare(max_delay);
52 return {input, input};
54 SampleType lfo_l = std::sin(SampleType{2.0f} * pi * phase_);
55 SampleType lfo_r = std::sin(SampleType{2.0f} * pi * phase_ +
56 pi * SampleType{0.5f});
58 SampleType delay_samples = delay_ms_ * sample_rate_ * SampleType{0.001f};
59 SampleType mod_l = delay_samples + lfo_l * depth_ * delay_samples *
61 SampleType mod_r = delay_samples + lfo_r * depth_ * delay_samples *
67 SampleType wet_l = delay_l_.read(mod_l);
68 SampleType wet_r = delay_r_.read(mod_r);
70 phase_ += rate_ / sample_rate_;
71 if (phase_ >= SampleType{1.0f})
72 phase_ = std::fmod(phase_, SampleType{1.0f});
74 SampleType dry = SampleType{1.0f} - mix_;
75 return {input * dry + wet_l * mix_,
76 input * dry + wet_r * mix_};