- { 60, 0.003013, 0.993973, 1.993901 },
- { 170, 0.008490, 0.983019, 1.982437 },
- { 310, 0.015374, 0.969252, 1.967331 },
- { 600, 0.029328, 0.941343, 1.934254 },
- { 1000, 0.047918, 0.904163, 1.884869 },
- { 3000, 0.130408, 0.739184, 1.582718 },
- { 6000, 0.226555, 0.546889, 1.015267 },
- { 12000, 0.344937, 0.310127, -0.181410 },
- { 14000, 0.366438, 0.267123, -0.521151 },
- { 16000, 0.379009, 0.241981, -0.808451 },
- }
-};
-static const eqz_config_t eqz_config_48000_10b =
-{
- 10,
- {
- { 60, 0.002769, 0.994462, 1.994400 },
- { 170, 0.007806, 0.984388, 1.983897 },
- { 310, 0.014143, 0.971714, 1.970091 },
- { 600, 0.027011, 0.945978, 1.939979 },
- { 1000, 0.044203, 0.911595, 1.895241 },
- { 3000, 0.121223, 0.757553, 1.623767 },
- { 6000, 0.212888, 0.574224, 1.113145 },
- { 12000, 0.331347, 0.337307, 0.000000 },
- { 14000, 0.355263, 0.289473, -0.333740 },
- { 16000, 0.371900, 0.256201, -0.628100 }
+ float f_freq = f_freq_table_10b[i];
+
+ p_eqz_config->band[i].f_frequency = f_freq;
+
+ if( f_freq <= f_nyquist_freq )
+ {
+ float f_theta_1 = ( 2.0f * (float) M_PI * f_freq ) / f_rate;
+ float f_theta_2 = f_theta_1 / f_octave_factor;
+ float f_sin = sinf( f_theta_2 );
+ float f_sin_prd = sinf( f_theta_2 * f_octave_factor_1 )
+ * sinf( f_theta_2 * f_octave_factor_2 );
+ float f_sin_hlf = f_sin * 0.5f;
+ float f_den = f_sin_hlf + f_sin_prd;
+
+ p_eqz_config->band[i].f_alpha = f_sin_prd / f_den;
+ p_eqz_config->band[i].f_beta = ( f_sin_hlf - f_sin_prd ) / f_den;
+ p_eqz_config->band[i].f_gamma = f_sin * cosf( f_theta_1 ) / f_den;
+ }
+ else
+ {
+ /* Any frequency beyond the Nyquist frequency is no good... */
+ p_eqz_config->band[i].f_alpha =
+ p_eqz_config->band[i].f_beta =
+ p_eqz_config->band[i].f_gamma = 0.0f;
+ }