Auditory nerve model for predicting performance limits (Heinz et al 2001)

 Download zip file 
Help downloading and running models
Accession:36834
A computational auditory nerve (AN) model was developed for use in modeling psychophysical experiments with normal and impaired human listeners. In this phenomenological model, many physiologically vulnerable response properties associated with the cochlear amplifier are represented by a single nonlinear control mechanism, see paper for details. Several model versions are described that can be used to evaluate the relative effects of these nonlinear properties.
Reference:
1 . Heinz MG, Zhang X, Bruce IC, Carney LH (2001) Auditory nerve model for predicting performance limits of normal and impaired listeners. Acoustics Research Letters Online 2(3):91-96
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism:
Cell Type(s): Auditory nerve;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: C or C++ program; MATLAB;
Model Concept(s): Activity Patterns; Temporal Pattern Generation; Audition;
Implementer(s): Zhang, Xuedong ;
/**
   This file defines several filters that is used in the program
 */
#ifndef _FILTER_H
#define _FILTER_H
#include <math.h>
#include <stdlib.h>
#include "complex.h"

#ifndef TWOPI
#define TWOPI 6.2831853
#endif
/*// Maximum order of the filter */
#define MAX_ORDER 10

/*/######################################################################## */
/* interface the users */
typedef struct __LowPass TLowPass;
typedef struct __HighPass THighPass;
typedef struct __GammaTone TGammaTone;
/*// Construct the filter with time_resolustion(1/F_s), cutoff frequency, gain, filter order */
TLowPass* getLowPass(double _tdres,double _Fc,double _gain,int _LPorder);
void initLowPass(TLowPass* p,double _tdres,double _Fc,double _gain,int _LPorder);
/*// */
TGammaTone* getGammaTone(double _tdres,double _Fshift,double _tau,double _gain,int _order);
void initGammaTone(TGammaTone* p,double _tdres,double _Fshift,double _tau,double _gain,int _order);
/*// Init the filter with time_resolution(1/F_s), cut-off freq., gain,order */
THighPass* getHighPass(double _tdres,double _Fc,double _gain,int _HPorder);
void initHighPass(THighPass* p,double _tdres,double _Fc,double _gain,int _HPorder);
/* /########################################################################################## */
/*/ ----------------------------------------------------------------------------
 **
   Lowpass Filter
*/

struct __LowPass{
  /*//input one signal to the filter and get the output */
  double (*run)(TLowPass *p, double x);
  /*//input multiple signal to the filter and get the multiple output */
  void (*run2)(TLowPass *p,const double *in, double *out, const int length);

  /*/time-domain resolution,cut-off frequency,gain, filter order */
  double tdres, Fc, gain;
  int Order;
  /*/ parameters used in calculation */
  double c1LP,c2LP,hc[MAX_ORDER],hcl[MAX_ORDER];
};

/*/ ----------------------------------------------------------------------------
 **
  Highpass Filter
*/
struct __HighPass{

  /*//input one signal to the filter and get the output */
  double (*run)(THighPass *p, double x);
  /*//input multiple signal to the filter and get the multiple output */
  void (*run2)(THighPass *p,const double *in, double *out, const int length);
  /*time-domain resolution, cut-off frequency, gain of the filter */
  double tdres,Fc,gain;
  int Order;       /*/order of the hi-pass */
  double c1HP,c2HP,hc[MAX_ORDER],hcl[MAX_ORDER];
};

/*/ ----------------------------------------------------------------------------
 **
   Gammatone filter
 */
struct __GammaTone
{
  /*//input one signal to the filter and get the output */
  double (*run)(TGammaTone *p, double x);
  /*//input multiple signal to the filter and get the multiple output */
  void (*run2)(TGammaTone *p,const double *in, double *out, const int length);

  double phase;
  /* Cutoff Freq(tau), Shift Freq, ... */
  double tdres,tau;
  double F_shift,delta_phase;
  double gain,c1LP,c2LP;
  COMPLEX gtf[MAX_ORDER],gtfl[MAX_ORDER];
  int Order;

  /*// Set the tau of the gammatone filter, this is useful for time-varying filter */
  void (*settau)(TGammaTone *p, double _tau);
};
#endif

Loading data, please wait...