sst-filters
Filters submodule for the Surge Synthesizer
Namespaces | Classes | Functions | Variables
sst::filters::utilities Namespace Reference

Utility code needed for Surge filters. More...

Namespaces

 DSP
 

Classes

struct  SincTable
 Lookup table for evaluating the Sinc function. More...
 

Functions

template<typename T >
limit_range (const T &x, const T &low, const T &high)
 
template<typename T >
limit01 (const T &x)
 
template<typename 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)
 

Detailed Description

Utility code needed for Surge filters.

Note that this code may be moved to a submodule at some point in the future.

Function Documentation

◆ limit_range()

T sst::filters::utilities::limit_range ( const T &  x,
const T &  low,
const T &  high 
)

◆ limit01()

T sst::filters::utilities::limit01 ( const T &  x)

References limit_range().

◆ limitpm1()

T sst::filters::utilities::limitpm1 ( const T &  x)

References limit_range().

◆ hardclip_block()

void sst::filters::utilities::hardclip_block ( float *  x,
unsigned int  nquads 
)

◆ hardclip_block8()

void sst::filters::utilities::hardclip_block8 ( float *  x,
unsigned int  nquads 
)

◆ softclip_block()

void sst::filters::utilities::softclip_block ( float *  in,
unsigned int  nquads 
)

◆ tanh7_block()

void sst::filters::utilities::tanh7_block ( float *  x,
unsigned int  nquads 
)

◆ clear_block()

void sst::filters::utilities::clear_block ( float *  in,
unsigned int  nquads 
)

◆ clear_block_antidenormalnoise()

void sst::filters::utilities::clear_block_antidenormalnoise ( float *  in,
unsigned int  nquads 
)

◆ accumulate_block()

void sst::filters::utilities::accumulate_block ( float *  src,
float *  dst,
unsigned int  nquads 
)

◆ copy_block()

void sst::filters::utilities::copy_block ( float *  src,
float *  dst,
unsigned int  nquads 
)

◆ copy_block_US()

void sst::filters::utilities::copy_block_US ( float *  src,
float *  dst,
unsigned int  nquads 
)

◆ copy_block_UD()

void sst::filters::utilities::copy_block_UD ( float *  src,
float *  dst,
unsigned int  nquads 
)

◆ copy_block_USUD()

void sst::filters::utilities::copy_block_USUD ( float *  src,
float *  dst,
unsigned int  nquads 
)

◆ mul_block() [1/2]

void sst::filters::utilities::mul_block ( float *  src1,
float *  src2,
float *  dst,
unsigned int  nquads 
)

◆ mul_block() [2/2]

void sst::filters::utilities::mul_block ( float *  src1,
float  scalar,
float *  dst,
unsigned int  nquads 
)

◆ add_block()

void sst::filters::utilities::add_block ( float *  src1,
float *  src2,
float *  dst,
unsigned int  nquads 
)

◆ subtract_block()

void sst::filters::utilities::subtract_block ( float *  src1,
float *  src2,
float *  dst,
unsigned int  nquads 
)

◆ encodeMS()

void sst::filters::utilities::encodeMS ( float *  L,
float *  R,
float *  M,
float *  S,
unsigned int  nquads 
)

◆ decodeMS()

void sst::filters::utilities::decodeMS ( float *  M,
float *  S,
float *  L,
float *  R,
unsigned int  nquads 
)

◆ get_absmax()

float sst::filters::utilities::get_absmax ( float *  d,
unsigned int  nquads 
)

◆ get_squaremax()

float sst::filters::utilities::get_squaremax ( float *  d,
unsigned int  nquads 
)

◆ get_absmax_2()

float sst::filters::utilities::get_absmax_2 ( float *  d1,
float *  d2,
unsigned int  nquads 
)

◆ float2i15_block()

void sst::filters::utilities::float2i15_block ( float *  ,
short *  ,
int   
)

◆ i152float_block()

void sst::filters::utilities::i152float_block ( short *  ,
float *  ,
int   
)

◆ i16toi15_block()

void sst::filters::utilities::i16toi15_block ( short *  ,
short *  ,
int   
)

◆ sine_ss()

float sst::filters::utilities::sine_ss ( unsigned int  x)

◆ sine()

int sst::filters::utilities::sine ( int  x)

◆ sum_ps_to_ss()

__m128 sst::filters::utilities::sum_ps_to_ss ( __m128  x)

◆ max_ps_to_ss()

__m128 sst::filters::utilities::max_ps_to_ss ( __m128  x)

◆ hardclip_ss()

__m128 sst::filters::utilities::hardclip_ss ( __m128  x)

◆ rcp()

float sst::filters::utilities::rcp ( float  x)

◆ hardclip8_sd()

__m128d sst::filters::utilities::hardclip8_sd ( __m128d  x)

◆ hardclip_ps()

__m128 sst::filters::utilities::hardclip_ps ( __m128  x)

◆ saturate()

float sst::filters::utilities::saturate ( float  f)

◆ softclip_ss()

__m128 sst::filters::utilities::softclip_ss ( __m128  in)

◆ softclip_ps()

__m128 sst::filters::utilities::softclip_ps ( __m128  in)

◆ tanh7_ps()

__m128 sst::filters::utilities::tanh7_ps ( __m128  x)

◆ tanh7_ss()

__m128 sst::filters::utilities::tanh7_ss ( __m128  x)

◆ abs_ps()

__m128 sst::filters::utilities::abs_ps ( __m128  x)

References m128_mask_absval.

◆ softclip8_ps()

__m128 sst::filters::utilities::softclip8_ps ( __m128  in)

◆ tanh7_double()

double sst::filters::utilities::tanh7_double ( double  x)

◆ softclip_double()

double sst::filters::utilities::softclip_double ( double  in)

◆ softclip4_double()

double sst::filters::utilities::softclip4_double ( double  in)

◆ softclip8_double()

double sst::filters::utilities::softclip8_double ( double  in)

◆ softclip2_double()

double sst::filters::utilities::softclip2_double ( double  in)

◆ megapanL()

float sst::filters::utilities::megapanL ( float  pos)

◆ megapanR()

float sst::filters::utilities::megapanR ( float  pos)

◆ i2f_binary_cast()

float sst::filters::utilities::i2f_binary_cast ( int  i)

Variable Documentation

◆ MAX_FB_COMB

constexpr int MAX_FB_COMB = 2048
constexpr

◆ MAX_FB_COMB_EXTENDED

constexpr int MAX_FB_COMB_EXTENDED = 2048 * 64
constexpr

◆ m128_mask_signbit

const __m128 m128_mask_signbit = _mm_set1_ps(i2f_binary_cast(0x80000000))

◆ m128_mask_absval

const __m128 m128_mask_absval = _mm_set1_ps(i2f_binary_cast(0x7fffffff))

◆ m128_zero

const __m128 m128_zero = _mm_set1_ps(0.0f)

◆ m128_half

const __m128 m128_half = _mm_set1_ps(0.5f)

◆ m128_one

const __m128 m128_one = _mm_set1_ps(1.0f)

◆ m128_two

const __m128 m128_two = _mm_set1_ps(2.0f)

◆ m128_four

const __m128 m128_four = _mm_set1_ps(4.0f)

◆ m128_1234

const __m128 m128_1234 = _mm_set_ps(1.f, 2.f, 3.f, 4.f)

◆ m128_0123

const __m128 m128_0123 = _mm_set_ps(0.f, 1.f, 2.f, 3.f)