flatmax@632: flatmax@593: // Author Matt Flax flatmax@592: // flatmax@592: // This C++ file is part of an implementation of Lyon's cochlear model: flatmax@592: // "Cascade of Asymmetric Resonators with Fast-Acting Compression" flatmax@592: // to supplement Lyon's upcoming book "Human and Machine Hearing" flatmax@592: // flatmax@592: // Licensed under the Apache License, Version 2.0 (the "License"); flatmax@592: // you may not use this file except in compliance with the License. flatmax@592: // You may obtain a copy of the License at flatmax@592: // flatmax@592: // http://www.apache.org/licenses/LICENSE-2.0 flatmax@592: // flatmax@592: // Unless required by applicable law or agreed to in writing, software flatmax@592: // distributed under the License is distributed on an "AS IS" BASIS, flatmax@592: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. flatmax@592: // See the License for the specific language governing permissions and flatmax@592: // limitations under the License. flatmax@592: #ifndef EAR_H_ flatmax@592: #define EAR_H_ flatmax@592: flatmax@592: #include "CAR.H" flatmax@592: #include "IHC.H" flatmax@592: #include "AGC.H" flatmax@592: flatmax@592: /** flatmax@592: \author {Matt Flax } flatmax@592: \date 2013.02.08 flatmax@592: flatmax@592: Class which encapsulates an ear, using the CAR, IHC and AGC classes flatmax@592: */ flatmax@592: class Ear { flatmax@593: FP_TYPE fs; ///< The sample rate flatmax@593: FP_TYPE max_channels_per_octave; ///< How many channels in each octave flatmax@593: int n_ch; ///< The number of channels (in the ear) flatmax@592: flatmax@593: CAR car; ///< The cascade of asymmetric resontaors for this ear flatmax@593: IHC ihc; ///< The inner hair cell for this ear flatmax@593: AGC agc; ///< The automatic gain control for this ear flatmax@592: flatmax@592: public: flatmax@593: /** Constructor specifying the sample rate flatmax@593: \param fs_ The sample rate to use flatmax@593: */ flatmax@593: Ear(FP_TYPE fs_); flatmax@593: flatmax@593: /** Constructor using the DEFAULT_SAMPLERATE as the sample rate flatmax@593: */ flatmax@593: Ear(void); flatmax@593: virtual ~Ear(void); flatmax@593: flatmax@593: /** Estimates the number of filter stages and executes the dsign method for each of CAR, AGC and IHC flatmax@593: */ flatmax@593: void design(void); flatmax@592: }; flatmax@592: flatmax@592: #endif // EAR_H_