comparison multiThreshold 1.46/OHIOtest.m @ 38:c2204b18f4a2 tip

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