Ulf@538: #include "CAR.h" Ulf@545: #include "CARFAC_common.h" Ulf@548: #include "CARFAC.h" Ulf@547: #include Ulf@538: Ulf@564: CAR_coefficients::CAR_coefficients(CAR_parameters* car_params_p, float fs, Ulf@545: FloatArray pole_freqs){ Ulf@547: Ulf@564: float f = pow(car_params_p->zero_ratio_, 2) + 1; Ulf@547: Ulf@555: // TODO: dirty FloatArray initialization. Ulf@548: r1_coeffs_= pole_freqs; Ulf@548: a0_coeffs_= pole_freqs; Ulf@548: c0_coeffs_= pole_freqs; Ulf@548: h_coeffs_= pole_freqs; Ulf@548: g0_coeffs_= pole_freqs; Ulf@548: zr_coeffs_= pole_freqs; Ulf@548: Ulf@547: FloatArray theta = pole_freqs; Ulf@547: Ulf@548: float min_zeta_mod; Ulf@548: float x; Ulf@564: float ff = car_params_p->high_f_damping_compression_; Ulf@548: Ulf@549: // TODO: temp loop until we get eigen in (or we just leave it like this) Ulf@549: for(float i=0; imin_zeta_ + 0.25 * (CARFAC::ERB_Hz( Ulf@564: pole_freqs[i], car_params_p->erb_break_freq_, Ulf@564: car_params_p->erb_q_) / pole_freqs[i] Ulf@564: - car_params_p->min_zeta_)); Ulf@555: Ulf@548: r1_coeffs_[i] = 1-zr_coeffs_[i]*min_zeta_mod; Ulf@548: Ulf@548: h_coeffs_[i] = c0_coeffs_[i] * f; Ulf@549: Ulf@550: //TODO: g0_coeffs_ calculated here for now. Let's talk about this, need Ulf@550: // to see the whole picture of what makes sense. Ulf@550: // Related: I believe CAR, IHC and AGC classes would be beneficial! Ulf@550: float tmp = 1 - 2*r1_coeffs_[i]*a0_coeffs_[i] + r1_coeffs_[i]*r1_coeffs_[i]; Ulf@550: g0_coeffs_[i] = tmp / ( tmp + h_coeffs_[i]*r1_coeffs_[i]*c0_coeffs_[i]); Ulf@547: } Ulf@547: Ulf@538: } Ulf@538: Ulf@545: CAR_coefficients::~CAR_coefficients(){ Ulf@544: // TODO Auto-generated destructor stub Ulf@538: }