Mercurial > hg > aimc
annotate trunk/carfac/ihc.h @ 701:bf89b122a683
Build carfac and sai tests as independent programs.
author | ronw@google.com |
---|---|
date | Mon, 01 Jul 2013 19:02:28 +0000 |
parents | e50aee5046b1 |
children |
rev | line source |
---|---|
alexbrandmeyer@685 | 1 // |
alexbrandmeyer@685 | 2 // ihc.h |
alexbrandmeyer@685 | 3 // CARFAC Open Source C++ Library |
alexbrandmeyer@685 | 4 // |
alexbrandmeyer@685 | 5 // Created by Alex Brandmeyer on 5/30/13. |
alexbrandmeyer@685 | 6 // |
alexbrandmeyer@685 | 7 // This C++ file is part of an implementation of Lyon's cochlear model: |
alexbrandmeyer@685 | 8 // "Cascade of Asymmetric Resonators with Fast-Acting Compression" |
alexbrandmeyer@685 | 9 // to supplement Lyon's upcoming book "Human and Machine Hearing" |
alexbrandmeyer@685 | 10 // |
alexbrandmeyer@685 | 11 // Licensed under the Apache License, Version 2.0 (the "License"); |
alexbrandmeyer@685 | 12 // you may not use this file except in compliance with the License. |
alexbrandmeyer@685 | 13 // You may obtain a copy of the License at |
alexbrandmeyer@685 | 14 // |
alexbrandmeyer@685 | 15 // http://www.apache.org/licenses/LICENSE-2.0 |
alexbrandmeyer@685 | 16 // |
alexbrandmeyer@685 | 17 // Unless required by applicable law or agreed to in writing, software |
alexbrandmeyer@685 | 18 // distributed under the License is distributed on an "AS IS" BASIS, |
alexbrandmeyer@685 | 19 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
alexbrandmeyer@685 | 20 // See the License for the specific language governing permissions and |
alexbrandmeyer@685 | 21 // limitations under the License. |
alexbrandmeyer@685 | 22 |
alexbrandmeyer@685 | 23 #ifndef CARFAC_IHC_H |
alexbrandmeyer@685 | 24 #define CARFAC_IHC_H |
alexbrandmeyer@685 | 25 |
alexbrandmeyer@685 | 26 #include "common.h" |
alexbrandmeyer@685 | 27 |
ronw@688 | 28 // Inner hair cell (IHC) parameters, which are used to design the IHC filters. |
alexbrandmeyer@685 | 29 struct IHCParams { |
alexbrandmeyer@685 | 30 IHCParams() { |
alexbrandmeyer@685 | 31 just_half_wave_rectify = false; |
alexbrandmeyer@685 | 32 one_capacitor = true; |
alexbrandmeyer@685 | 33 tau_lpf = 0.000080; |
alexbrandmeyer@685 | 34 tau1_out = 0.0005; |
alexbrandmeyer@685 | 35 tau1_in = 0.010; |
alexbrandmeyer@685 | 36 tau2_out = 0.0025; |
alexbrandmeyer@685 | 37 tau2_in = 0.005; |
alexbrandmeyer@685 | 38 ac_corner_hz = 20.0; |
ronw@688 | 39 } |
ronw@688 | 40 |
alexbrandmeyer@685 | 41 bool just_half_wave_rectify; |
alexbrandmeyer@685 | 42 bool one_capacitor; |
alexbrandmeyer@685 | 43 FPType tau_lpf; |
alexbrandmeyer@685 | 44 FPType tau1_out; |
alexbrandmeyer@685 | 45 FPType tau1_in; |
alexbrandmeyer@685 | 46 FPType tau2_out; |
alexbrandmeyer@685 | 47 FPType tau2_in; |
alexbrandmeyer@685 | 48 FPType ac_corner_hz; |
alexbrandmeyer@685 | 49 }; |
alexbrandmeyer@685 | 50 |
ronw@688 | 51 // Inner hair cell filter coefficients, which are derived from a set of |
ronw@688 | 52 // IHCParams. |
alexbrandmeyer@685 | 53 struct IHCCoeffs { |
alexbrandmeyer@685 | 54 bool just_half_wave_rectify; |
alexbrandmeyer@685 | 55 bool one_capacitor; |
alexbrandmeyer@685 | 56 FPType lpf_coeff; |
alexbrandmeyer@685 | 57 FPType out1_rate; |
alexbrandmeyer@685 | 58 FPType in1_rate; |
alexbrandmeyer@685 | 59 FPType out2_rate; |
alexbrandmeyer@685 | 60 FPType in2_rate; |
alexbrandmeyer@685 | 61 FPType output_gain; |
alexbrandmeyer@685 | 62 FPType rest_output; |
alexbrandmeyer@685 | 63 FPType rest_cap1; |
alexbrandmeyer@685 | 64 FPType rest_cap2; |
alexbrandmeyer@685 | 65 FPType ac_coeff; |
alexbrandmeyer@685 | 66 FPType cap1_voltage; |
alexbrandmeyer@685 | 67 FPType cap2_voltage; |
alexbrandmeyer@685 | 68 }; |
alexbrandmeyer@685 | 69 |
ronw@688 | 70 // Inner hair cell filter state. |
alexbrandmeyer@685 | 71 struct IHCState { |
alexbrandmeyer@685 | 72 ArrayX ihc_out; |
alexbrandmeyer@685 | 73 ArrayX ihc_accum; |
alexbrandmeyer@685 | 74 ArrayX cap1_voltage; |
alexbrandmeyer@685 | 75 ArrayX cap2_voltage; |
alexbrandmeyer@685 | 76 ArrayX lpf1_state; |
alexbrandmeyer@685 | 77 ArrayX lpf2_state; |
alexbrandmeyer@685 | 78 ArrayX ac_coupler; |
alexbrandmeyer@685 | 79 }; |
alexbrandmeyer@685 | 80 |
ronw@688 | 81 #endif // CARFAC_IHC_H |