rmeddis@38
|
1 dbstop if error
|
rmeddis@38
|
2 path=pathdef;
|
rmeddis@38
|
3 restorePath=path;
|
rmeddis@38
|
4 addpath (['..' filesep 'utilities']) % model physiology tests
|
rmeddis@38
|
5
|
rmeddis@38
|
6 globalStimParams.FS=100000;
|
rmeddis@38
|
7 doPlot=0;
|
rmeddis@38
|
8
|
rmeddis@38
|
9 stim.type='OHIO';
|
rmeddis@38
|
10 stim.OHIOtype='OHIOrand';
|
rmeddis@38
|
11 stim.phases='sin';
|
rmeddis@38
|
12 stim.beginSilence=0;
|
rmeddis@38
|
13 stim.endSilence=-1;
|
rmeddis@38
|
14 stim.rampOnDur=.002;
|
rmeddis@38
|
15 stim.rampOffDur=-1;
|
rmeddis@38
|
16
|
rmeddis@38
|
17 % 1. ‘OHIOabs’ paradigm is a baseline procedure for measuring absolute
|
rmeddis@38
|
18 % thresholds (in dB SPL) of the single tone with 12 frequencies:
|
rmeddis@38
|
19 % 1 2 3 4 5 6 7 8 9 10 11 12
|
rmeddis@38
|
20 % 494, 663, 870, 1125, 1442, 1838, 2338, 2957, 3725, 4689, 5866, 7334
|
rmeddis@38
|
21
|
rmeddis@38
|
22 % 2. ‘OHIOtemp’ is for measuring thresholds for temporally integrated
|
rmeddis@38
|
23 % combinations of 2, 4, 8, and 12 tones presented simultaneously.
|
rmeddis@38
|
24 % In our experiment, we used 4680Hz frequency.
|
rmeddis@38
|
25
|
rmeddis@38
|
26 % 3. ‘OHIOspec’ is for measuring thresholds for spectrally integrated
|
rmeddis@38
|
27 % combinations of 2(7335 and 5866Hz), 4(7334, 5866, 4680, and 3725Hz),
|
rmeddis@38
|
28 % 8(7334, 5866, 4680, 3725, 2957, 2338, 1838, and
|
rmeddis@38
|
29 % 1442Hz), and
|
rmeddis@38
|
30 % 12(all 12 frequencies) tones presented simultaneously.
|
rmeddis@38
|
31
|
rmeddis@38
|
32 % 4. ‘OHIOspectemp’ is for measuring thresholds for patterned signals
|
rmeddis@38
|
33 % differing in both the spectral and temporal domains.
|
rmeddis@38
|
34 % The frequency conditions are the same as that of ‘OHIOspec’.
|
rmeddis@38
|
35
|
rmeddis@38
|
36 % 5. ‘OHIOrand’ is for measuring thresholds for spectrotemporally varying
|
rmeddis@38
|
37 % signals with random frequency presentation.
|
rmeddis@38
|
38
|
rmeddis@38
|
39 nTonesList=[2 4 8 12];
|
rmeddis@38
|
40 allFreqs=[494, 663, 870, 1125, 1442, 1838, 2338, 2957, 3725, 4689, 5866, 7334];
|
rmeddis@38
|
41 absThresholds= 50*ones(1,12); % protem
|
rmeddis@38
|
42
|
rmeddis@38
|
43 for nTones=nTonesList
|
rmeddis@38
|
44 switch stim.OHIOtype
|
rmeddis@38
|
45 case ' OHIOabs'
|
rmeddis@38
|
46 % one tone frequency at a time
|
rmeddis@38
|
47 stim.frequencies=allFreqs(1);
|
rmeddis@38
|
48 stim.amplitudesdB=0;
|
rmeddis@38
|
49
|
rmeddis@38
|
50 case 'OHIOrand'
|
rmeddis@38
|
51 % chose nTones frequencies at random
|
rmeddis@38
|
52 x=rand(1,12);
|
rmeddis@38
|
53 [sorted idx]=sort(x);
|
rmeddis@38
|
54 stim.frequencies=allFreqs(idx(1:nTones));
|
rmeddis@38
|
55 stim.amplitudesdB=absThresholds(idx);
|
rmeddis@38
|
56
|
rmeddis@38
|
57 case 'OHIOtemp'
|
rmeddis@38
|
58 % 4680 Hz repeated nTones times
|
rmeddis@38
|
59 stim.frequencies=4680*ones(1,nTones);
|
rmeddis@38
|
60 stim.amplitudesdB=repmat(absThresholds(10),1,nTones);
|
rmeddis@38
|
61
|
rmeddis@38
|
62 case {'OHIOspect', 'OHIOspectemp'}
|
rmeddis@38
|
63 % nTones frequencies either simulataneously or sequentially
|
rmeddis@38
|
64 switch nTones
|
rmeddis@38
|
65 case 2
|
rmeddis@38
|
66 stim.frequencies=[7335 5866];
|
rmeddis@38
|
67 idx=[12 11];
|
rmeddis@38
|
68 stim.amplitudesdB=absThresholds(idx);
|
rmeddis@38
|
69 case 4
|
rmeddis@38
|
70 stim.frequencies=[7334, 5866, 4680, 3725];
|
rmeddis@38
|
71 idx=[12:-1:9 ];
|
rmeddis@38
|
72 stim.amplitudesdB=absThresholds(idx);
|
rmeddis@38
|
73 case 8
|
rmeddis@38
|
74 stim.frequencies=...
|
rmeddis@38
|
75 [7334, 5866, 4680, 3725, 2957, 2338, 1838, 1442];
|
rmeddis@38
|
76 idx=[12:-1:5 ];
|
rmeddis@38
|
77 stim.amplitudesdB=absThresholds(idx);
|
rmeddis@38
|
78 case 12
|
rmeddis@38
|
79 stim.frequencies=allFreqs;
|
rmeddis@38
|
80 idx=[12:-1:1 ];
|
rmeddis@38
|
81 stim.amplitudesdB=absThresholds(idx);
|
rmeddis@38
|
82 end
|
rmeddis@38
|
83 end
|
rmeddis@38
|
84
|
rmeddis@38
|
85 switch stim.OHIOtype
|
rmeddis@38
|
86 case {'OHIOabs', 'OHIOspect'}
|
rmeddis@38
|
87 stim.toneDuration=.02;
|
rmeddis@38
|
88 globalStimParams.overallDuration=stim.toneDuration;
|
rmeddis@38
|
89 otherwise
|
rmeddis@38
|
90 stim.toneDuration=nTones*0.02;
|
rmeddis@38
|
91 globalStimParams.overallDuration=stim.toneDuration;
|
rmeddis@38
|
92 end
|
rmeddis@38
|
93
|
rmeddis@38
|
94 disp(num2str(stim.frequencies))
|
rmeddis@38
|
95
|
rmeddis@38
|
96 [audio, msg]=stimulusCreate(globalStimParams, stim, doPlot);
|
rmeddis@38
|
97 wavplay(audio,globalStimParams.FS)
|
rmeddis@38
|
98 end
|
rmeddis@38
|
99 path=restorePath;
|