rmeddis@38: dbstop if error rmeddis@38: path=pathdef; rmeddis@38: restorePath=path; rmeddis@38: addpath (['..' filesep 'utilities']) % model physiology tests rmeddis@38: rmeddis@38: globalStimParams.FS=100000; rmeddis@38: doPlot=0; rmeddis@38: rmeddis@38: stim.type='OHIO'; rmeddis@38: stim.OHIOtype='OHIOrand'; rmeddis@38: stim.phases='sin'; rmeddis@38: stim.beginSilence=0; rmeddis@38: stim.endSilence=-1; rmeddis@38: stim.rampOnDur=.002; rmeddis@38: stim.rampOffDur=-1; rmeddis@38: rmeddis@38: % 1. ‘OHIOabs’ paradigm is a baseline procedure for measuring absolute rmeddis@38: % thresholds (in dB SPL) of the single tone with 12 frequencies: rmeddis@38: % 1 2 3 4 5 6 7 8 9 10 11 12 rmeddis@38: % 494, 663, 870, 1125, 1442, 1838, 2338, 2957, 3725, 4689, 5866, 7334 rmeddis@38: rmeddis@38: % 2. ‘OHIOtemp’ is for measuring thresholds for temporally integrated rmeddis@38: % combinations of 2, 4, 8, and 12 tones presented simultaneously. rmeddis@38: % In our experiment, we used 4680Hz frequency. rmeddis@38: rmeddis@38: % 3. ‘OHIOspec’ is for measuring thresholds for spectrally integrated rmeddis@38: % combinations of 2(7335 and 5866Hz), 4(7334, 5866, 4680, and 3725Hz), rmeddis@38: % 8(7334, 5866, 4680, 3725, 2957, 2338, 1838, and rmeddis@38: % 1442Hz), and rmeddis@38: % 12(all 12 frequencies) tones presented simultaneously. rmeddis@38: rmeddis@38: % 4. ‘OHIOspectemp’ is for measuring thresholds for patterned signals rmeddis@38: % differing in both the spectral and temporal domains. rmeddis@38: % The frequency conditions are the same as that of ‘OHIOspec’. rmeddis@38: rmeddis@38: % 5. ‘OHIOrand’ is for measuring thresholds for spectrotemporally varying rmeddis@38: % signals with random frequency presentation. rmeddis@38: rmeddis@38: nTonesList=[2 4 8 12]; rmeddis@38: allFreqs=[494, 663, 870, 1125, 1442, 1838, 2338, 2957, 3725, 4689, 5866, 7334]; rmeddis@38: absThresholds= 50*ones(1,12); % protem rmeddis@38: rmeddis@38: for nTones=nTonesList rmeddis@38: switch stim.OHIOtype rmeddis@38: case ' OHIOabs' rmeddis@38: % one tone frequency at a time rmeddis@38: stim.frequencies=allFreqs(1); rmeddis@38: stim.amplitudesdB=0; rmeddis@38: rmeddis@38: case 'OHIOrand' rmeddis@38: % chose nTones frequencies at random rmeddis@38: x=rand(1,12); rmeddis@38: [sorted idx]=sort(x); rmeddis@38: stim.frequencies=allFreqs(idx(1:nTones)); rmeddis@38: stim.amplitudesdB=absThresholds(idx); rmeddis@38: rmeddis@38: case 'OHIOtemp' rmeddis@38: % 4680 Hz repeated nTones times rmeddis@38: stim.frequencies=4680*ones(1,nTones); rmeddis@38: stim.amplitudesdB=repmat(absThresholds(10),1,nTones); rmeddis@38: rmeddis@38: case {'OHIOspect', 'OHIOspectemp'} rmeddis@38: % nTones frequencies either simulataneously or sequentially rmeddis@38: switch nTones rmeddis@38: case 2 rmeddis@38: stim.frequencies=[7335 5866]; rmeddis@38: idx=[12 11]; rmeddis@38: stim.amplitudesdB=absThresholds(idx); rmeddis@38: case 4 rmeddis@38: stim.frequencies=[7334, 5866, 4680, 3725]; rmeddis@38: idx=[12:-1:9 ]; rmeddis@38: stim.amplitudesdB=absThresholds(idx); rmeddis@38: case 8 rmeddis@38: stim.frequencies=... rmeddis@38: [7334, 5866, 4680, 3725, 2957, 2338, 1838, 1442]; rmeddis@38: idx=[12:-1:5 ]; rmeddis@38: stim.amplitudesdB=absThresholds(idx); rmeddis@38: case 12 rmeddis@38: stim.frequencies=allFreqs; rmeddis@38: idx=[12:-1:1 ]; rmeddis@38: stim.amplitudesdB=absThresholds(idx); rmeddis@38: end rmeddis@38: end rmeddis@38: rmeddis@38: switch stim.OHIOtype rmeddis@38: case {'OHIOabs', 'OHIOspect'} rmeddis@38: stim.toneDuration=.02; rmeddis@38: globalStimParams.overallDuration=stim.toneDuration; rmeddis@38: otherwise rmeddis@38: stim.toneDuration=nTones*0.02; rmeddis@38: globalStimParams.overallDuration=stim.toneDuration; rmeddis@38: end rmeddis@38: rmeddis@38: disp(num2str(stim.frequencies)) rmeddis@38: rmeddis@38: [audio, msg]=stimulusCreate(globalStimParams, stim, doPlot); rmeddis@38: wavplay(audio,globalStimParams.FS) rmeddis@38: end rmeddis@38: path=restorePath;