Mercurial > hg > aimc
changeset 624:3786bc6e5155
Build C++ CARFAC using scons.
Also fix Eigen syntax in ear.cc to get it to build.
Tested on Ubuntu Precise.
author | ronw@google.com |
---|---|
date | Tue, 21 May 2013 20:06:21 +0000 |
parents | b3118c9ed67f |
children | f72ad5807857 |
files | carfac/SConstruct carfac/agc_params.cc carfac/ear.cc |
diffstat | 3 files changed, 53 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/carfac/SConstruct Tue May 21 20:06:21 2013 +0000 @@ -0,0 +1,49 @@ +# CARFAC Open Source C++ Library +# +# 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. + +## @author Ron Weiss <ronw@google.com> +# @date created 2013/05/21 +# @version \$Id$ + +"""@package SConstruct +SConstruct file for the CARFAC Open Source C++ Library. + +To install dependencies and build on Ubuntu, run: + + sudo apt-get install libeigen3-dev scons + export EIGEN_PATH=/usr/include/eigen3 + scons +""" + +import os + +carfac_sources = [ + 'agc_params.cc', + 'carfac.cc', + 'carfac_common.cc', + 'carfac_output.cc', + 'car_params.cc', + 'ear.cc', + 'ear_output.cc', + 'ihc_params.cc', + ] + +env = Environment(CPPPATH=[os.environ['EIGEN_PATH']]) +# Needed to support std::vector initialization lists. +env.MergeFlags(['-std=c++0x']) +env.Library(target = 'carfac', source = carfac_sources)
--- a/carfac/agc_params.cc Tue May 21 04:24:05 2013 +0000 +++ b/carfac/agc_params.cc Tue May 21 20:06:21 2013 +0000 @@ -52,4 +52,4 @@ decimation_ = decimation; agc1_scales_ = agc1_scales; agc2_scales_ = agc2_scales; -} \ No newline at end of file +}
--- a/carfac/ear.cc Tue May 21 04:24:05 2013 +0000 +++ b/carfac/ear.cc Tue May 21 20:06:21 2013 +0000 @@ -334,10 +334,8 @@ // rational function. This makes the result go to zero at high // absolute velocities, so it will do nothing there. FloatArray Ear::OHC_NLF(FloatArray velocities) { - return 1 / (1 + - (((velocities * car_coeffs_.velocity_scale_) + car_coeffs_.v_offset_) * - ((velocities * car_coeffs_.velocity_scale_) + car_coeffs_.v_offset_))); - + return (1 + ((velocities * car_coeffs_.velocity_scale_) + + car_coeffs_.v_offset_).square()).inverse(); } // This step is a one sample-time update of the inner-hair-cell (IHC) model, @@ -563,4 +561,4 @@ FloatArray zr = car_coeffs_.zr_coeffs_; FloatArray r = r1 + zr * undamping; return (1 - 2 * r * a0 + (r * r)) / (1 - 2 * r * a0 + h * r * c0 + (r * r)); -} \ No newline at end of file +}