Utility code needed for Surge filters. More...
Namespaces | |
DSP | |
Classes | |
struct | SincTable |
Lookup table for evaluating the Sinc function. More... | |
Functions | |
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) |
float | i2f_binary_cast (int i) |
Variables | |
constexpr int | MAX_FB_COMB = 2048 |
constexpr int | MAX_FB_COMB_EXTENDED = 2048 * 64 |
const __m128 | m128_mask_signbit = _mm_set1_ps(i2f_binary_cast(0x80000000)) |
const __m128 | m128_mask_absval = _mm_set1_ps(i2f_binary_cast(0x7fffffff)) |
const __m128 | m128_zero = _mm_set1_ps(0.0f) |
const __m128 | m128_half = _mm_set1_ps(0.5f) |
const __m128 | m128_one = _mm_set1_ps(1.0f) |
const __m128 | m128_two = _mm_set1_ps(2.0f) |
const __m128 | m128_four = _mm_set1_ps(4.0f) |
const __m128 | m128_1234 = _mm_set_ps(1.f, 2.f, 3.f, 4.f) |
const __m128 | m128_0123 = _mm_set_ps(0.f, 1.f, 2.f, 3.f) |
Utility code needed for Surge filters.
Note that this code may be moved to a submodule at some point in the future.
T sst::filters::utilities::limit_range | ( | const T & | x, |
const T & | low, | ||
const T & | high | ||
) |
Referenced by sst::filters::VintageLadder::Common::clampedFrequency(), limit01(), limitpm1(), sst::filters::ResonanceWarp::makeCoefficients(), sst::filters::VintageLadder::RK::makeCoefficients(), sst::filters::CutoffWarp::makeCoefficients(), sst::filters::TriPoleFilter::makeCoefficients(), sst::filters::VintageLadder::Huov::makeCoefficients(), sst::filters::Map2PoleResonance(), sst::filters::Map2PoleResonance_noboost(), and sst::filters::Map4PoleResonance().
T sst::filters::utilities::limit01 | ( | const T & | x | ) |
References limit_range().
T sst::filters::utilities::limitpm1 | ( | const T & | x | ) |
References limit_range().
void sst::filters::utilities::hardclip_block | ( | float * | x, |
unsigned int | nquads | ||
) |
void sst::filters::utilities::hardclip_block8 | ( | float * | x, |
unsigned int | nquads | ||
) |
void sst::filters::utilities::softclip_block | ( | float * | in, |
unsigned int | nquads | ||
) |
void sst::filters::utilities::tanh7_block | ( | float * | x, |
unsigned int | nquads | ||
) |
void sst::filters::utilities::clear_block | ( | float * | in, |
unsigned int | nquads | ||
) |
void sst::filters::utilities::clear_block_antidenormalnoise | ( | float * | in, |
unsigned int | nquads | ||
) |
void sst::filters::utilities::accumulate_block | ( | float * | src, |
float * | dst, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::copy_block | ( | float * | src, |
float * | dst, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::copy_block_US | ( | float * | src, |
float * | dst, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::copy_block_UD | ( | float * | src, |
float * | dst, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::copy_block_USUD | ( | float * | src, |
float * | dst, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::mul_block | ( | float * | src1, |
float * | src2, | ||
float * | dst, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::mul_block | ( | float * | src1, |
float | scalar, | ||
float * | dst, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::add_block | ( | float * | src1, |
float * | src2, | ||
float * | dst, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::subtract_block | ( | float * | src1, |
float * | src2, | ||
float * | dst, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::encodeMS | ( | float * | L, |
float * | R, | ||
float * | M, | ||
float * | S, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::decodeMS | ( | float * | M, |
float * | S, | ||
float * | L, | ||
float * | R, | ||
unsigned int | nquads | ||
) |
float sst::filters::utilities::get_absmax | ( | float * | d, |
unsigned int | nquads | ||
) |
float sst::filters::utilities::get_squaremax | ( | float * | d, |
unsigned int | nquads | ||
) |
float sst::filters::utilities::get_absmax_2 | ( | float * | d1, |
float * | d2, | ||
unsigned int | nquads | ||
) |
void sst::filters::utilities::float2i15_block | ( | float * | , |
short * | , | ||
int | |||
) |
void sst::filters::utilities::i152float_block | ( | short * | , |
float * | , | ||
int | |||
) |
void sst::filters::utilities::i16toi15_block | ( | short * | , |
short * | , | ||
int | |||
) |
float sst::filters::utilities::sine_ss | ( | unsigned int | x | ) |
int sst::filters::utilities::sine | ( | int | x | ) |
__m128 sst::filters::utilities::sum_ps_to_ss | ( | __m128 | x | ) |
Referenced by sst::filters::COMBquad_SSE2().
__m128 sst::filters::utilities::max_ps_to_ss | ( | __m128 | x | ) |
__m128 sst::filters::utilities::hardclip_ss | ( | __m128 | x | ) |
float sst::filters::utilities::rcp | ( | float | x | ) |
__m128d sst::filters::utilities::hardclip8_sd | ( | __m128d | x | ) |
__m128 sst::filters::utilities::hardclip_ps | ( | __m128 | x | ) |
float sst::filters::utilities::saturate | ( | float | f | ) |
__m128 sst::filters::utilities::softclip_ss | ( | __m128 | in | ) |
__m128 sst::filters::utilities::softclip_ps | ( | __m128 | in | ) |
Referenced by sst::filters::COMBquad_SSE2(), and sst::filters::SNHquad().
__m128 sst::filters::utilities::tanh7_ps | ( | __m128 | x | ) |
__m128 sst::filters::utilities::tanh7_ss | ( | __m128 | x | ) |
__m128 sst::filters::utilities::abs_ps | ( | __m128 | x | ) |
References m128_mask_absval.
__m128 sst::filters::utilities::softclip8_ps | ( | __m128 | in | ) |
Referenced by sst::filters::LPMOOGquad().
double sst::filters::utilities::tanh7_double | ( | double | x | ) |
References sst::filters::TriPoleFilter::ResWaveshaper::c.
double sst::filters::utilities::softclip_double | ( | double | in | ) |
double sst::filters::utilities::softclip4_double | ( | double | in | ) |
double sst::filters::utilities::softclip8_double | ( | double | in | ) |
double sst::filters::utilities::softclip2_double | ( | double | in | ) |
float sst::filters::utilities::megapanL | ( | float | pos | ) |
float sst::filters::utilities::megapanR | ( | float | pos | ) |
float sst::filters::utilities::i2f_binary_cast | ( | int | i | ) |
|
constexpr |
|
constexpr |
const __m128 m128_mask_signbit = _mm_set1_ps(i2f_binary_cast(0x80000000)) |
const __m128 m128_mask_absval = _mm_set1_ps(i2f_binary_cast(0x7fffffff)) |
Referenced by abs_ps(), sst::filters::IIR12CFLquad(), and sst::filters::IIR24CFLquad().
const __m128 m128_zero = _mm_set1_ps(0.0f) |
const __m128 m128_half = _mm_set1_ps(0.5f) |
const __m128 m128_one = _mm_set1_ps(1.0f) |
const __m128 m128_two = _mm_set1_ps(2.0f) |
const __m128 m128_four = _mm_set1_ps(4.0f) |
const __m128 m128_1234 = _mm_set_ps(1.f, 2.f, 3.f, 4.f) |
const __m128 m128_0123 = _mm_set_ps(0.f, 1.f, 2.f, 3.f) |