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