rmeddis@38
|
1 function MAPrunner(MAPparamsName, AN_spikesOrProbability, ...
|
rmeddis@38
|
2 signalCharacteristics, paramChanges, showMapOptions)
|
rmeddis@38
|
3
|
rmeddis@38
|
4 dbstop if error
|
rmeddis@38
|
5 restorePath=path;
|
rmeddis@38
|
6 addpath (['..' filesep 'MAP'], ['..' filesep 'wavFileStore'], ...
|
rmeddis@38
|
7 ['..' filesep 'utilities'])
|
rmeddis@38
|
8
|
rmeddis@38
|
9
|
rmeddis@38
|
10 %% #3 pure tone, harmonic sequence or speech file input
|
rmeddis@38
|
11 signalType= signalCharacteristics.type;
|
rmeddis@38
|
12 sampleRate= signalCharacteristics.sampleRate;
|
rmeddis@38
|
13 duration=signalCharacteristics.duration; % seconds
|
rmeddis@38
|
14 rampDuration=signalCharacteristics.rampDuration; % raised cosine ramp (seconds)
|
rmeddis@38
|
15 beginSilence=signalCharacteristics.beginSilence;
|
rmeddis@38
|
16 endSilence=signalCharacteristics.endSilence;
|
rmeddis@38
|
17 toneFrequency= signalCharacteristics.toneFrequency; % or a pure tone (Hz)
|
rmeddis@38
|
18 leveldBSPL=signalCharacteristics.leveldBSPL;
|
rmeddis@38
|
19
|
rmeddis@38
|
20 BFlist=-1;
|
rmeddis@38
|
21
|
rmeddis@38
|
22
|
rmeddis@38
|
23 %% Generate stimuli
|
rmeddis@38
|
24
|
rmeddis@38
|
25 switch signalType
|
rmeddis@38
|
26 case 'tones'
|
rmeddis@38
|
27 % Create pure tone stimulus
|
rmeddis@38
|
28 dt=1/sampleRate; % seconds
|
rmeddis@38
|
29 time=dt: dt: duration;
|
rmeddis@38
|
30 inputSignal=sum(sin(2*pi*toneFrequency'*time), 1);
|
rmeddis@38
|
31 amp=10^(leveldBSPL/20)*28e-6; % converts to Pascals (peak)
|
rmeddis@38
|
32 inputSignal=amp*inputSignal;
|
rmeddis@38
|
33 % apply ramps
|
rmeddis@38
|
34 % catch rampTime error
|
rmeddis@38
|
35 if rampDuration>0.5*duration, rampDuration=duration/2; end
|
rmeddis@38
|
36 rampTime=dt:dt:rampDuration;
|
rmeddis@38
|
37 ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ...
|
rmeddis@38
|
38 ones(1,length(time)-length(rampTime))];
|
rmeddis@38
|
39 inputSignal=inputSignal.*ramp;
|
rmeddis@38
|
40 ramp=fliplr(ramp);
|
rmeddis@38
|
41 inputSignal=inputSignal.*ramp;
|
rmeddis@38
|
42 % add silence
|
rmeddis@38
|
43 intialSilence= zeros(1,round(beginSilence/dt));
|
rmeddis@38
|
44 finalSilence= zeros(1,round(endSilence/dt));
|
rmeddis@38
|
45 inputSignal= [intialSilence inputSignal finalSilence];
|
rmeddis@38
|
46
|
rmeddis@38
|
47 case 'file'
|
rmeddis@38
|
48 %% file input simple or mixed
|
rmeddis@38
|
49 [inputSignal sampleRate]=wavread(fileName);
|
rmeddis@38
|
50 dt=1/sampleRate;
|
rmeddis@38
|
51 inputSignal=inputSignal(:,1);
|
rmeddis@38
|
52 targetRMS=20e-6*10^(leveldBSPL/20);
|
rmeddis@38
|
53 rms=(mean(inputSignal.^2))^0.5;
|
rmeddis@38
|
54 amp=targetRMS/rms;
|
rmeddis@38
|
55 inputSignal=inputSignal*amp;
|
rmeddis@38
|
56 intialSilence= zeros(1,round(0.1/dt));
|
rmeddis@38
|
57 finalSilence= zeros(1,round(0.2/dt));
|
rmeddis@38
|
58 inputSignal= [intialSilence inputSignal' finalSilence];
|
rmeddis@38
|
59 end
|
rmeddis@38
|
60
|
rmeddis@38
|
61
|
rmeddis@38
|
62 %% run the model
|
rmeddis@38
|
63
|
rmeddis@38
|
64 MAP1_14(inputSignal, sampleRate, BFlist, ...
|
rmeddis@38
|
65 MAPparamsName, AN_spikesOrProbability, paramChanges);
|
rmeddis@38
|
66
|
rmeddis@38
|
67 %% the model run is now complete. Now display the results
|
rmeddis@38
|
68 UTIL_showMAP(showMapOptions, paramChanges)
|
rmeddis@38
|
69
|
rmeddis@38
|
70 path(restorePath)
|
rmeddis@38
|
71
|