alexbrandmeyer@668
|
1 % Author: Alex Brandmeyer
|
alexbrandmeyer@668
|
2 %
|
alexbrandmeyer@668
|
3 % This Matlab file is part of an implementation of Lyon's cochlear model:
|
alexbrandmeyer@668
|
4 % "Cascade of Asymmetric Resonators with Fast-Acting Compression"
|
alexbrandmeyer@668
|
5 % to supplement Lyon's upcoming book "Human and Machine Hearing"
|
alexbrandmeyer@668
|
6 %
|
alexbrandmeyer@668
|
7 % Licensed under the Apache License, Version 2.0 (the "License");
|
alexbrandmeyer@668
|
8 % you may not use this file except in compliance with the License.
|
alexbrandmeyer@668
|
9 % You may obtain a copy of the License at
|
alexbrandmeyer@668
|
10 %
|
alexbrandmeyer@668
|
11 % http://www.apache.org/licenses/LICENSE-2.0
|
alexbrandmeyer@668
|
12 %
|
alexbrandmeyer@668
|
13 % Unless required by applicable law or agreed to in writing, software
|
alexbrandmeyer@668
|
14 % distributed under the License is distributed on an "AS IS" BASIS,
|
alexbrandmeyer@668
|
15 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
alexbrandmeyer@668
|
16 % See the License for the specific language governing permissions and
|
alexbrandmeyer@668
|
17 % limitations under the License.
|
alexbrandmeyer@668
|
18
|
alexbrandmeyer@668
|
19 function CARFAC_GenerateTestData()
|
alexbrandmeyer@668
|
20 % function GenerateTestData()
|
alexbrandmeyer@668
|
21 % This function generates a set of text files in the AIMC repository that
|
alexbrandmeyer@668
|
22 % can be used to compare the output of the C++ version of CARFAC with that
|
alexbrandmeyer@668
|
23 % of the Matlab version.
|
alexbrandmeyer@668
|
24
|
alexbrandmeyer@668
|
25 % This designates a subdirectory of the C++ CARFAC folder to store the
|
alexbrandmeyer@668
|
26 % test data
|
alexbrandmeyer@668
|
27 data_dir = '../../../carfac/test_data/';
|
alexbrandmeyer@678
|
28 precision_level = 9;
|
alexbrandmeyer@668
|
29
|
alexbrandmeyer@678
|
30 % The following section generates data for the binaural test of the C++
|
alexbrandmeyer@678
|
31 % version of CARFAC.
|
alexbrandmeyer@678
|
32 n_ears = 2;
|
alexbrandmeyer@678
|
33
|
alexbrandmeyer@678
|
34 file_signal = wavread('plan.wav');
|
alexbrandmeyer@678
|
35 file_signal = file_signal(9000:9903); % trim for a faster test
|
alexbrandmeyer@678
|
36
|
alexbrandmeyer@678
|
37 itd_offset = 22; % about 1 ms
|
alexbrandmeyer@678
|
38 test_signal = [file_signal((itd_offset+1):end), ...
|
alexbrandmeyer@678
|
39 file_signal(1:(end-itd_offset))] / 10;
|
alexbrandmeyer@678
|
40
|
alexbrandmeyer@678
|
41 filename = 'file_signal_binaural_test.txt'
|
alexbrandmeyer@678
|
42 data = test_signal;
|
alexbrandmeyer@678
|
43 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|
alexbrandmeyer@678
|
44
|
alexbrandmeyer@678
|
45 CF_struct = CARFAC_Design(n_ears);
|
alexbrandmeyer@678
|
46 CF_struct = CARFAC_Init(CF_struct);
|
alexbrandmeyer@678
|
47 [CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal);
|
alexbrandmeyer@678
|
48
|
alexbrandmeyer@678
|
49 %Store the data for each each as individual 2d text data.
|
alexbrandmeyer@678
|
50 nap1 = nap(:,:,1);
|
alexbrandmeyer@678
|
51 nap2 = nap(:,:,2);
|
alexbrandmeyer@678
|
52 bm1 = bm(:,:,1);
|
alexbrandmeyer@678
|
53 bm2 = bm(:,:,2);
|
alexbrandmeyer@678
|
54
|
alexbrandmeyer@678
|
55 filename = 'binaural_test_nap1.txt'
|
alexbrandmeyer@678
|
56 data = nap1;
|
alexbrandmeyer@678
|
57 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|
alexbrandmeyer@678
|
58
|
alexbrandmeyer@678
|
59 filename = 'binaural_test_bm1.txt'
|
alexbrandmeyer@678
|
60 data = bm1;
|
alexbrandmeyer@678
|
61 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|
alexbrandmeyer@678
|
62
|
alexbrandmeyer@678
|
63 filename = 'binaural_test_nap2.txt'
|
alexbrandmeyer@678
|
64 data = nap2;
|
alexbrandmeyer@678
|
65 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|
alexbrandmeyer@678
|
66
|
alexbrandmeyer@678
|
67 filename = 'binaural_test_bm2.txt'
|
alexbrandmeyer@678
|
68 data = bm2;
|
alexbrandmeyer@678
|
69 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|
alexbrandmeyer@668
|
70
|
alexbrandmeyer@668
|
71
|
alexbrandmeyer@678
|
72 % Longer audio segment test
|
alexbrandmeyer@668
|
73
|
alexbrandmeyer@678
|
74 n_ears = 2;
|
alexbrandmeyer@678
|
75 start = 80001;
|
alexbrandmeyer@678
|
76 n_timepoints = 2000;
|
alexbrandmeyer@678
|
77
|
alexbrandmeyer@678
|
78 [test_signal, fs] = wavread([data_dir 'Anka_SLTS.wav']);
|
alexbrandmeyer@678
|
79 test_signal = test_signal(start:start+n_timepoints-1,:);
|
alexbrandmeyer@678
|
80 size(test_signal)
|
alexbrandmeyer@678
|
81
|
alexbrandmeyer@678
|
82 filename = 'file_signal_long_test.txt'
|
alexbrandmeyer@678
|
83 data = test_signal;
|
alexbrandmeyer@678
|
84 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|
alexbrandmeyer@678
|
85
|
alexbrandmeyer@678
|
86 CF_struct = CARFAC_Design(n_ears, fs);
|
alexbrandmeyer@678
|
87 CF_struct = CARFAC_Init(CF_struct);
|
alexbrandmeyer@678
|
88 [CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal);
|
alexbrandmeyer@678
|
89
|
alexbrandmeyer@678
|
90 %Store the data for each each as individual 2d text data.
|
alexbrandmeyer@678
|
91 nap1 = nap(:,:,1);
|
alexbrandmeyer@678
|
92 nap2 = nap(:,:,2);
|
alexbrandmeyer@678
|
93 bm1 = bm(:,:,1);
|
alexbrandmeyer@678
|
94 bm2 = bm(:,:,2);
|
alexbrandmeyer@678
|
95
|
alexbrandmeyer@678
|
96 filename = 'long_test_nap1.txt'
|
alexbrandmeyer@678
|
97 data = nap1;
|
alexbrandmeyer@678
|
98 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|
alexbrandmeyer@678
|
99
|
alexbrandmeyer@678
|
100 filename = 'long_test_bm1.txt'
|
alexbrandmeyer@678
|
101 data = bm1;
|
alexbrandmeyer@678
|
102 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|
alexbrandmeyer@678
|
103
|
alexbrandmeyer@678
|
104 filename = 'long_test_nap2.txt'
|
alexbrandmeyer@678
|
105 data = nap2;
|
alexbrandmeyer@678
|
106 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|
alexbrandmeyer@678
|
107
|
alexbrandmeyer@678
|
108 filename = 'long_test_bm2.txt'
|
alexbrandmeyer@678
|
109 data = bm2;
|
alexbrandmeyer@678
|
110 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
|