b@0
|
1 function prepare2listen
|
b@0
|
2 % PREPARE2LISTEN equalises loudness of files to prepare for
|
b@0
|
3 % listening test.
|
b@0
|
4 %
|
b@0
|
5 % by Brecht De Man at Centre for Digital Music, 5 June 2013
|
b@0
|
6
|
b@0
|
7 folder = '/Users/Brecht/Documents/MATLAB/McGillTest2014/listeningTest/AUDIO/SR2_UnderACoveredSky/Clips/';
|
b@0
|
8 newfolder = 'equalloudness';
|
b@0
|
9 list = dir([folder '/*.wav']);
|
b@0
|
10 slash = '/';
|
b@0
|
11
|
b@0
|
12 % open files and calculate minimum loudness
|
b@0
|
13 MIN = 0;
|
b@0
|
14 x = struct([]);
|
b@0
|
15 for i = 1:length(list)
|
b@0
|
16 disp([folder newfolder slash list(i).name]); % DEBUG
|
b@0
|
17 [x{i}.audio,fs] = audioread([folder list(i).name]);
|
b@0
|
18 x{i}.loudness = loudness_itu(x{i}.audio, fs);
|
b@0
|
19 MIN = min(MIN, floor(x{i}.loudness)); % compute minimum loudness
|
b@0
|
20 end
|
b@0
|
21
|
b@0
|
22 % make folder
|
b@0
|
23 if ~exist([folder 'equalloudness'], 'dir') % make folder 'equalloudness' if not there
|
b@0
|
24 mkdir(folder, 'equalloudness');
|
b@0
|
25 end
|
b@0
|
26
|
b@0
|
27 % equalise loudness
|
b@0
|
28 MAX = 0;
|
b@0
|
29 for i = 1:length(list)
|
b@0
|
30 x{i}.equalised = loudness_match(x{i}.audio, fs, MIN)*x{i}.audio;
|
b@0
|
31 MAX = max(MAX, max(max(abs(x{i}.equalised))));
|
b@0
|
32 end
|
b@0
|
33
|
b@0
|
34 % normalise (keeping relative loudness) and save
|
b@0
|
35 for i = 1:length(list)
|
b@0
|
36 audiowrite([folder newfolder '\' list(i).name], x{i}.equalised/MAX, ...
|
b@0
|
37 fs, 'BitsPerSample', 24);
|
b@0
|
38 end
|
b@0
|
39
|
b@0
|
40 end |