47 float s1 = 0.0f,
s2 = 0.0f;
52 static constexpr float R = std::numbers::sqrt2_v<float>;
117 static constexpr float minusR = -std::numbers::sqrt2_v<float>;
141 static const simd R = std::numbers::sqrt2_v<float>;
189 static const simd minusR = -std::numbers::sqrt2_v<float>;
213 static constexpr float minusR = -std::numbers::sqrt2_v<float>;
296 static constexpr float minusR = -std::numbers::sqrt2_v<float>;
508 std::span<float>
out)
noexcept
#define JPL_ASSERT(inExpression,...)
Main assert macro, usage: JPL_ASSERT(condition, message) or JPL_ASSERT(condition)
Definition ErrorReporting.h:76
JPL_INLINE constexpr T FMA(T a, T b, T c) noexcept
Inlined fuse multiply-add. Compiler in some circumstances is more eager to optimize this than std::fm...
Definition Math.h:186
Definition AcousticMaterial.h:36
JPL_INLINE simd clamp(const simd &value, const simd &minV, const simd &maxV) noexcept
Element-wise clamp.
Definition SIMD.h:1838
constexpr SplitFrequencies cDefaultFrequencySplits
At the moment JPL Spatial uses these frequency sptits for sound propagation.
Definition FrequencyBands.h:48
JPL_INLINE simd reverse(const simd &vec) noexcept
Reverse the order of the lanes.
Definition SIMD.h:2005
JPL_INLINE simd combine_lohi(const simd &a, const simd &b) noexcept
Combine two low lanes of a and two high lanes from b as { a0, a1, b2, b3 }.
Definition SIMD.h:1994
JPL_INLINE simd interleave_lohi(const simd &vec) noexcept
Interleave two low lanes with the two high lanes (e.g. { 0, 1, 2, 3 } -> { 0, 2, 1,...
Definition SIMD.h:1950
JPL_INLINE simd min(const simd &a, const simd &b) noexcept
Element-wise min.
Definition SIMD.h:1813
JPL_INLINE simd combine_lo(const simd &a, const simd &b) noexcept
Combine two low lanes of input a and b as { a0, a1, b0, b1 }.
Definition SIMD.h:1962
simd tan(simd x) noexcept
Definition SIMDMath.h:643
4th order Linkwitz-Riley 4-band crossover
Definition CrossoverFilter.h:417
JPL_INLINE simd SplitSample(float sample) noexcept
Definition CrossoverFilter.h:450
void ProcessBlock(std::span< const float > in, simd startGains, simd endGains, std::span< float > out) noexcept
Definition CrossoverFilter.h:505
void ProcessBlock(std::span< const float > in, simd gains, std::span< float > out) noexcept
Definition CrossoverFilter.h:473
void SplitSample(float sample, simd &outBands) noexcept
Definition CrossoverFilter.h:439
void ProcessBlock(std::span< const float > in, std::span< simd > outBands) noexcept
Definition CrossoverFilter.h:462
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
LR4Split X2
Definition CrossoverFilter.h:419
JPL_INLINE void Reset() noexcept
Definition CrossoverFilter.h:433
LR4Split2Lanes X13
Definition CrossoverFilter.h:423
Definition CrossoverFilter.h:325
JPL_INLINE void Reset() noexcept
Definition CrossoverFilter.h:360
TPTSVFStageSIMD Stage1
Definition CrossoverFilter.h:326
TPTSVFStageSIMD Stage2
Definition CrossoverFilter.h:327
JPL_INLINE void Process(float low, float high, simd &out_b1234) noexcept
Definition CrossoverFilter.h:407
JPL_INLINE void Prepare(float sampleRate, float f1, float f3) noexcept
Definition CrossoverFilter.h:340
TPTSVFAllpassSIMD AllpassEqualizer
Definition CrossoverFilter.h:332
JPL_INLINE void ProcessInterleaved(float low, float high, simd &out_b1324) noexcept
Definition CrossoverFilter.h:371
TPTSVFStageSIMD::Params Params
Definition CrossoverFilter.h:335
4th order Linkwitz-Riley crossover
Definition CrossoverFilter.h:246
JPL_INLINE float ProcessLP(float x) noexcept
Definition CrossoverFilter.h:265
JPL_INLINE void Reset() noexcept
Definition CrossoverFilter.h:259
JPL_INLINE void Prepare(float sampleRate, float frequency) noexcept
Definition CrossoverFilter.h:252
JPL_INLINE void Process(float x, float &low, float &high) noexcept
Definition CrossoverFilter.h:294
JPL_INLINE float ProcessHP(float x) noexcept
Definition CrossoverFilter.h:278
StateVariableFilterTPT::Params Params
Definition CrossoverFilter.h:250
StateVariableFilterTPT Stage2
Definition CrossoverFilter.h:248
StateVariableFilterTPT Stage1
Definition CrossoverFilter.h:247
Split frequencies points for crossover.
Definition FrequencyBands.h:41
Definition CrossoverFilter.h:40
float g
Definition CrossoverFilter.h:41
float d
Definition CrossoverFilter.h:42
float MinusRg
Definition CrossoverFilter.h:43
State Variable Filter with Topology-Preserving Transform structure.
Definition CrossoverFilter.h:38
JPL_INLINE void Reset() noexcept
Definition CrossoverFilter.h:62
float s1
Definition CrossoverFilter.h:47
JPL_INLINE void Process(const Params ¶ms, float x, float &yL, float &yB, float &yH) noexcept
Definition CrossoverFilter.h:64
JPL_INLINE void ProcessBP(const Params ¶ms, float x, float &yB)
Definition CrossoverFilter.h:103
JPL_INLINE void ProcessBPLP(const Params ¶ms, float x, float &yL, float &yB)
Definition CrossoverFilter.h:78
JPL_INLINE void ProcessBPHP(const Params ¶ms, float x, float &yB, float &yH)
Definition CrossoverFilter.h:90
static JPL_INLINE Params Prepare(float sampleRate, float frequency) noexcept
Prepare parameters for a TPT SVGF Stage.
Definition CrossoverFilter.h:50
JPL_INLINE void ProcessAP(const Params ¶ms, float x, float &yAP)
Definition CrossoverFilter.h:115
float s2
Definition CrossoverFilter.h:47
Definition CrossoverFilter.h:222
JPL_INLINE void Prepare(const simd &sampleRate, const simd &frequency) noexcept
Definition CrossoverFilter.h:225
TPTSVFStageSIMD::Params Params
Definition CrossoverFilter.h:223
JPL_INLINE simd Process(const simd &x) noexcept
Definition CrossoverFilter.h:235
JPL_INLINE void Reset() noexcept
Definition CrossoverFilter.h:230
Definition CrossoverFilter.h:198
StateVariableFilterTPT::Params Params
Definition CrossoverFilter.h:199
JPL_INLINE void Reset() noexcept
Definition CrossoverFilter.h:206
JPL_INLINE void Prepare(float sampleRate, float frequency) noexcept
Definition CrossoverFilter.h:201
JPL_INLINE float Process(float x) noexcept
Definition CrossoverFilter.h:211
Definition CrossoverFilter.h:130
simd d
Definition CrossoverFilter.h:132
simd MinusRg
Definition CrossoverFilter.h:133
simd g
Definition CrossoverFilter.h:131
Definition CrossoverFilter.h:128
JPL_INLINE void Reset() noexcept
Definition CrossoverFilter.h:151
JPL_INLINE void ProcessBP(const Params ¶ms, simd x, simd &yB)
Definition CrossoverFilter.h:179
static JPL_INLINE Params Prepare(const simd &sampleRate, const simd &frequency) noexcept
Definition CrossoverFilter.h:139
JPL_INLINE void ProcessBPLP(const Params ¶ms, simd x, simd &yL, simd &yB)
Definition CrossoverFilter.h:163
JPL_INLINE void ProcessAP(const Params ¶ms, simd x, simd &yAP)
Definition CrossoverFilter.h:187
simd s1
Definition CrossoverFilter.h:137
JPL_INLINE void ProcessBPHP(const Params ¶ms, simd x, simd &yB, simd &yH)
Definition CrossoverFilter.h:171
simd s2
Definition CrossoverFilter.h:137
JPL_INLINE void Process(const Params ¶ms, const simd &x, simd &yL, simd &yB, simd &yH) noexcept
Definition CrossoverFilter.h:153
Minimal 4-wide 32-bit float vector implementation for SIMD.
Definition SIMD.h:60
static JPL_INLINE simd c_1() noexcept
Definition SIMD.h:461
static constexpr std::size_t size() noexcept
Get number of element of the vector.
Definition SIMD.h:97