tomwalters@0: /* tomwalters@0: Copyright (c) Applied Psychology Unit, Medical Research Council. 1988, 1989 tomwalters@0: =========================================================================== tomwalters@0: tomwalters@0: Permission to use, copy, modify, and distribute this software without fee tomwalters@0: is hereby granted for research purposes, provided that this copyright tomwalters@0: notice appears in all copies and in all supporting documentation, and that tomwalters@0: the software is not redistributed for any fee (except for a nominal shipping tomwalters@0: charge). Anyone wanting to incorporate all or part of this software in a tomwalters@0: commercial product must obtain a license from the Medical Research Council. tomwalters@0: tomwalters@0: The MRC makes no representations about the suitability of this tomwalters@0: software for any purpose. It is provided "as is" without express or implied tomwalters@0: warranty. tomwalters@0: tomwalters@0: */ tomwalters@0: tomwalters@0: /* tomwalters@0: table.c - Options tables for model parameters tomwalters@0: tomwalters@0: */ tomwalters@0: tomwalters@0: /*************************************************************************** tomwalters@0: * The model options are grouped according to the processing stages which use tomwalters@0: * them. The stages which use each group are listed above each group. These tomwalters@0: * lists contain sub-lists of stages from each model type, (ie, envelope, fine, tomwalters@0: * complex, nonmult, noncalc. See model.c:FindStage() ). tomwalters@0: * The options table for a particular group must be installed in the options tomwalters@0: * field of the stage structure (see model.c:FindStage()) which is the lowest tomwalters@0: * stage (as listed textually in the stage table) of the stages which use that tomwalters@0: * group. In this way, the other stages which use that group will pick up the tomwalters@0: * options when the complete options table is constructed, by accumulating all tomwalters@0: * options groups from a given stage name to the bottom of the stage table. tomwalters@0: * For example, the "auditory filter output" group listed just below is used tomwalters@0: * by stage fbm (a "fine" model), stage bmm (a "nonmult" model), and stages tomwalters@0: * fcp and fcr (both "complex" models). The group options table (fbmopts) tomwalters@0: * should be installed in the stage table in the options fields for the stages tomwalters@0: * fbm, bmm, and fcr. The stage fcp can be assigned NO_OPTS because it will tomwalters@0: * pick up the options from stage fcr when the complete options table is tomwalters@0: * constructed, (see gen.c:constructOptions()). tomwalters@0: * tomwalters@0: * Routes through the model. tomwalters@0: * There are two parallel routes (ie sequential stages of processing): tomwalters@0: * a) an auditory route (conventionally displayed as landscapes). tomwalters@0: * b) a speech route (conventionally displayed as greyscales). tomwalters@0: * Either route is a three-stage model, composed of a sequence of modules. tomwalters@0: * The names of each of the three stages are an alias for the corresponding tomwalters@0: * module at a particular stage of processing. (Eg, genbmm is the first of the tomwalters@0: * three model stages in the auditory route. It is displayed as a landscape. tomwalters@0: * It is an alias for genfbm, and the sequence of modules leading to this is tomwalters@0: * wav,fbm). tomwalters@0: * An additional route displays excitation patterns, which are basically tomwalters@0: * spectra, (for example, genepn is like gennap, but viewed with the frequency tomwalters@0: * axis as the abscissa. Similarly, gensas is like genbmm). tomwalters@0: * tomwalters@0: * Process Module Auditory Speech Excitation tomwalters@0: * ---------------------------- ------ -------- ------- ---------- tomwalters@0: * Input wave genwav tomwalters@0: * Filterbank genfbm genbmm tomwalters@0: * Rectifier genfbr tomwalters@0: * Compressor genfbc gensgm genasa tomwalters@0: * LP filter genfbl tomwalters@0: * Adaptive threshold genfbt gennap tomwalters@0: * Integration and downsampling genfbd gencgm genepn tomwalters@0: * Triggered integration gensai gensai tomwalters@0: * Integration and downsampling gensas gensas tomwalters@0: * tomwalters@0: * In addition, there is a spiral mapping of the auditory image, genspl, tomwalters@0: * which is a spiral version of gensai. tomwalters@0: * tomwalters@0: * Note that on the speech route, gensgm is identical to gencgm but with tomwalters@0: * enable_at=off. tomwalters@0: * Originally, gensgm and gencgm were simply aliases for the genfbd module, tomwalters@0: * which were to have distinct parameters using distinct options files. tomwalters@0: * tomwalters@0: ****************************************************************************/ tomwalters@0: tomwalters@0: tomwalters@0: /******* [fbm] [bmm] [fcp,fcr] stage: "auditory filter output" ************/ tomwalters@0: tomwalters@0: static Option fbmopts[] = { tomwalters@0: tomwalters@0: { "channels_afb", chansdflt, &chansstr, "Number of channels in filter", InOutOption}, tomwalters@0: { "mincf_afb", mindflt, &minstr, "Minimum center frequency (Hz)", InOutOption}, tomwalters@0: { "maxcf_afb", maxdflt, &maxstr, "Maximum center frequency (Hz)", InOutOption}, tomwalters@0: { "dencf_afb", dendflt, &denstr, "Filter density (filters/critical band)", InOutOption}, tomwalters@0: { "interp_afb", interpdflt, &interpstr, "Levels of interpolation to apply", OutputOption}, tomwalters@0: { "interp_afb", interpdflt, &interpstr, "Levels of interpolation to apply", SilentOption}, tomwalters@0: { "bwmin_afb", limitdflt, &limitstr, "Minimum filter bandwith", InOutOption}, tomwalters@0: { "quality_afb", qualdflt, &qualstr, "Ultimate qualtity factor of filters", InOutOption}, tomwalters@0: {"audiogram_afb", audiodflt, &audiostr, "Audiogram equalisation parameter\n", InOutOption}, tomwalters@0: tomwalters@0: { "float_gtf", floatdflt, &floatstr, "Floating point filter calculations", OutputOption}, tomwalters@0: { "float_gtf", floatdflt, &floatstr, "Floating point filter calculations", SilentOption}, tomwalters@0: { "gain_gtf", gaindflt, &gainstr, "Filter output amplification", InOutOption}, tomwalters@0: { "phase_gtf", phasedflt, &phasestr, "Phase compensation option", InOutOption}, tomwalters@0: { "order_gtf", orderdflt, &orderstr, "Filter order\n", InOutOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /************** [fbr] stage: "rectified filter output" ******************/ tomwalters@0: tomwalters@0: static Option fbropts[] = { tomwalters@0: tomwalters@0: { "rectify", rectdflt, &rectstr, "Rectify filter output", InOutOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /*********** [fbc] [fec] stage: "compressed filter output" **************/ tomwalters@0: tomwalters@0: static Option fbcopts[] = { tomwalters@0: tomwalters@0: { "compress", logdflt, &logstr, "Apply log compression", InOutOption}, tomwalters@0: { "compensate", compdflt, &compstr, "Cochlea output compressor\n", InputOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /*********** [fbu] [feu] stage: "uncompressed filter output" **************/ tomwalters@0: tomwalters@0: static Option fbuopts[] = { tomwalters@0: tomwalters@0: { "power", powerdflt, &powerstr, "Power of Compression", SilentOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /*********** [fbs] [fes] stage: "saturated filter output" **************/ tomwalters@0: tomwalters@0: static Option fbsopts[] = { tomwalters@0: tomwalters@0: { "saturate", satdflt, &satstr, "Introduce Saturation of non-linearity\n", SilentOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /*********** [fbl] [fel] stage: "low-pass filtered filter output ***********/ tomwalters@0: tomwalters@0: static Option fblopts[] = { tomwalters@0: tomwalters@0: { "meddis", meddisdflt, &meddisstr, "Enables Meddis haircell model\n", OutputOption}, tomwalters@0: { "meddis", meddisdflt, &meddisstr, "Enables Meddis haircell model\n", SilentOption}, tomwalters@0: tomwalters@0: { "igain_lpf", ligaindflt, &ligainstr, "Gain of integration stage\n", OutputOption}, tomwalters@0: { "igain_lpf", ligaindflt, &ligainstr, "Gain of integration stage\n", SilentOption}, tomwalters@0: { "vloss_lpf", lvlossdflt, &lvlossstr, "Rest level for loss", OutputOption}, tomwalters@0: { "vloss_lpf", lvlossdflt, &lvlossstr, "Rest level for loss", SilentOption}, tomwalters@0: { "loss_lpf", llossdflt, &llossstr, "Loss time constant", OutputOption}, tomwalters@0: { "loss_lpf", llossdflt, &llossstr, "Loss time constant", SilentOption}, tomwalters@0: { "tdown_lpf", ldowndflt, &ldownstr, "Downward time constant in ms", OutputOption}, tomwalters@0: { "tdown_lpf", ldowndflt, &ldownstr, "Downward time constant in ms", SilentOption}, tomwalters@0: { "tup_lpf", lupdflt, &lupstr, "Upward time constant in ms", SilentOption}, tomwalters@0: { "stages_lpf", lstagedflt, &lstagestr, "Stages of integration\n", SilentOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /*********** [nap,fbt] [fet] stage: "neural activity pattern" **************/ tomwalters@0: tomwalters@0: static Option fbtopts[] = { tomwalters@0: tomwalters@0: { "enable_at", stxdflt, &stxstr, "Enable adaptive thresholding module", InOutOption}, tomwalters@0: { "trise_at", risedflt, &risestr, "Threshold adaptation rate (upwards)", InOutOption}, tomwalters@0: {"t1recovery_at", rapiddflt, &rapidstr, "Initial recovery rate relative to filter", InOutOption}, tomwalters@0: {"t2recovery_at", fastdflt, &faststr, "Secondary recovery rate relative to filter", InOutOption}, tomwalters@0: { "propt2t1_at", propdflt, &propstr, "Relative height of secondary adaptation", InOutOption}, tomwalters@0: { "frecovery_at", latdflt, &latstr, "Recovery rate across frequency", InOutOption}, tomwalters@0: { "reclimit_at", vdraindflt, &vdrainstr, "Limitation on recovery level\n", InOutOption}, tomwalters@0: tomwalters@0: { "times_at", timesdflt, ×str, "Oversampling of calculation of threshold", OutputOption}, tomwalters@0: { "times_at", timesdflt, ×str, "Oversampling of calculation of threshold", SilentOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /*********** [fba] [fea] stage: "adapted transduced filter output" *********/ tomwalters@0: tomwalters@0: static Option fbaopts[] = { tomwalters@0: tomwalters@0: { "mmincf_mfb", minmfdflt, &minmfstr, "Minimum modulation frequency (Hz)", InOutOption}, tomwalters@0: { "mmaxcf_mfb", maxmfdflt, &maxmfstr, "Maximum modulation frequency (Hz)", InOutOption}, tomwalters@0: { "mdencf_mfb", denmfdflt, &denmfstr, "Modulation filter density ", InOutOption}, tomwalters@0: { "stepcf_mfb", stepmfdflt, &stepmfstr, "Step between images\n", InOutOption}, tomwalters@0: tomwalters@0: { "tadaptation", adapdflt, &adapstr, "Time constant of long term adaptation\n", SilentOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /*********** [fbh] [feh] stage: "hard limited filter output" **************/ tomwalters@0: tomwalters@0: static Option fbhopts[] = { tomwalters@0: tomwalters@0: { "hard_limit", harddflt, &hardstr, "Hardlimit firing rate before integration\n",OutputOption}, tomwalters@0: { "hard_limit", harddflt, &hardstr, "Hardlimit firing rate before integration\n",SilentOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /***** [sgm,cgm,fbd,fbi] [fed,fei] stage: "integrated filter output" *******/ tomwalters@0: tomwalters@0: static Option fbiopts[] = { tomwalters@0: tomwalters@0: { "igain_idt", igaindflt, &igainstr, "Gain of integration stage\n", OutputOption}, tomwalters@0: { "igain_idt", igaindflt, &igainstr, "Gain of integration stage\n", SilentOption}, tomwalters@0: tomwalters@0: { "vloss_idt", vlossdflt, &vlossstr, "Rest level for loss", OutputOption}, tomwalters@0: { "vloss_idt", vlossdflt, &vlossstr, "Rest level for loss", SilentOption}, tomwalters@0: { "loss_idt", lossdflt, &lossstr, "Loss time constant", OutputOption}, tomwalters@0: { "loss_idt", lossdflt, &lossstr, "Loss time constant", SilentOption}, tomwalters@0: { "tdown_idt", downdflt, &downstr, "Downward time constant in ms", OutputOption}, tomwalters@0: { "tdown_idt", downdflt, &downstr, "Downward time constant in ms", SilentOption}, tomwalters@0: { "tup_idt", updflt, &upstr, "Low-pass filter time constant in ms", InOutOption}, tomwalters@0: { "stages_idt", stagedflt, &stagestr, "Stages of integration\n", InOutOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /*********** [spl,sai] [sie] stage: "stabilized auditory image" ************/ tomwalters@0: tomwalters@0: static Option saiopts[] = { tomwalters@0: tomwalters@0: { "napdecay_ai", cgmdflt, &cgmstr, "Neural activity decay time constant", InOutOption}, tomwalters@0: { "ttdecay_ai", ttdflt, &ttstr, "Trigger threshold decay time constant", InOutOption}, tomwalters@0: { "utrate_ai", utlimdflt, &utlimstr, "Upper trigger rate limit (Hz)", InOutOption}, tomwalters@0: { "ltrate_ai", ltlimdflt, <limstr, "Lower trigger rate limit (Hz)", InOutOption}, tomwalters@0: { "decay_ai", decaydflt, &decaystr, "Auditory image decay time constant\n", InOutOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: /*********** [sas] [sse] stage: "stabilized auditory spectrogram" **********/ tomwalters@0: tomwalters@0: static Option sasopts[] = { tomwalters@0: tomwalters@0: { "ulim_sas", ulimdflt, &ulimstr, "Upper integration limit for auditory image", InOutOption}, tomwalters@0: { "llim_sas", llimdflt, &llimstr, "Lower integration limit for auditory image\n", InOutOption}, tomwalters@0: tomwalters@0: ( char * ) 0 } ; tomwalters@0: