![Logo](logo.png) |
sst-filters
Filters submodule for the Surge Synthesizer
|
|
template<typename T > |
T | limit_range (const T &x, const T &low, const T &high) |
|
template<typename T > |
T | limit01 (const T &x) |
|
template<typename T > |
T | limitpm1 (const T &x) |
|
void | hardclip_block (float *x, unsigned int nquads) |
|
void | hardclip_block8 (float *x, unsigned int nquads) |
|
void | softclip_block (float *in, unsigned int nquads) |
|
void | tanh7_block (float *x, unsigned int nquads) |
|
void | clear_block (float *in, unsigned int nquads) |
|
void | clear_block_antidenormalnoise (float *in, unsigned int nquads) |
|
void | accumulate_block (float *src, float *dst, unsigned int nquads) |
|
void | copy_block (float *src, float *dst, unsigned int nquads) |
|
void | copy_block_US (float *src, float *dst, unsigned int nquads) |
|
void | copy_block_UD (float *src, float *dst, unsigned int nquads) |
|
void | copy_block_USUD (float *src, float *dst, unsigned int nquads) |
|
void | mul_block (float *src1, float *src2, float *dst, unsigned int nquads) |
|
void | mul_block (float *src1, float scalar, float *dst, unsigned int nquads) |
|
void | add_block (float *src1, float *src2, float *dst, unsigned int nquads) |
|
void | subtract_block (float *src1, float *src2, float *dst, unsigned int nquads) |
|
void | encodeMS (float *L, float *R, float *M, float *S, unsigned int nquads) |
|
void | decodeMS (float *M, float *S, float *L, float *R, unsigned int nquads) |
|
float | get_absmax (float *d, unsigned int nquads) |
|
float | get_squaremax (float *d, unsigned int nquads) |
|
float | get_absmax_2 (float *d1, float *d2, unsigned int nquads) |
|
void | float2i15_block (float *, short *, int) |
|
void | i152float_block (short *, float *, int) |
|
void | i16toi15_block (short *, short *, int) |
|
float | sine_ss (unsigned int x) |
|
int | sine (int x) |
|
__m128 | sum_ps_to_ss (__m128 x) |
|
__m128 | max_ps_to_ss (__m128 x) |
|
__m128 | hardclip_ss (__m128 x) |
|
float | rcp (float x) |
|
__m128d | hardclip8_sd (__m128d x) |
|
__m128 | hardclip_ps (__m128 x) |
|
float | saturate (float f) |
|
__m128 | softclip_ss (__m128 in) |
|
__m128 | softclip_ps (__m128 in) |
|
__m128 | tanh7_ps (__m128 x) |
|
__m128 | tanh7_ss (__m128 x) |
|
__m128 | abs_ps (__m128 x) |
|
__m128 | softclip8_ps (__m128 in) |
|
double | tanh7_double (double x) |
|
double | softclip_double (double in) |
|
double | softclip4_double (double in) |
|
double | softclip8_double (double in) |
|
double | softclip2_double (double in) |
|
float | megapanL (float pos) |
|
float | megapanR (float pos) |
|
void add_block(float *src1, float *src2, float *dst, unsigned int nquads)
__m128 LPMOOGquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:488
rkm_coeffs
Definition: VintageLadders.h:92
void mul_block(float *src1, float *src2, float *dst, unsigned int nquads)
__m128 SNHquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:508
@ fut_k35_hp
Highpass - K35.
Definition: FilterConfiguration.h:23
__m128 IIR12Bquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:231
const float fut_k35_saturations[5]
Definition: FilterConfiguration.h:174
static constexpr int FIRoffset
Definition: SincTable.h:15
#define M(a, b)
Definition: ResonanceWarp.h:30
#define A(a, b)
Definition: TriPoleFilter.h:56
#define A(a, b)
Definition: K35Filter.h:26
void subtract_block(float *src1, float *src2, float *dst, unsigned int nquads)
@ st_cutoffwarp_tanh2
Cutoff Warp - 2 Stages tanh.
Definition: FilterConfiguration.h:263
@ k35_alpha
Definition: K35Filter.h:54
const char fut_ldr_subtypes[4][32]
Definition: FilterConfiguration.h:148
static double sincf(double x)
Definition: SincTable.h:23
T resoscale4Pole(T reso, int subtype)
Definition: FilterCoefficientMaker_Impl.h:313
@ fut_notch24
Notch - 24 dB.
Definition: FilterConfiguration.h:33
static double symmetric_blackman(double i, int n)
Definition: SincTable.h:30
@ h_stage
Definition: VintageLadders.h:302
#define S(a, b)
Definition: CutoffWarp.h:29
const __m128 m128_mask_absval
Definition: shared.h:16
FilterPlotter(int fftOrder=15)
Definition: FilterPlotter.h:26
const int fut_subcount[num_filter_types]
The number of sub-types for each filter type.
Definition: FilterConfiguration.h:204
Utility code needed for Surge filters.
Definition: filters.h:17
#define reci(a)
Definition: DiodeLadder.h:29
@ dlf_G4
Definition: DiodeLadder.h:59
@ st_cutoffwarp_softclip4
Cutoff Warp - 4 Stages Soft Clip.
Definition: FilterConfiguration.h:269
@ st_resonancewarp_softclip4
Resonance Warp - 4 Stages Soft Clip.
Definition: FilterConfiguration.h:282
const char fut_def_subtypes[3][32]
Definition: FilterConfiguration.h:142
constexpr float ota3bn
Definition: TriPoleFilter.h:37
@ st_resonancewarp_tanh4
Resonance Warp - 4 Stages tanh.
Definition: FilterConfiguration.h:278
@ n_nls_coeff
Definition: ResonanceWarp.h:74
const auto res_factor_db
Definition: TriPoleFilter.h:42
@ fut_comb_pos
Effect - Comb +.
Definition: FilterConfiguration.h:17
@ fut_hp12
Highpass - 12 dB.
Definition: FilterConfiguration.h:13
@ TWO_POLE
Definition: OBXDFilter.h:32
__m128 dC[n_cm_coeffs]
Filter coefficients "delta".
Definition: QuadFilterUnit.h:21
@ SAT_SOFT
Definition: CutoffWarp.h:34
#define A(a, b)
Definition: ResonanceWarp.h:31
@ fut_obxd_2pole_bp
Bandpass - OB-Xd 12 dB.
Definition: FilterConfiguration.h:31
@ UNMASK_SUBTYPE
Definition: QuadFilterUnit.h:60
@ nls_z8
Definition: ResonanceWarp.h:86
k35_coeffs
Definition: K35Filter.h:48
@ thr_fb1
Definition: TriPoleFilter.h:305
void copy_block_UD(float *src, float *dst, unsigned int nquads)
@ nls_z6
Definition: ResonanceWarp.h:84
__m128 fastsinSSE(__m128 x) noexcept
Definition: FastMath.h:34
float fastexp(float x) noexcept
Definition: FastMath.h:196
static constexpr int FIRipol_N
Definition: SincTable.h:14
@ dlf_km
Definition: DiodeLadder.h:63
int WP[4]
Write position for comb filters.
Definition: QuadFilterUnit.h:33
@ fut_k35_lp
Lowpass - K35.
Definition: FilterConfiguration.h:22
float startFreqHz
Definition: FilterPlotter.h:17
const __m128 m128_four
Definition: shared.h:21
@ n_nlf_coeff
Definition: CutoffWarp.h:111
cmake_minimum_required(VERSION 3.10) project(sst-filters VERSION 0.5 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 17) add_library($
Definition: CMakeLists.txt:1
__m128 process_4_pole(QuadFilterUnitState *__restrict f, __m128 sample)
Definition: OBXDFilter.h:242
@ st_resonancewarp_softclip1
Resonance Warp - 1 Stage Soft Clip.
Definition: FilterConfiguration.h:279
@ thr_k
Definition: TriPoleFilter.h:292
const __m128 m128_0123
Definition: shared.h:23
#define F(a)
Definition: VintageLadders.h:130
@ nlf_z4
Definition: CutoffWarp.h:119
@ dlf_g
Definition: DiodeLadder.h:58
float endFreqHz
Definition: FilterPlotter.h:18
float sampleRate
Current sample rate.
Definition: QuadFilterUnit.h:36
@ nlf_z1
Definition: CutoffWarp.h:116
@ dlf_z3
Definition: DiodeLadder.h:70
@ fut_obxd_4pole
Lowpass - OB-Xd 24 dB.
Definition: FilterConfiguration.h:21
void Reset()
Resets the coefficients to zero, and the tuning provider to nullptr.
Definition: FilterCoefficientMaker_Impl.h:754
const char filter_type_names[num_filter_types][32]
Definition: FilterConfiguration.h:52
__m128 softclip8_ps(__m128 in)
Definition: basic_dsp.h:167
__m128 process(QuadFilterUnitState *__restrict f, __m128 input)
Definition: CutoffWarp.h:216
void process_block(float *floatL, float *floatR, int nsamples)
Definition: HalfRateFilter.h:45
constexpr float c
Definition: TriPoleFilter.h:235
const __m128 m128_two
Definition: shared.h:20
huov_coeffs
Definition: VintageLadders.h:290
void updateCoefficients(StateType &state, int channel=0)
Update the local coefficients with the coefficients from the filter state.
Definition: FilterCoefficientMaker_Impl.h:67
const __m128 zero
Definition: OBXDFilter.h:68
__m128 clampToPiRangeSSE(__m128 x)
Definition: FastMath.h:132
void i16toi15_block(short *, short *, int)
__m128 NewtonRaphsonR24dB(__m128 sample, __m128 lpc, QuadFilterUnitState *__restrict f)
Definition: OBXDFilter.h:214
dlf_state
Definition: CutoffWarp.h:114
const __m128 m128_1234
Definition: shared.h:22
constexpr float mult
Definition: TriPoleFilter.h:239
const float log_alpha
Definition: TriPoleFilter.h:232
void MakeCoeffs(float Freq, float Reso, FilterType Type, FilterSubType SubType, TuningProvider *provider, bool tuningAdjusted)
Creates filter coefficients for a given set of filter parameters.
Definition: FilterCoefficientMaker_Impl.h:74
float fastcos(float x) noexcept
Definition: FastMath.h:73
@ st_tripole_LHL3
Low -> High -> Low, third.
Definition: FilterConfiguration.h:293
__m128 process_lp(QuadFilterUnitState *__restrict f, __m128 input)
Definition: K35Filter.h:114
@ fut_lp12
Lowpass - 12 dB.
Definition: FilterConfiguration.h:10
This namespace contains an adaptation of the filter found at https://ccrma.stanford....
Definition: CutoffWarp.h:15
float tC[n_cm_coeffs]
"Target" filter coefficients
Definition: FilterCoefficientMaker.h:69
constexpr float alpha
Definition: TriPoleFilter.h:231
dlf_coeffs
Definition: DiodeLadder.h:54
#define F(a)
Definition: TriPoleFilter.h:53
@ thr_b2
Definition: TriPoleFilter.h:290
static constexpr int FIRoffsetI16
Definition: SincTable.h:17
__m128 process_2_pole(QuadFilterUnitState *__restrict f, __m128 sample)
Definition: OBXDFilter.h:182
void makeCoefficients(FilterCoefficientMaker< TuningProvider > *cm, float freq, float reso, bool is_lowpass, float saturation, float sampleRate, float sampleRateInv, TuningProvider *provider)
Definition: K35Filter.h:68
constexpr int nIterStage
Definition: TriPoleFilter.h:29
float sinctable[(FIRipol_M+1) *FIRipol_N *2]
Definition: SincTable.h:19
This contains an adaptation of the filter found at https://ccrma.stanford.edu/~jatin/ComplexNonlinear...
Definition: ResonanceWarp.h:18
double softclip_double(double in)
Definition: basic_dsp.h:200
#define D(a, b)
Definition: DiodeLadder.h:25
#define D(a, b)
Definition: TriPoleFilter.h:55
__m128 max_ps_to_ss(__m128 x)
Definition: basic_dsp.h:56
@ h_delay
Definition: VintageLadders.h:304
double softclip4_double(double in)
Definition: basic_dsp.h:210
@ nls_z3
Definition: ResonanceWarp.h:81
@ thr_x0
Definition: TriPoleFilter.h:299
@ thr_a1
Definition: TriPoleFilter.h:289
__m128 process(QuadFilterUnitState *__restrict f, __m128 input)
Definition: DiodeLadder.h:111
@ n_rkcoeff
Definition: VintageLadders.h:98
k35_state
Definition: K35Filter.h:60
__m128 sum_ps_to_ss(__m128 x)
Definition: basic_dsp.h:46
Lookup table for evaluating the Sinc function.
Definition: SincTable.h:10
__m128 softclip_ss(__m128 in)
Definition: basic_dsp.h:101
__m128 tanh7_ps(__m128 x)
Definition: basic_dsp.h:135
@ nlf_z5
Definition: CutoffWarp.h:120
constexpr int MAX_FB_COMB
Definition: globals.h:42
__m128 IIR24Bquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:451
const __m128 m128_mask_signbit
Definition: shared.h:15
float clipscale(float freq, int subtype)
Definition: FilterCoefficientMaker_Impl.h:236
@ FOUR_POLE
Definition: OBXDFilter.h:33
const char fut_tripole_subtypes[4][32]
Definition: FilterConfiguration.h:190
#define M(a, b)
Definition: DiodeLadder.h:24
@ nlf_z6
Definition: CutoffWarp.h:121
static constexpr int FIRipolI16_N
Definition: SincTable.h:16
@ s4
Definition: OBXDFilter.h:63
@ st_Notch
Standard.
Definition: FilterConfiguration.h:249
__m128 NewtonRaphson12dB(__m128 sample, QuadFilterUnitState *__restrict f)
Definition: OBXDFilter.h:154
__m128(* FilterUnitQFPtr)(QuadFilterUnitState *__restrict, __m128 in)
Typedef alias for a filter unit processing method.
Definition: QuadFilterUnit.h:43
@ st_NotchMild
Mild.
Definition: FilterConfiguration.h:250
__m128 SVFLP24Aquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:43
constexpr int n_cm_coeffs
Definition: FilterCoefficientMaker.h:13
const __m128 two
Definition: OBXDFilter.h:78
@ st_cutoffwarp_ojd4
Cutoff Warp - 4 Stages OJD.
Definition: FilterConfiguration.h:273
@ nls_z2
Definition: ResonanceWarp.h:80
@ n_obxd12_coeff
Definition: OBXDFilter.h:43
@ st_tripole_LLL3
Low -> Low -> Low, third.
Definition: FilterConfiguration.h:292
constexpr float ota1bp
Definition: TriPoleFilter.h:32
@ st_Clean
Clean.
Definition: FilterConfiguration.h:246
void tanh7_block(float *x, unsigned int nquads)
#define S(a, b)
Definition: DiodeLadder.h:27
__m128d hardclip8_sd(__m128d x)
Definition: basic_dsp.h:77
State for a filter unit.
Definition: QuadFilterUnit.h:15
@ thr_a0
Definition: TriPoleFilter.h:287
@ thr_x2
Definition: TriPoleFilter.h:303
constexpr int nIterGlobal
Definition: TriPoleFilter.h:28
const __m128 zero_zero_five
Definition: OBXDFilter.h:70
FilterSubType
Sub-types for each filter are defined here.
Definition: FilterConfiguration.h:242
float clampedFrequency(float pitch, float sampleRate, TuningProvider *provider)
Definition: VintageLadders.h:25
const char fut_vintageladder_subtypes[6][32]
Definition: FilterConfiguration.h:155
#define M(a, b)
Definition: VintageLadders.h:131
@ n_hcoeffs
Definition: VintageLadders.h:297
FilterType
These are the filter types we have to choose from!
Definition: FilterConfiguration.h:7
@ st_resonancewarp_tanh1
Resonance Warp - 1 Stage tanh.
Definition: FilterConfiguration.h:275
@ SAT_SINE
Definition: CutoffWarp.h:36
void makeCoefficients(FilterCoefficientMaker< TuningProvider > *cm, float freq, float reso, float sampleRate, bool applyGainCompensation, TuningProvider *provider)
Definition: VintageLadders.h:109
@ nls_b2
Definition: ResonanceWarp.h:73
@ n_thr_coeff
Definition: TriPoleFilter.h:293
__m128 IIR12WDFquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:261
float C[n_cm_coeffs]
Current filter coefficients.
Definition: FilterCoefficientMaker.h:63
float clampToPiRange(float x)
Definition: FastMath.h:116
const char fut_tripole_output_stage[3][16]
Definition: FilterConfiguration.h:197
__m128 IIR24CFLquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:404
@ fut_tripole
Multi - Tri-pole.
Definition: FilterConfiguration.h:42
#define D(a, b)
Definition: K35Filter.h:25
@ k35_lb
Definition: K35Filter.h:51
@ fut_diode
Lowpass - Diode Ladder.
Definition: FilterConfiguration.h:24
__m128 process(QuadFilterUnitState *__restrict f, __m128 input)
Definition: VintageLadders.h:172
@ st_Standard
Standard (SVF)
Definition: FilterConfiguration.h:244
void copy_block(float *src, float *dst, unsigned int nquads)
float get_squaremax(float *d, unsigned int nquads)
double tanh7_double(double x)
Definition: basic_dsp.h:182
__m128 fastexpSSE(__m128 x) noexcept
Definition: FastMath.h:203
static constexpr int FIRipol_M
Definition: SincTable.h:12
@ multimode
Definition: OBXDFilter.h:40
Definition: FastMath.h:19
constexpr float ota3bp
Definition: TriPoleFilter.h:36
@ thr_b0
Definition: TriPoleFilter.h:286
T limit01(const T &x)
Definition: basic_dsp.h:14
void FromDirect(const float(&N)[n_cm_coeffs])
Creates filter coefficients directly from an array.
Definition: FilterCoefficientMaker_Impl.h:658
void hardclip_block(float *x, unsigned int nquads)
@ dlf_z2
Definition: DiodeLadder.h:69
@ SAT_TANH
Definition: CutoffWarp.h:33
@ st_cutoffwarp_tanh1
Cutoff Warp - 1 Stage tanh.
Definition: FilterConfiguration.h:262
__m128 clip(__m128 value, __m128 _saturation, __m128 _saturationinverse)
Definition: VintageLadders.h:135
short sinctableI16[(FIRipol_M+1) *FIRipolI16_N]
Definition: SincTable.h:21
@ nls_z7
Definition: ResonanceWarp.h:85
@ st_cutoffwarp_softclip3
Cutoff Warp - 3 Stages Soft Clip.
Definition: FilterConfiguration.h:268
@ g24
Definition: OBXDFilter.h:48
__m128 process(QuadFilterUnitState *__restrict f, __m128 input)
Definition: ResonanceWarp.h:145
@ rkm_gComp
Definition: VintageLadders.h:96
@ dlf_G2
Definition: DiodeLadder.h:61
@ h_stageTanh
Definition: VintageLadders.h:303
#define S(a, b)
Definition: TriPoleFilter.h:57
#define F(a)
Definition: DiodeLadder.h:23
void makeCoefficients(FilterCoefficientMaker< TuningProvider > *cm, float freq, float reso, int, float sampleRate, TuningProvider *provider)
Definition: TriPoleFilter.h:309
Definition: FilterCoefficientMaker_Impl.h:33
@ nls_b1
Definition: ResonanceWarp.h:72
@ st_diode_18dB
Diode Ladder - 18 dB.
Definition: FilterConfiguration.h:259
dlf_state
Definition: ResonanceWarp.h:77
constexpr float beta
Definition: TriPoleFilter.h:233
@ st_resonancewarp_softclip2
Resonance Warp - 2 Stages Soft Clip.
Definition: FilterConfiguration.h:280
nls_coeffs
Definition: ResonanceWarp.h:67
float rcp(float x)
Definition: basic_dsp.h:71
double Map4PoleResonance(double reso, double freq, int subtype)
Definition: FilterCoefficientMaker_Impl.h:281
Definition: FilterPlotter.h:23
#define A(a, b)
Definition: VintageLadders.h:132
@ k35_2z
Definition: K35Filter.h:64
#define F(a)
Definition: CutoffWarp.h:26
@ st_lpmoog_18dB
Legacy Ladder - 18 dB.
Definition: FilterConfiguration.h:254
@ nlf_a1
Definition: CutoffWarp.h:105
DSP code for Surge filters.
Definition: CutoffWarp.h:15
@ thr_x1
Definition: TriPoleFilter.h:301
#define M(a, b)
Definition: K35Filter.h:24
@ dlf_G1
Definition: DiodeLadder.h:62
void makeCoefficients(FilterCoefficientMaker< TuningProvider > *cm, Poles p, float freq, float reso, int sub, float sampleRateInv, TuningProvider *provider)
Definition: OBXDFilter.h:84
const char filter_menu_names[num_filter_types][32]
Definition: FilterConfiguration.h:92
void makeCoefficients(FilterCoefficientMaker< TuningProvider > *cm, float freq, float reso, float sampleRate, float sampleRateInv, bool applyGainCompensation, TuningProvider *provider)
Definition: VintageLadders.h:310
static constexpr int FIRipol_M_bits
Definition: SincTable.h:13
float fasttan(float x) noexcept
Definition: FastMath.h:160
__m128 fasttanhSSE(__m128 x)
Definition: FastMath.h:168
@ nls_z1
Definition: ResonanceWarp.h:79
const char fut_nlf_subtypes[4][32]
Definition: FilterConfiguration.h:176
float get1f(__m128 m, int i)
Definition: FilterCoefficientMaker_Impl.h:37
float megapanR(float pos)
Definition: basic_dsp.h:246
@ nlf_z2
Definition: CutoffWarp.h:117
#define M(a, b)
Definition: CutoffWarp.h:27
@ fut_cutoffwarp_bp
Bandpass - Cutoff Warp.
Definition: FilterConfiguration.h:28
void softclip_block(float *in, unsigned int nquads)
@ h_cutoff
Definition: VintageLadders.h:292
@ rcor24inv
Definition: OBXDFilter.h:51
@ st_tripole_HHH2
High -> High -> High, second.
Definition: FilterConfiguration.h:291
float inputAmplitude
Definition: FilterPlotter.h:19
#define A(a, b)
Definition: DiodeLadder.h:26
__m128 process(QuadFilterUnitState *__restrict f, __m128 in)
Definition: VintageLadders.h:338
void load_coefficients()
Definition: HalfRateFilter.h:481
@ SAT_SOFT
Definition: ResonanceWarp.h:37
@ dlf_gamma
Definition: DiodeLadder.h:57
@ s1
Definition: OBXDFilter.h:60
constexpr float ota2bp
Definition: TriPoleFilter.h:34
__m128 diodePairResistanceApprox(__m128 x)
Definition: OBXDFilter.h:137
const char fut_nlf_saturators[4][16]
Definition: FilterConfiguration.h:183
const __m128 one_three_five
Definition: OBXDFilter.h:77
@ fut_resonancewarp_n
Notch - Resonance Warp.
Definition: FilterConfiguration.h:39
__m128 hardclip_ps(__m128 x)
Definition: basic_dsp.h:84
Poles
Definition: OBXDFilter.h:30
float megapanL(float pos)
Definition: basic_dsp.h:237
@ k35_saturation
Definition: K35Filter.h:55
@ nlf_z8
Definition: CutoffWarp.h:123
Saturator
Definition: CutoffWarp.h:31
const __m128 m128_half
Definition: shared.h:18
float boundFreq(float freq)
Definition: FilterCoefficientMaker_Impl.h:249
__m128 process(QuadFilterUnitState *__restrict f, __m128 in)
Definition: TriPoleFilter.h:339
@ st_resonancewarp_softclip3
Resonance Warp - 3 Stages Soft Clip.
Definition: FilterConfiguration.h:281
@ fut_resonancewarp_lp
Lowpass - Resonance Warp.
Definition: FilterConfiguration.h:37
@ st_lpmoog_12dB
Legacy Ladder - 12 dB.
Definition: FilterConfiguration.h:253
@ nls_z4
Definition: ResonanceWarp.h:82
@ dlf_z1
Definition: DiodeLadder.h:68
@ st_tripole_HLH3
High -> Low -> High, third.
Definition: FilterConfiguration.h:294
#define S(a, b)
Definition: VintageLadders.h:133
@ fut_cutoffwarp_hp
Higghpass - Cutoff Warp.
Definition: FilterConfiguration.h:26
T db_to_linear(T in)
Definition: FilterCoefficientMaker_Impl.h:13
void makeCoefficients(FilterCoefficientMaker< TuningProvider > *cm, float freq, float reso, int type, int subtype, float sampleRate, TuningProvider *provider)
Definition: CutoffWarp.h:127
__m128 IIR12CFCquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:293
@ dlf_alpha
Definition: DiodeLadder.h:56
const __m128 nine_two_zero
Definition: OBXDFilter.h:69
@ st_resonancewarp_tanh2
Resonance Warp - 2 Stages tanh.
Definition: FilterConfiguration.h:276
__m128 abs_ps(__m128 x)
Definition: basic_dsp.h:165
@ st_diode_6dB
Diode Ladder - 6 dB.
Definition: FilterConfiguration.h:257
float * DB[4]
Array of pointers to the filter's delay buffers.
Definition: QuadFilterUnit.h:27
@ fut_bp12
Bandpass - 12 dB.
Definition: FilterConfiguration.h:15
constexpr float res_gain
Definition: TriPoleFilter.h:24
@ st_resonancewarp_tanh3
Resonance Warp - 3 Stages tanh.
Definition: FilterConfiguration.h:277
__m128 process_hp(QuadFilterUnitState *__restrict f, __m128 input)
Definition: K35Filter.h:136
__m128 IIR24CFCquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:366
void reset()
Definition: HalfRateFilter.h:624
T limitpm1(const T &x)
Definition: basic_dsp.h:15
const __m128 zero_four_five
Definition: OBXDFilter.h:74
#define S(a, b)
Definition: ResonanceWarp.h:32
constexpr float one
Definition: TriPoleFilter.h:240
@ st_cutoffwarp_ojd1
Cutoff Warp - 1 Stage OJD.
Definition: FilterConfiguration.h:270
@ dlf_z4
Definition: DiodeLadder.h:71
float sampleRate
Definition: FilterPlotter.h:16
constexpr float out_gain
Definition: TriPoleFilter.h:26
@ st_diode_12dB
Diode Ladder - 12 dB.
Definition: FilterConfiguration.h:258
@ dlf_feedback3
Definition: DiodeLadder.h:72
@ st_tripole_HLH1
High -> Low -> High, first.
Definition: FilterConfiguration.h:286
@ st_Medium
(Unused)
Definition: FilterConfiguration.h:247
@ rcor24
Definition: OBXDFilter.h:50
const __m128 one_eight_five
Definition: OBXDFilter.h:73
@ st_cutoffwarp_softclip2
Cutoff Warp - 2 Stages Soft Clip.
Definition: FilterConfiguration.h:267
const char fut_obxd_2p_subtypes[2][32]
Definition: FilterConfiguration.h:162
@ st_lpmoog_24dB
Legacy Ladder - 24 dB.
Definition: FilterConfiguration.h:255
@ fut_SNH
Effect - Sample & Hold.
Definition: FilterConfiguration.h:18
@ fut_hp24
Highpass - 24 dB.
Definition: FilterConfiguration.h:14
This namespace contains an adaptation of the filter from https://github.com/TheWaveWarden/odin2/blob/...
Definition: K35Filter.h:12
@ fut_lpmoog
Lowpass - Legacy Ladder.
Definition: FilterConfiguration.h:12
void float2i15_block(float *, short *, int)
@ h_gComp
Definition: VintageLadders.h:295
__m128 IIR12CFLquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:325
const __m128 zero_five
Definition: OBXDFilter.h:75
This filter is an emulation of the "Threeler" VCF by Ian Fritz (https://ijfritz.byethost4....
Definition: TriPoleFilter.h:22
Definition: HalfRateFilter.h:13
#define M(a, b)
Definition: TriPoleFilter.h:54
constexpr float bias
Definition: TriPoleFilter.h:236
@ dlf_feedback2
Definition: DiodeLadder.h:73
@ bandpass
Definition: OBXDFilter.h:41
#define S(a, b)
Definition: K35Filter.h:27
__m128 R[n_filter_registers]
Filter state.
Definition: QuadFilterUnit.h:24
INTERFACE target_include_directories(${PROJECT_NAME} INTERFACE include) if(MSVC) target_compile_definitions($
Definition: CMakeLists.txt:7
SincTable()
Definition: SincTable.h:37
@ fut_lp24
Lowpass - 24 dB.
Definition: FilterConfiguration.h:11
double softclip8_double(double in)
Definition: basic_dsp.h:219
@ EXTENDED_COMB
Definition: QuadFilterUnit.h:61
@ fut_notch12
Notch - 12 dB.
Definition: FilterConfiguration.h:16
@ pole_mix_scaled
Definition: OBXDFilter.h:54
@ R12
Definition: OBXDFilter.h:39
float fastsin(float x) noexcept
Definition: FastMath.h:24
double Map2PoleResonance_noboost(double reso, double, int subtype)
Definition: FilterCoefficientMaker_Impl.h:271
void process_block_U2(float *floatL_in, float *floatR_in, float *floatL, float *floatR, int nsamples)
Definition: HalfRateFilter.h:370
float sampleRateInv
Reciprocal of the sample rate.
Definition: QuadFilterUnit.h:39
void processCoeffs(QuadFilterUnitState *__restrict f)
Definition: K35Filter.h:108
const char fut_comb_subtypes[2][64]
Definition: FilterConfiguration.h:137
__m128 fasttanhSSEclamped(__m128 x)
Definition: FastMath.h:187
constexpr float Iabc
Definition: TriPoleFilter.h:40
@ st_tripole_HHH1
High -> High -> High, first.
Definition: FilterConfiguration.h:287
@ fut_bp24
Bandpass - 24 dB.
Definition: FilterConfiguration.h:32
@ nlf_b0
Definition: CutoffWarp.h:107
@ fut_obxd_2pole_hp
Highpass - OB-Xd 12 dB.
Definition: FilterConfiguration.h:29
@ rkm_cutoff
Definition: VintageLadders.h:94
@ st_lpmoog_6dB
Legacy Ladder - 6 dB.
Definition: FilterConfiguration.h:252
constexpr float in_gain
Definition: TriPoleFilter.h:25
@ thr_z1
Definition: TriPoleFilter.h:300
@ dlf_G3
Definition: DiodeLadder.h:60
__m128 softclip_ps(__m128 in)
Definition: basic_dsp.h:118
std::pair< std::vector< float >, std::vector< float > > plotFilterMagnitudeResponse(sst::filters::FilterType filterType, sst::filters::FilterSubType filterSubType, float pitch, float res, const FilterPlotParameters ¶ms={})
Definition: FilterPlotter.h:29
constexpr float max_val
Definition: TriPoleFilter.h:238
const float betaExpOverMult
Definition: TriPoleFilter.h:242
const __m128 one
Definition: OBXDFilter.h:76
void set_coefficients(float *cA, float *cB)
Definition: HalfRateFilter.h:616
@ nls_a1
Definition: ResonanceWarp.h:69
@ pole_mix_inv_int
Definition: OBXDFilter.h:53
@ st_tripole_HHH3
High -> High -> High, third.
Definition: FilterConfiguration.h:295
@ h_fc
Definition: VintageLadders.h:294
@ thr_a2
Definition: TriPoleFilter.h:291
Class for creating filter coefficients.
Definition: FilterCoefficientMaker.h:22
Definition: FilterPlotter.h:14
double softclip2_double(double in)
Definition: basic_dsp.h:228
FilterCoefficientMaker()
Default constructor.
Definition: FilterCoefficientMaker_Impl.h:17
float dC[n_cm_coeffs]
Filter coefficients "delta" to update current coefficients.
Definition: FilterCoefficientMaker.h:66
__m128 SVFLP12Aquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:18
constexpr float oneOverMult
Definition: TriPoleFilter.h:241
Parent namespace for all Surge Synth Team code.
Definition: CutoffWarp.h:15
@ fut_resonancewarp_ap
Effect - Resonance Warp Allpass.
Definition: FilterConfiguration.h:41
@ st_cutoffwarp_softclip1
Cutoff Warp - 1 Stage Soft Clip.
Definition: FilterConfiguration.h:266
const __m128 gainAdjustment2Pole
Definition: OBXDFilter.h:80
void accumulate_block(float *src, float *dst, unsigned int nquads)
@ R24
Definition: OBXDFilter.h:49
@ nlf_makeup
Definition: CutoffWarp.h:110
const __m128 eight_seven_six
Definition: OBXDFilter.h:71
__m128 SVFBP12Aquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:182
@ st_tripole_LLL1
Low -> Low -> Low, first.
Definition: FilterConfiguration.h:284
@ nls_b0
Definition: ResonanceWarp.h:71
void setSampleRateAndBlockSize(float newSampleRate, int newBlockSize)
Sets the sample rate and block size to use for processing the filters.
Definition: FilterCoefficientMaker_Impl.h:23
@ SAT_OJD
Definition: CutoffWarp.h:35
@ num_filter_types
Definition: FilterConfiguration.h:43
__m128 SVFHP24Aquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:81
__m128 SVFHP12Aquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:157
constexpr float smooth
Definition: FilterCoefficientMaker_Impl.h:15
#define A(a, b)
Definition: CutoffWarp.h:28
constexpr float Rload
Definition: TriPoleFilter.h:41
@ fut_cutoffwarp_lp
Lowpass - Cutoff Warp.
Definition: FilterConfiguration.h:25
Definition: HalfRateFilter.h:7
__m128 IIR12Aquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:207
__m128 hardclip_ss(__m128 x)
Definition: basic_dsp.h:64
constexpr int MAX_FB_COMB_EXTENDED
Definition: globals.h:43
This namespace contains an adaptation of the filter from https://github.com/reales/OB-Xd/blob/master/...
Definition: OBXDFilter.h:28
const __m128 one_zero_three
Definition: OBXDFilter.h:72
void encodeMS(float *L, float *R, float *M, float *S, unsigned int nquads)
FilterUnitQFPtr GetQFPtrFilterUnit(FilterType type, FilterSubType subtype)
Returns a filter unit pointer for a given filter type and sub-type.
Definition: QuadFilterUnit_Impl.h:591
@ fut_cutoffwarp_n
Notch - Cutoff Warp.
Definition: FilterConfiguration.h:27
const __m128 m128_one
Definition: shared.h:19
@ thr_fb
Definition: TriPoleFilter.h:304
@ rkm_reso
Definition: VintageLadders.h:95
const char fut_obxd_4p_subtypes[4][32]
Definition: FilterConfiguration.h:164
@ h_res
Definition: VintageLadders.h:293
float saturate(float f)
Definition: basic_dsp.h:91
const __m128 m128_zero
Definition: shared.h:17
float fasttanh(float x) noexcept
Definition: FastMath.h:151
__m128 SVFBP24Aquad(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:119
@ nlf_b2
Definition: CutoffWarp.h:109
@ st_tripole_LHL2
Low -> High -> Low, second.
Definition: FilterConfiguration.h:289
void updateState(StateType &state, int channel=-1)
Update the coefficients in a filter state.
Definition: FilterCoefficientMaker_Impl.h:42
void i152float_block(short *, float *, int)
#define N(a)
Definition: TriPoleFilter.h:58
@ nls_a2
Definition: ResonanceWarp.h:70
void calculateDerivatives(__m128 input, __m128 *dstate, __m128 *state, __m128 cutoff, __m128 resonance, __m128 _saturation, __m128 _saturationInv, __m128 gComp)
Definition: VintageLadders.h:147
void hardclip_block8(float *x, unsigned int nquads)
nlf_coeffs
Definition: CutoffWarp.h:103
@ s2
Definition: OBXDFilter.h:61
QFUSubtypeMasks
Definition: QuadFilterUnit.h:58
@ fut_obxd_2pole_lp
Lowpass - OB-Xd 12 dB.
Definition: FilterConfiguration.h:20
@ nlf_z3
Definition: CutoffWarp.h:118
@ k35_saturation_blend_inv
Definition: K35Filter.h:57
Obxd12dBCoeff
Definition: OBXDFilter.h:36
const __m128 gainAdjustment4Pole
Definition: OBXDFilter.h:81
const char fut_k35_subtypes[5][32]
Definition: FilterConfiguration.h:171
@ nlf_b1
Definition: CutoffWarp.h:108
@ fut_vintageladder
Lowpass - Vintage Ladder.
Definition: FilterConfiguration.h:19
@ st_tripole_LHL1
Low -> High -> Low, first.
Definition: FilterConfiguration.h:285
__m128 C[n_cm_coeffs]
Filter coefficients.
Definition: QuadFilterUnit.h:18
float get_absmax(float *d, unsigned int nquads)
@ thr_z2
Definition: TriPoleFilter.h:302
void copy_block_US(float *src, float *dst, unsigned int nquads)
thr_state
Definition: TriPoleFilter.h:296
__m128 fastcosSSE(__m128 x) noexcept
Definition: FastMath.h:81
@ fut_obxd_2pole_n
Notch - OB-Xd 12 dB.
Definition: FilterConfiguration.h:30
constexpr int n_filter_registers
Max number of registers stored in each filter state.
Definition: QuadFilterUnit.h:12
int active[4]
0xffffffff if voice is active, 0 if not (usable as mask)
Definition: QuadFilterUnit.h:30
@ fut_resonancewarp_bp
Bandpass - Resonance Warp.
Definition: FilterConfiguration.h:40
const __m128 three
Definition: OBXDFilter.h:79
@ st_cutoffwarp_tanh4
Cutoff Warp - 4 Stages tanh.
Definition: FilterConfiguration.h:265
T resoscale(T reso, int subtype)
Definition: FilterCoefficientMaker_Impl.h:298
@ fut_resonancewarp_hp
Highpass - Resonance Warp.
Definition: FilterConfiguration.h:38
void decodeMS(float *M, float *S, float *L, float *R, unsigned int nquads)
@ thr_b1
Definition: TriPoleFilter.h:288
void set1f(__m128 &m, int i, float f)
Definition: FilterCoefficientMaker_Impl.h:35
constexpr float ota2bn
Definition: TriPoleFilter.h:35
@ self_osc_push
Definition: OBXDFilter.h:42
@ nlf_a2
Definition: CutoffWarp.h:106
@ st_Driven
Driven.
Definition: FilterConfiguration.h:245
@ fut_comb_neg
Effect - Comb -.
Definition: FilterConfiguration.h:34
This namespace contains an adaptation of the filter from https://github.com/TheWaveWarden/odin2/blob/...
Definition: DiodeLadder.h:12
@ k35_hb
Definition: K35Filter.h:52
@ st_cutoffwarp_ojd3
Cutoff Warp - 3 Stages OJD.
Definition: FilterConfiguration.h:272
const float beta_exp
Definition: TriPoleFilter.h:234
@ st_tripole_HLH2
High -> Low -> High, second.
Definition: FilterConfiguration.h:290
This contains various adaptations of the models found at.
Definition: VintageLadders.h:20
HalfRateFilter(int M, bool steep)
Implement a half rate up/down filter.
Definition: HalfRateFilter.h:36
T limit_range(const T &x, const T &low, const T &high)
Definition: basic_dsp.h:9
Obxd24dBCoeff
Definition: OBXDFilter.h:46
float freqSmoothOctaves
Definition: FilterPlotter.h:20
void clear_block(float *in, unsigned int nquads)
@ st_cutoffwarp_tanh3
Cutoff Warp - 3 Stages tanh.
Definition: FilterConfiguration.h:264
Saturator
Definition: ResonanceWarp.h:34
Params
Definition: OBXDFilter.h:58
@ fut_apf
Effect - Allpass.
Definition: FilterConfiguration.h:35
@ SAT_TANH
Definition: ResonanceWarp.h:36
@ g12
Definition: OBXDFilter.h:38
void copy_block_USUD(float *src, float *dst, unsigned int nquads)
@ nlf_z7
Definition: CutoffWarp.h:122
@ st_cutoffwarp_ojd2
Cutoff Warp - 2 Stages OJD.
Definition: FilterConfiguration.h:271
@ k35_G
Definition: K35Filter.h:50
@ dlf_feedback1
Definition: DiodeLadder.h:74
const char fut_notch_subtypes[2][32]
Definition: FilterConfiguration.h:132
@ k35_hz
Definition: K35Filter.h:63
void clear_block_antidenormalnoise(float *in, unsigned int nquads)
thr_coeffs
Definition: TriPoleFilter.h:284
@ st_tripole_LLL2
Low -> Low -> Low, second.
Definition: FilterConfiguration.h:288
@ fut_none
Off.
Definition: FilterConfiguration.h:9
@ nls_z5
Definition: ResonanceWarp.h:83
constexpr float ota1bn
Definition: TriPoleFilter.h:33
void process_block_D2(float *floatL, float *floatR, int nsamples, float *outL=0, float *outR=0)
Definition: HalfRateFilter.h:146
float sinctable1X[(FIRipol_M+1) *FIRipol_N]
Definition: SincTable.h:20
@ fut_cutoffwarp_ap
Effect - Cutoff Warp Allpass.
Definition: FilterConfiguration.h:36
void makeCoefficients(FilterCoefficientMaker< TuningProvider > *cm, float freq, float reso, float sampleRate, float sampleRateInv, TuningProvider *provider)
Definition: DiodeLadder.h:78
float sine_ss(unsigned int x)
@ k35_lz
Definition: K35Filter.h:62
@ st_diode_24dB
Diode Ladder - 24 dB.
Definition: FilterConfiguration.h:260
float get_absmax_2(float *d1, float *d2, unsigned int nquads)
__m128 tanh7_ss(__m128 x)
Definition: basic_dsp.h:150
@ k35_saturation_blend
Definition: K35Filter.h:56
@ k35_k
Definition: K35Filter.h:53
dlf_state
Definition: DiodeLadder.h:66
huov_regoffsets
Definition: VintageLadders.h:300
void makeCoefficients(FilterCoefficientMaker< TuningProvider > *cm, float freq, float reso, int type, float sampleRate, TuningProvider *provider)
Definition: ResonanceWarp.h:90
@ s3
Definition: OBXDFilter.h:62
float i2f_binary_cast(int i)
Definition: shared.h:9
@ n_obxd24_coeff
Definition: OBXDFilter.h:55
double Map2PoleResonance(double reso, double freq, int subtype)
Definition: FilterCoefficientMaker_Impl.h:251
@ thr_z0
Definition: TriPoleFilter.h:298
@ pole_mix
Definition: OBXDFilter.h:52
__m128 COMBquad_SSE2(QuadFilterUnitState *__restrict f, __m128 in)
Definition: QuadFilterUnit_Impl.h:528