Mercurial > hg > aimc
diff trunk/C++/AGCParam.H @ 597:359bcd461dd1
First commit. Refer to the api [1] 'Philosophy of the implementation' for information on the approach used to implement CARFAC in C++.
[1] aimc/C++/api/html/index.html
author | flatmax |
---|---|
date | Sat, 09 Feb 2013 23:53:48 +0000 |
parents | |
children | 34dccba19c54 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trunk/C++/AGCParam.H Sat Feb 09 23:53:48 2013 +0000 @@ -0,0 +1,51 @@ +// Copyright 2013 Matt R. Flax <flatmax\@> All Rights Reserved. +// Author Matt Flax <flatmax\@> +// +// This C++ file is part of an implementation of Lyon's cochlear model: +// "Cascade of Asymmetric Resonators with Fast-Acting Compression" +// to supplement Lyon's upcoming book "Human and Machine Hearing" +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#ifndef AGCPARAMS_H_ +#define AGCPARAMS_H_ + +#include "Parameters.H" + +/** + \author {Matt Flax <flatmax\@>} + \date 2013.02.08 + + Parameters for the automatic gain control +*/ +class AGCParam : public Parameters { + int n_stages; ///< Stage count + Array<FP_TYPE, AGC_STAGE_COUNT,1> time_constants; ///< seconds + FP_TYPE AGC_stage_gain; ///< gain from each stage to next slower stage + Array<int,AGC_STAGE_COUNT, 1> decimation; ///< how often to update the AGC states + Array<FP_TYPE, AGC_STAGE_COUNT,1> AGC1_scales; ///< in units of channels + Array<FP_TYPE, AGC_STAGE_COUNT,1> AGC2_scales; ///< spread more toward base + FP_TYPE AGC_mix_coeff; ///< Dick, whats this ? +public: + /// Constructor with default parameter values + AGCParam(int n_stages_=AGC_STAGE_COUNT, + Array<FP_TYPE, AGC_STAGE_COUNT,1> time_constants_=Array<FP_TYPE, AGC_STAGE_COUNT,1>(1., 4., 16., 64.)*0.002, + FP_TYPE AGC_stage_gain_=2., + Array<int,AGC_STAGE_COUNT, 1> decimation_=Array<int,AGC_STAGE_COUNT, 1>(8, 2, 2, 2), + Array<FP_TYPE, AGC_STAGE_COUNT,1> AGC1_scales_=Array<FP_TYPE, AGC_STAGE_COUNT,1>(1.0, 1.4, 2.0, 2.8), + Array<FP_TYPE, AGC_STAGE_COUNT,1> AGC2_scales_=Array<FP_TYPE, AGC_STAGE_COUNT,1>(1.6, 2.25, 3.2, 4.5), + FP_TYPE AGC_mix_coeff_=0.5); + + virtual ~AGCParam(); +}; + +#endif // AGCPARAMS_H_