1 #define ST2095_MAX_PEAK -9.5 // dB 2 #define ST2095_HPFC 10.0 // Highpass filter cutoff in Hz 3 #define ST2095_LPFC 22400.0 // Lowpass filter cutoff in Hz 4 5 typedef struct 6 { 7 float maxAmp; 8 int samplesPerPeriod; 9 int randStep; 10 int randMax; 11 int seed; 12 float scaleFactor; 13 float w0t; 14 float k; 15 float k2; 16 float LpFc; 17 // biquad coefficients 18 float hp1_a1, hp1_a2; 19 float hp1_b0, hp1_b1, hp1_b2; 20 float hp2_a1, hp2_a2; 21 float hp2_b0, hp2_b1, hp2_b2; 22 float lp1_a1, lp1_a2; 23 float lp1_b0, lp1_b1, lp1_b2; 24 float lp2_a1, lp2_a2; 25 float lp2_b0, lp2_b1, lp2_b2; 26 // delay-line variables for bandpass filter 27 float hp1w1, hp1w2; 28 float hp2w1, hp2w2; 29 float lp1w1, lp1w2; 30 float lp2w1, lp2w2; 31 // delay-line variables for pink filter network 32 float lp1, lp2, lp3, lp4, lp5, lp6; 33 // statistics accumulator 34 float accum; 35 } st2095_noise_t; 36 37 void initialize_st2095_noise( st2095_noise_t *st2095, int sample_rate ); 38 float generate_st2095_noise_sample( st2095_noise_t *st2095 ); 39 40 void reset_st2095_noise_measurement( st2095_noise_t *st2095 ); 41 float compute_st2095_noise_measurement( st2095_noise_t *st2095, int period ); 42