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 ;
#ifndef _CMPA_H
#define _CMPA_H
#include "filters.h"
#include "hc.h"
#include "synapse.h"
#include "complex.h"

#ifndef TWOPI
#define TWOPI 6.2831853
#endif
#define Broad_ALL		0x80
#define Linear_ALL		0x40
#define NonLinear_ALL		0x20

#define FeedBack_NL		(NonLinear_ALL|0x01)
#define FeedForward_NL		(NonLinear_ALL|0x02)
#define Broad_Linear		(Broad_ALL|Linear_ALL|0x01)
#define Sharp_Linear		(Linear_ALL|0x02)
#define Broad_Linear_High	(Broad_ALL|Linear_ALL|0x03)

/*/############################################################################## */
typedef struct __AuditoryNerve TAuditoryNerve;
typedef struct __BasilarMembrane TBasilarMembrane;
double cochlea_f2x(int species,double f);
double cochlea_x2f(int species,double x);

double runAN(TAuditoryNerve* p,double x);
void runAN2(TAuditoryNerve *p, const double *in, double *out, const int length);

void initAuditoryNerve(TAuditoryNerve *p,int model, int species, double tdres, double cf, double spont);
void initBasilarMembrane(TBasilarMembrane* bm,int model, int species, double tdres, double cf);

/*/############################################################################## */

/** The class the define the basic structure of the time-varing filter
    
    the class consists of following components: \n
    1. tuning filter(bmfilter), the tau is controlled by the control path\n
    2. wideband pass filter(wbfilter)\n
    3. outer hair cell model(ohc)\n
    4. nonlinear function after the outer haircell(afterohc)
 */
struct __BasilarMembrane{ /* class of basilar membrane */

  double (*run)(TBasilarMembrane *p, double x);
  void (*run2)(TBasilarMembrane *p, const double *in, double *out, const int length);

  int bmmodel; /* determine if the bm is broad_linear, sharp_linear or other */
  double tdres;
  int bmorder,wborder;

  double tau,TauMax,TauMin;
  double TauWB,TauWBMin;
  double A,B; 
  /* --------Model -------------- */
  TGammaTone bmfilter; /*/NonLinear Filter */
  TGammaTone gfagain; /*/Linear Filter */
  TGammaTone wbfilter; /*/Control Path filter */
  THairCell ohc;
  TNonLinear afterohc;
};

/** Class of the auditory nerve fiber, this is a complete model of the fiber

    The class consists of all the parts of the auditory nerve fiber\n
    1. time-varying tuning filter with control path: TBasilarMembrane(bm, 3rd order)\n
    2. the gammatone filter after the 3rd-order nonlinear filter(gffilter)\n
    3. inner hair cell model(ihc)\n
    4. synapse model, from Westman,1986(syn)\n
    5. spike generator, from Carney,1993(sg)
 */
struct __AuditoryNerve{
/*/ Run Function */
  double (*run)(TAuditoryNerve *p, double x);
  void  (*run2)(TAuditoryNerve *p, const double *in,  double *out,  const int length);
/*/ Model Structor */
  TBasilarMembrane bm;
  THairCell ihc;
  TNonLinear ihcppi; /*/From ihc->ppi */
  Tsynapse syn;
/*/  TSpikeGenerator sg; */
/*/ Model Parameters */
  double tdres,cf,spont;
  int species,model;
  /* This parameter indicates if we are using sout only or spikes */
  int ifspike;
};

#endif






Loading data, please wait...