To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at git://github.com/rmeddis/MAP.git .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Revision:

root / testPrograms / demoTwisterSpikes.m @ 33:161913b595ae

History | View | Annotate | Download (2.7 KB)

1
function demoTwisterSpikes
2

    
3
% MAPdemo runs the MATLAB auditory periphery model (MAP1_14) as far as
4
%  IC (spikes) with graphical output
5

    
6
restorePath=path;
7
addpath (['..' filesep 'MAP'],    ['..' filesep 'wavFileStore'], ...
8
    ['..' filesep 'utilities'])
9

    
10

    
11
%%  #1 parameter file name
12
MAPparamsName='Normal';
13

    
14

    
15
%% #2 spikes (slow) representation
16
AN_spikesOrProbability='spikes';
17

    
18

    
19
%% #3 speech file input
20
signalType= 'file';
21
fileName='twister_44kHz';
22

    
23

    
24
%% #4 rms level
25
% signal details
26
leveldBSPL=70;                  % dB SPL
27

    
28

    
29
%% #5 number of channels in the model
30
%   21-channel model (log spacing)
31
numChannels=21;
32
lowestBF=250; 	highestBF= 8000; 
33
BFlist=round(logspace(log10(lowestBF), log10(highestBF), numChannels));
34

    
35

    
36
%% #6 change model parameters
37
paramChanges=[];
38

    
39
%% delare showMap options
40
showMapOptions=[];  % use defaults
41

    
42
% or (example: show everything including an smoothed SACF output
43
    showMapOptions.printModelParameters=1;
44
    showMapOptions.showModelOutput=1;
45
    showMapOptions.printFiringRates=1;
46
    showMapOptions.showACF=0;
47
    showMapOptions.showEfferent=0;
48
    showMapOptions.surfSpikes=0;
49
    showMapOptions.surfProbability=0;       % 2D plot of HSR response 
50

    
51
%% Generate stimuli
52
switch signalType
53
    case 'tones'
54
        inputSignal=createMultiTone(sampleRate, toneFrequency, ...
55
            leveldBSPL, duration, rampDuration);
56
        
57
    case 'file'
58
        [inputSignal sampleRate]=wavread(fileName);       
59
        inputSignal(:,1);
60
        targetRMS=20e-6*10^(leveldBSPL/20);
61
        rms=(mean(inputSignal.^2))^0.5;
62
        amp=targetRMS/rms;
63
        inputSignal=inputSignal*amp;
64
end
65

    
66

    
67
%% run the model
68
tic
69

    
70
fprintf('\n')
71
disp(['Signal duration= ' num2str(length(inputSignal)/sampleRate)])
72
disp([num2str(numChannels) ' channel model'])
73
disp('Computing ...')
74

    
75
MAP1_14(inputSignal, sampleRate, BFlist, ...
76
    MAPparamsName, AN_spikesOrProbability, paramChanges);
77

    
78

    
79
% the model run is now complete. Now display the results
80
UTIL_showMAP(showMapOptions, paramChanges)
81

    
82
toc
83
path(restorePath)
84

    
85
function inputSignal=createMultiTone(sampleRate, toneFrequency, ...
86
    leveldBSPL, duration, rampDuration)
87
% Create pure tone stimulus
88
dt=1/sampleRate; % seconds
89
time=dt: dt: duration;
90
inputSignal=sum(sin(2*pi*toneFrequency'*time), 1);
91
amp=10^(leveldBSPL/20)*28e-6;   % converts to Pascals (peak)
92
inputSignal=amp*inputSignal;
93

    
94
% apply ramps
95
% catch rampTime error
96
if rampDuration>0.5*duration, rampDuration=duration/2; end
97
rampTime=dt:dt:rampDuration;
98
ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ...
99
    ones(1,length(time)-length(rampTime))];
100
inputSignal=inputSignal.*ramp;
101
ramp=fliplr(ramp);
102
inputSignal=inputSignal.*ramp;
103

    
104
% add 10 ms silence
105
silence= zeros(1,round(0.03/dt));
106
% inputSignal= [silence inputSignal silence];
107