Ulf@546: #include Ulf@546: Ulf@538: #include "CARFAC.h" Ulf@538: #include "CAR.h" Ulf@538: #include "IHC.h" Ulf@538: #include "AGC.h" Ulf@564: #include "Ear.h" Ulf@587: #include "unit_conversion.h" Ulf@545: #include "CARFAC_common.h" Ulf@538: Ulf@586: CARFAC::CARFAC(int fs, Ulf@586: CAR_parameters* car_params, Ulf@586: IHC_parameters* ihc_params, Ulf@586: AGC_parameters* agc_params, Ulf@586: int n_ears){ Ulf@538: Ulf@564: fs_ = fs; Ulf@538: Ulf@545: float pole_hz = car_params->first_pole_theta_* fs / (2*kPi); Ulf@545: while (pole_hz > car_params->min_pole_hz_){ Ulf@547: pole_freqs_.push_back(pole_hz); // TODO: STL specific Ulf@545: pole_hz = pole_hz - car_params->erb_per_step_ * Ulf@555: ERB_Hz(pole_hz, car_params->erb_break_freq_, Ulf@555: car_params->erb_q_); Ulf@545: } Ulf@547: n_ch_ = pole_freqs_.size(); Ulf@546: max_channels_per_octave_ = log(2) / log(pole_freqs_[0]/pole_freqs_[1]); Ulf@546: Ulf@564: n_ears_ = n_ears; Ulf@586: Ear ear = Ear(car_params, ihc_params, agc_params, pole_freqs_, n_ch_, fs); Ulf@586: ears_.assign(n_ears_, ear); Ulf@545: }