0001 function out=DIVA_Cochlea(action,varargin);
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 out=[];
0020 global DIVA_Cochlea_data
0021 if nargin<1,
0022 action='init';
0023 end
0024
0025 switch(lower(action)),
0026
0027
0028 case 'init',
0029 SessionFolder=strcat(DIVA('SessionFolder'),filesep);
0030 if nargin<2 | isempty(varargin{1}),
0031 initfile='';
0032 else,
0033 initfile=[SessionFolder,'Session_',varargin{1},filesep,mfilename,'.mat'];
0034 end
0035
0036 if isempty(initfile) | isempty(dir(initfile)),
0037 disp([mfilename, ' : Defining new session...']);
0038 DIVA_Cochlea_data.params=struct(...
0039 'fs',10000,...
0040 'delayToForwardModel',.05,...
0041 'delayToAuditoryCortex',.005);
0042 else,
0043 data=load(initfile,'-mat');
0044 DIVA_Cochlea_data.params=data.params;
0045 end
0046 out={};
0047
0048 case 'save',
0049 SessionFolder = strcat(DIVA('SessionFolder'),filesep);
0050 if nargin<2,
0051 initfile=[SessionFolder,'Session_','default',filesep,mfilename,'.mat'];
0052 else,
0053 initfile=[SessionFolder,'Session_',varargin{1},filesep,mfilename,'.mat'];
0054 end
0055 params=DIVA_Cochlea_data.params;
0056 save(initfile,'params');
0057
0058 case 'exit',
0059 clear DIVA_Cochlea_data;
0060
0061 case 'disp',
0062 disp(DIVA_Cochlea_data.params);
0063 out=fieldnames(DIVA_Cochlea_data.params);
0064
0065
0066
0067
0068 case 'sound',
0069
0070
0071
0072 s=varargin{1};
0073
0074 if nargin<4 | isempty(varargin{3}),
0075 delay=0;
0076 else,
0077 delay=varargin{3};
0078 end
0079
0080 DIVA_Cochlea_data.params.s = s;
0081 out = s;
0082
0083
0084
0085
0086 if ~nargout,
0087 DIVA('AuditoryCortex','sound',cat(2,out,nan+zeros(size(out,1),1)),...
0088 delay+DIVA_Cochlea_data.params.delayToAuditoryCortex);
0089 end
0090
0091
0092 case 'spectrogram',
0093 y=varargin{1};
0094 win=hamming(round(0.02*DIVA_Cochlea_data.params.fs));
0095
0096 if(nargout),
0097 if(strcmp(release_version,'R2006b')),
0098 [Y,f,t]=spectrogram(filtfilt([1 -0.95],1,y),win,...
0099 length(win)-round(0.001*DIVA_Cochlea_data.params.fs),...
0100 256,DIVA_Cochlea_data.params.fs);
0101 else,
0102 [Y,f,t]=specgram(filtfilt([1 -0.95],1,y),256,DIVA_Cochlea_data.params.fs,...
0103 win,length(win)-round(0.001*DIVA_Cochlea_data.params.fs));
0104 end
0105 out={Y,f,t};
0106
0107 end
0108
0109 otherwise,
0110 if isfield(DIVA_Cochlea_data.params,action),
0111 if nargin<2,
0112 out=DIVA_Cochlea_data.params.(action);
0113 else,
0114 DIVA_Cochlea_data.params.(action)=varargin{1};
0115 end
0116 else,
0117 warning('DIVA_Cochlea: wrong argument');
0118 end
0119 end