38 static constexpr uint32 cFDNChannels = 16;
39 static constexpr uint32 cScratchSize = 480;
42 static constexpr float cMinRT60 = 0.03f;
43 static constexpr float cMaxRT60 = 10.0f;
45 static constexpr float cMinSlope = -60.0f / cMinRT60;
46 static constexpr float cMaxSlope = -60.0f / cMaxRT60;
50 struct AttenuationFilter
54 Crossover.
Prepare(sampleRate, splits);
57 [[nodiscard]] JPL_INLINE
float Process(
float sample)
64 JPL_INLINE
void UpdateParameters(
float delaySeconds,
const simd& decaySlopeDbPerSecond)
66 const simd dbLossPerLoop = decaySlopeDbPerSecond * delaySeconds;
67 DecayGains =
dBToGain(dbLossPerLoop);
71 simd DecayGains{ 0.999f };
115 using SafeRT60Write =
typename SafeRT60::ScopedAccess<JPL::ThreadType::nonRealtime>;
116 using SafeRT60Read =
typename SafeRT60::ScopedAccess<JPL::ThreadType::realtime>;
117 SafeRT60 mDecaySlopeDbPerSecond{ -60.0f / 1.0f};
Definition LateReverb.h:37
void ProcessInterleaved(std::span< const float > input, std::span< float > output, uint32 numFrames)
void SetRT60(const simd &newRT60Seconds)
void Prepare(float sampleRate, const SplitFrequencies &splits={})
void SetDecaySlope(const simd &newDecaySlope)
~ReverbBus() noexcept=default
Definition AcousticMaterial.h:36
std::uint32_t uint32
Definition Core.h:311
JPL_INLINE T dBToGain(const T &dB) noexcept
Definition DecibelsAndGain.h:40
4th order Linkwitz-Riley 4-band crossover
Definition CrossoverFilter.h:417
JPL_INLINE float ProcessSample(float sample, simd gains) noexcept
Definition CrossoverFilter.h:456
JPL_INLINE void Prepare(float sampleRate, SplitFrequencies splits=cDefaultFrequencySplits) noexcept
Definition CrossoverFilter.h:425
Split frequencies points for crossover.
Definition FrequencyBands.h:41
Minimal 4-wide 32-bit float vector implementation for SIMD.
Definition SIMD.h:60