tom@516
|
1 % Copyright 2012, Google, Inc.
|
tom@516
|
2 % Author: Richard F. Lyon
|
tom@516
|
3 %
|
tom@516
|
4 % This Matlab file is part of an implementation of Lyon's cochlear model:
|
tom@516
|
5 % "Cascade of Asymmetric Resonators with Fast-Acting Compression"
|
tom@516
|
6 % to supplement Lyon's upcoming book "Human and Machine Hearing"
|
tom@516
|
7 %
|
tom@516
|
8 % Licensed under the Apache License, Version 2.0 (the "License");
|
tom@516
|
9 % you may not use this file except in compliance with the License.
|
tom@516
|
10 % You may obtain a copy of the License at
|
tom@516
|
11 %
|
tom@516
|
12 % http://www.apache.org/licenses/LICENSE-2.0
|
tom@516
|
13 %
|
tom@516
|
14 % Unless required by applicable law or agreed to in writing, software
|
tom@516
|
15 % distributed under the License is distributed on an "AS IS" BASIS,
|
tom@516
|
16 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
tom@516
|
17 % See the License for the specific language governing permissions and
|
tom@516
|
18 % limitations under the License.
|
tom@516
|
19
|
tom@516
|
20 % Test/demo hacking for audio/hearing/filterbanks/carfac/matlab/ stuff
|
tom@516
|
21
|
tom@516
|
22 clear variables
|
tom@516
|
23
|
tom@516
|
24 agc_plot_fig_num = 1;
|
tom@516
|
25
|
tom@516
|
26 tic
|
tom@516
|
27
|
tom@516
|
28 %test_signal = wavread('pbav4p-22050.wav');
|
tom@516
|
29 test_signal = wavread('plan-twochannel-1ms.wav')
|
tom@516
|
30 %test_signal = wavread('binaural.wav')
|
tom@516
|
31 %test_signal = test_signal(20000:2); % trim for a faster test
|
tom@516
|
32
|
tom@516
|
33 CF_struct = CARFAC_Design; % default design
|
tom@516
|
34 cum_k = 0; % not doing segments, so just count from 0
|
tom@516
|
35
|
tom@516
|
36 % Run mono, then stereo test:
|
tom@516
|
37 n_mics = 2
|
tom@516
|
38 CF_struct = CARFAC_Init(CF_struct, n_mics);
|
tom@516
|
39
|
tom@516
|
40 [nap, CF_struct, cum_k, nap_decim] = ...
|
tom@516
|
41 CARFAC_Run(CF_struct, test_signal, cum_k, agc_plot_fig_num);
|
tom@516
|
42
|
tom@516
|
43 % Display results for 1 or 2 mics:
|
tom@516
|
44 for mic = 1:n_mics
|
tom@516
|
45 smooth_nap = nap_decim(:, :, mic);
|
tom@516
|
46 figure(mic + n_mics) % Makes figures 2, 3, and 4
|
tom@516
|
47 image(63 * ((smooth_nap)' .^ 0.5))
|
tom@516
|
48
|
tom@516
|
49 colormap(1 - gray);
|
tom@516
|
50 end
|
tom@516
|
51
|
tom@516
|
52 toc
|
tom@516
|
53
|
tom@516
|
54 % Show resulting data, even though M-Lint complains:
|
tom@516
|
55 cum_k
|
tom@516
|
56 CF_struct
|
tom@516
|
57 CF_struct.filter_state
|
tom@516
|
58 CF_struct.AGC_state
|
tom@516
|
59 min_max = [min(nap(:)), max(nap(:))]
|
tom@516
|
60 min_max_decim = [min(nap_decim(:)), max(nap_decim(:))]
|