tomwalters@0
|
1 /*
|
tomwalters@0
|
2 Copyright (c) Applied Psychology Unit, Medical Research Council. 1988, 1989
|
tomwalters@0
|
3 ===========================================================================
|
tomwalters@0
|
4
|
tomwalters@0
|
5 Permission to use, copy, modify, and distribute this software without fee
|
tomwalters@0
|
6 is hereby granted for research purposes, provided that this copyright
|
tomwalters@0
|
7 notice appears in all copies and in all supporting documentation, and that
|
tomwalters@0
|
8 the software is not redistributed for any fee (except for a nominal shipping
|
tomwalters@0
|
9 charge). Anyone wanting to incorporate all or part of this software in a
|
tomwalters@0
|
10 commercial product must obtain a license from the Medical Research Council.
|
tomwalters@0
|
11
|
tomwalters@0
|
12 The MRC makes no representations about the suitability of this
|
tomwalters@0
|
13 software for any purpose. It is provided "as is" without express or implied
|
tomwalters@0
|
14 warranty.
|
tomwalters@0
|
15
|
tomwalters@0
|
16 */
|
tomwalters@0
|
17
|
tomwalters@0
|
18 /*
|
tomwalters@0
|
19 table.c - Options tables for model parameters
|
tomwalters@0
|
20
|
tomwalters@0
|
21 */
|
tomwalters@0
|
22
|
tomwalters@0
|
23 /***************************************************************************
|
tomwalters@0
|
24 * The model options are grouped according to the processing stages which use
|
tomwalters@0
|
25 * them. The stages which use each group are listed above each group. These
|
tomwalters@0
|
26 * lists contain sub-lists of stages from each model type, (ie, envelope, fine,
|
tomwalters@0
|
27 * complex, nonmult, noncalc. See model.c:FindStage() ).
|
tomwalters@0
|
28 * The options table for a particular group must be installed in the options
|
tomwalters@0
|
29 * field of the stage structure (see model.c:FindStage()) which is the lowest
|
tomwalters@0
|
30 * stage (as listed textually in the stage table) of the stages which use that
|
tomwalters@0
|
31 * group. In this way, the other stages which use that group will pick up the
|
tomwalters@0
|
32 * options when the complete options table is constructed, by accumulating all
|
tomwalters@0
|
33 * options groups from a given stage name to the bottom of the stage table.
|
tomwalters@0
|
34 * For example, the "auditory filter output" group listed just below is used
|
tomwalters@0
|
35 * by stage fbm (a "fine" model), stage bmm (a "nonmult" model), and stages
|
tomwalters@0
|
36 * fcp and fcr (both "complex" models). The group options table (fbmopts)
|
tomwalters@0
|
37 * should be installed in the stage table in the options fields for the stages
|
tomwalters@0
|
38 * fbm, bmm, and fcr. The stage fcp can be assigned NO_OPTS because it will
|
tomwalters@0
|
39 * pick up the options from stage fcr when the complete options table is
|
tomwalters@0
|
40 * constructed, (see gen.c:constructOptions()).
|
tomwalters@0
|
41 *
|
tomwalters@0
|
42 * Routes through the model.
|
tomwalters@0
|
43 * There are two parallel routes (ie sequential stages of processing):
|
tomwalters@0
|
44 * a) an auditory route (conventionally displayed as landscapes).
|
tomwalters@0
|
45 * b) a speech route (conventionally displayed as greyscales).
|
tomwalters@0
|
46 * Either route is a three-stage model, composed of a sequence of modules.
|
tomwalters@0
|
47 * The names of each of the three stages are an alias for the corresponding
|
tomwalters@0
|
48 * module at a particular stage of processing. (Eg, genbmm is the first of the
|
tomwalters@0
|
49 * three model stages in the auditory route. It is displayed as a landscape.
|
tomwalters@0
|
50 * It is an alias for genfbm, and the sequence of modules leading to this is
|
tomwalters@0
|
51 * wav,fbm).
|
tomwalters@0
|
52 * An additional route displays excitation patterns, which are basically
|
tomwalters@0
|
53 * spectra, (for example, genepn is like gennap, but viewed with the frequency
|
tomwalters@0
|
54 * axis as the abscissa. Similarly, gensas is like genbmm).
|
tomwalters@0
|
55 *
|
tomwalters@0
|
56 * Process Module Auditory Speech Excitation
|
tomwalters@0
|
57 * ---------------------------- ------ -------- ------- ----------
|
tomwalters@0
|
58 * Input wave genwav
|
tomwalters@0
|
59 * Filterbank genfbm genbmm
|
tomwalters@0
|
60 * Rectifier genfbr
|
tomwalters@0
|
61 * Compressor genfbc gensgm genasa
|
tomwalters@0
|
62 * LP filter genfbl
|
tomwalters@0
|
63 * Adaptive threshold genfbt gennap
|
tomwalters@0
|
64 * Integration and downsampling genfbd gencgm genepn
|
tomwalters@0
|
65 * Triggered integration gensai gensai
|
tomwalters@0
|
66 * Integration and downsampling gensas gensas
|
tomwalters@0
|
67 *
|
tomwalters@0
|
68 * In addition, there is a spiral mapping of the auditory image, genspl,
|
tomwalters@0
|
69 * which is a spiral version of gensai.
|
tomwalters@0
|
70 *
|
tomwalters@0
|
71 * Note that on the speech route, gensgm is identical to gencgm but with
|
tomwalters@0
|
72 * enable_at=off.
|
tomwalters@0
|
73 * Originally, gensgm and gencgm were simply aliases for the genfbd module,
|
tomwalters@0
|
74 * which were to have distinct parameters using distinct options files.
|
tomwalters@0
|
75 *
|
tomwalters@0
|
76 ****************************************************************************/
|
tomwalters@0
|
77
|
tomwalters@0
|
78
|
tomwalters@0
|
79 /******* [fbm] [bmm] [fcp,fcr] stage: "auditory filter output" ************/
|
tomwalters@0
|
80
|
tomwalters@0
|
81 static Option fbmopts[] = {
|
tomwalters@0
|
82
|
tomwalters@0
|
83 { "channels_afb", chansdflt, &chansstr, "Number of channels in filter", InOutOption},
|
tomwalters@0
|
84 { "mincf_afb", mindflt, &minstr, "Minimum center frequency (Hz)", InOutOption},
|
tomwalters@0
|
85 { "maxcf_afb", maxdflt, &maxstr, "Maximum center frequency (Hz)", InOutOption},
|
tomwalters@0
|
86 { "dencf_afb", dendflt, &denstr, "Filter density (filters/critical band)", InOutOption},
|
tomwalters@0
|
87 { "interp_afb", interpdflt, &interpstr, "Levels of interpolation to apply", OutputOption},
|
tomwalters@0
|
88 { "interp_afb", interpdflt, &interpstr, "Levels of interpolation to apply", SilentOption},
|
tomwalters@0
|
89 { "bwmin_afb", limitdflt, &limitstr, "Minimum filter bandwith", InOutOption},
|
tomwalters@0
|
90 { "quality_afb", qualdflt, &qualstr, "Ultimate qualtity factor of filters", InOutOption},
|
tomwalters@0
|
91 {"audiogram_afb", audiodflt, &audiostr, "Audiogram equalisation parameter\n", InOutOption},
|
tomwalters@0
|
92
|
tomwalters@0
|
93 { "float_gtf", floatdflt, &floatstr, "Floating point filter calculations", OutputOption},
|
tomwalters@0
|
94 { "float_gtf", floatdflt, &floatstr, "Floating point filter calculations", SilentOption},
|
tomwalters@0
|
95 { "gain_gtf", gaindflt, &gainstr, "Filter output amplification", InOutOption},
|
tomwalters@0
|
96 { "phase_gtf", phasedflt, &phasestr, "Phase compensation option", InOutOption},
|
tomwalters@0
|
97 { "order_gtf", orderdflt, &orderstr, "Filter order\n", InOutOption},
|
tomwalters@0
|
98
|
tomwalters@0
|
99 ( char * ) 0 } ;
|
tomwalters@0
|
100
|
tomwalters@0
|
101 /************** [fbr] stage: "rectified filter output" ******************/
|
tomwalters@0
|
102
|
tomwalters@0
|
103 static Option fbropts[] = {
|
tomwalters@0
|
104
|
tomwalters@0
|
105 { "rectify", rectdflt, &rectstr, "Rectify filter output", InOutOption},
|
tomwalters@0
|
106
|
tomwalters@0
|
107 ( char * ) 0 } ;
|
tomwalters@0
|
108
|
tomwalters@0
|
109 /*********** [fbc] [fec] stage: "compressed filter output" **************/
|
tomwalters@0
|
110
|
tomwalters@0
|
111 static Option fbcopts[] = {
|
tomwalters@0
|
112
|
tomwalters@0
|
113 { "compress", logdflt, &logstr, "Apply log compression", InOutOption},
|
tomwalters@0
|
114 { "compensate", compdflt, &compstr, "Cochlea output compressor\n", InputOption},
|
tomwalters@0
|
115
|
tomwalters@0
|
116 ( char * ) 0 } ;
|
tomwalters@0
|
117
|
tomwalters@0
|
118 /*********** [fbu] [feu] stage: "uncompressed filter output" **************/
|
tomwalters@0
|
119
|
tomwalters@0
|
120 static Option fbuopts[] = {
|
tomwalters@0
|
121
|
tomwalters@0
|
122 { "power", powerdflt, &powerstr, "Power of Compression", SilentOption},
|
tomwalters@0
|
123
|
tomwalters@0
|
124 ( char * ) 0 } ;
|
tomwalters@0
|
125
|
tomwalters@0
|
126 /*********** [fbs] [fes] stage: "saturated filter output" **************/
|
tomwalters@0
|
127
|
tomwalters@0
|
128 static Option fbsopts[] = {
|
tomwalters@0
|
129
|
tomwalters@0
|
130 { "saturate", satdflt, &satstr, "Introduce Saturation of non-linearity\n", SilentOption},
|
tomwalters@0
|
131
|
tomwalters@0
|
132 ( char * ) 0 } ;
|
tomwalters@0
|
133
|
tomwalters@0
|
134 /*********** [fbl] [fel] stage: "low-pass filtered filter output ***********/
|
tomwalters@0
|
135
|
tomwalters@0
|
136 static Option fblopts[] = {
|
tomwalters@0
|
137
|
tomwalters@0
|
138 { "meddis", meddisdflt, &meddisstr, "Enables Meddis haircell model\n", OutputOption},
|
tomwalters@0
|
139 { "meddis", meddisdflt, &meddisstr, "Enables Meddis haircell model\n", SilentOption},
|
tomwalters@0
|
140
|
tomwalters@0
|
141 { "igain_lpf", ligaindflt, &ligainstr, "Gain of integration stage\n", OutputOption},
|
tomwalters@0
|
142 { "igain_lpf", ligaindflt, &ligainstr, "Gain of integration stage\n", SilentOption},
|
tomwalters@0
|
143 { "vloss_lpf", lvlossdflt, &lvlossstr, "Rest level for loss", OutputOption},
|
tomwalters@0
|
144 { "vloss_lpf", lvlossdflt, &lvlossstr, "Rest level for loss", SilentOption},
|
tomwalters@0
|
145 { "loss_lpf", llossdflt, &llossstr, "Loss time constant", OutputOption},
|
tomwalters@0
|
146 { "loss_lpf", llossdflt, &llossstr, "Loss time constant", SilentOption},
|
tomwalters@0
|
147 { "tdown_lpf", ldowndflt, &ldownstr, "Downward time constant in ms", OutputOption},
|
tomwalters@0
|
148 { "tdown_lpf", ldowndflt, &ldownstr, "Downward time constant in ms", SilentOption},
|
tomwalters@0
|
149 { "tup_lpf", lupdflt, &lupstr, "Upward time constant in ms", SilentOption},
|
tomwalters@0
|
150 { "stages_lpf", lstagedflt, &lstagestr, "Stages of integration\n", SilentOption},
|
tomwalters@0
|
151
|
tomwalters@0
|
152 ( char * ) 0 } ;
|
tomwalters@0
|
153
|
tomwalters@0
|
154 /*********** [nap,fbt] [fet] stage: "neural activity pattern" **************/
|
tomwalters@0
|
155
|
tomwalters@0
|
156 static Option fbtopts[] = {
|
tomwalters@0
|
157
|
tomwalters@0
|
158 { "enable_at", stxdflt, &stxstr, "Enable adaptive thresholding module", InOutOption},
|
tomwalters@0
|
159 { "trise_at", risedflt, &risestr, "Threshold adaptation rate (upwards)", InOutOption},
|
tomwalters@0
|
160 {"t1recovery_at", rapiddflt, &rapidstr, "Initial recovery rate relative to filter", InOutOption},
|
tomwalters@0
|
161 {"t2recovery_at", fastdflt, &faststr, "Secondary recovery rate relative to filter", InOutOption},
|
tomwalters@0
|
162 { "propt2t1_at", propdflt, &propstr, "Relative height of secondary adaptation", InOutOption},
|
tomwalters@0
|
163 { "frecovery_at", latdflt, &latstr, "Recovery rate across frequency", InOutOption},
|
tomwalters@0
|
164 { "reclimit_at", vdraindflt, &vdrainstr, "Limitation on recovery level\n", InOutOption},
|
tomwalters@0
|
165
|
tomwalters@0
|
166 { "times_at", timesdflt, ×str, "Oversampling of calculation of threshold", OutputOption},
|
tomwalters@0
|
167 { "times_at", timesdflt, ×str, "Oversampling of calculation of threshold", SilentOption},
|
tomwalters@0
|
168
|
tomwalters@0
|
169 ( char * ) 0 } ;
|
tomwalters@0
|
170
|
tomwalters@0
|
171 /*********** [fba] [fea] stage: "adapted transduced filter output" *********/
|
tomwalters@0
|
172
|
tomwalters@0
|
173 static Option fbaopts[] = {
|
tomwalters@0
|
174
|
tomwalters@0
|
175 { "mmincf_mfb", minmfdflt, &minmfstr, "Minimum modulation frequency (Hz)", InOutOption},
|
tomwalters@0
|
176 { "mmaxcf_mfb", maxmfdflt, &maxmfstr, "Maximum modulation frequency (Hz)", InOutOption},
|
tomwalters@0
|
177 { "mdencf_mfb", denmfdflt, &denmfstr, "Modulation filter density ", InOutOption},
|
tomwalters@0
|
178 { "stepcf_mfb", stepmfdflt, &stepmfstr, "Step between images\n", InOutOption},
|
tomwalters@0
|
179
|
tomwalters@0
|
180 { "tadaptation", adapdflt, &adapstr, "Time constant of long term adaptation\n", SilentOption},
|
tomwalters@0
|
181
|
tomwalters@0
|
182 ( char * ) 0 } ;
|
tomwalters@0
|
183
|
tomwalters@0
|
184 /*********** [fbh] [feh] stage: "hard limited filter output" **************/
|
tomwalters@0
|
185
|
tomwalters@0
|
186 static Option fbhopts[] = {
|
tomwalters@0
|
187
|
tomwalters@0
|
188 { "hard_limit", harddflt, &hardstr, "Hardlimit firing rate before integration\n",OutputOption},
|
tomwalters@0
|
189 { "hard_limit", harddflt, &hardstr, "Hardlimit firing rate before integration\n",SilentOption},
|
tomwalters@0
|
190
|
tomwalters@0
|
191 ( char * ) 0 } ;
|
tomwalters@0
|
192
|
tomwalters@0
|
193 /***** [sgm,cgm,fbd,fbi] [fed,fei] stage: "integrated filter output" *******/
|
tomwalters@0
|
194
|
tomwalters@0
|
195 static Option fbiopts[] = {
|
tomwalters@0
|
196
|
tomwalters@0
|
197 { "igain_idt", igaindflt, &igainstr, "Gain of integration stage\n", OutputOption},
|
tomwalters@0
|
198 { "igain_idt", igaindflt, &igainstr, "Gain of integration stage\n", SilentOption},
|
tomwalters@0
|
199
|
tomwalters@0
|
200 { "vloss_idt", vlossdflt, &vlossstr, "Rest level for loss", OutputOption},
|
tomwalters@0
|
201 { "vloss_idt", vlossdflt, &vlossstr, "Rest level for loss", SilentOption},
|
tomwalters@0
|
202 { "loss_idt", lossdflt, &lossstr, "Loss time constant", OutputOption},
|
tomwalters@0
|
203 { "loss_idt", lossdflt, &lossstr, "Loss time constant", SilentOption},
|
tomwalters@0
|
204 { "tdown_idt", downdflt, &downstr, "Downward time constant in ms", OutputOption},
|
tomwalters@0
|
205 { "tdown_idt", downdflt, &downstr, "Downward time constant in ms", SilentOption},
|
tomwalters@0
|
206 { "tup_idt", updflt, &upstr, "Low-pass filter time constant in ms", InOutOption},
|
tomwalters@0
|
207 { "stages_idt", stagedflt, &stagestr, "Stages of integration\n", InOutOption},
|
tomwalters@0
|
208
|
tomwalters@0
|
209 ( char * ) 0 } ;
|
tomwalters@0
|
210
|
tomwalters@0
|
211 /*********** [spl,sai] [sie] stage: "stabilized auditory image" ************/
|
tomwalters@0
|
212
|
tomwalters@0
|
213 static Option saiopts[] = {
|
tomwalters@0
|
214
|
tomwalters@0
|
215 { "napdecay_ai", cgmdflt, &cgmstr, "Neural activity decay time constant", InOutOption},
|
tomwalters@0
|
216 { "ttdecay_ai", ttdflt, &ttstr, "Trigger threshold decay time constant", InOutOption},
|
tomwalters@0
|
217 { "utrate_ai", utlimdflt, &utlimstr, "Upper trigger rate limit (Hz)", InOutOption},
|
tomwalters@0
|
218 { "ltrate_ai", ltlimdflt, <limstr, "Lower trigger rate limit (Hz)", InOutOption},
|
tomwalters@0
|
219 { "decay_ai", decaydflt, &decaystr, "Auditory image decay time constant\n", InOutOption},
|
tomwalters@0
|
220
|
tomwalters@0
|
221 ( char * ) 0 } ;
|
tomwalters@0
|
222
|
tomwalters@0
|
223 /*********** [sas] [sse] stage: "stabilized auditory spectrogram" **********/
|
tomwalters@0
|
224
|
tomwalters@0
|
225 static Option sasopts[] = {
|
tomwalters@0
|
226
|
tomwalters@0
|
227 { "ulim_sas", ulimdflt, &ulimstr, "Upper integration limit for auditory image", InOutOption},
|
tomwalters@0
|
228 { "llim_sas", llimdflt, &llimstr, "Lower integration limit for auditory image\n", InOutOption},
|
tomwalters@0
|
229
|
tomwalters@0
|
230 ( char * ) 0 } ;
|
tomwalters@0
|
231
|