#pragma once #include #include "DSPConstants.h" #include "BiquadFilters.h" namespace FDNReverb { struct ERTap { float delaySamples{ 0.f }; float gainL{ 0.f }; float gainR{ 0.f }; }; class EarlyReflections { public: void prepare(const juce::dsp::ProcessSpec& spec); void buildTaps(const AlgorithmPreset& preset, float roomSizeScale, double sampleRate); void setPreDelay(float ms, double sampleRate) noexcept; std::pair tick(float mono) noexcept; void reset() noexcept; private: juce::dsp::DelayLine buf; std::array taps; int preDelaySamples{ 0 }; BiquadCoeffs erHPCoeffs, erLPCoeffs; BiquadState erHPL, erHPR, erLPL, erLPR; }; } // namespace FDNReverb