annotate 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
rev   line source
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;