b@2
|
1 function [] = batchresample(foldername, fsnew, bitdepthnew)
|
b@2
|
2 % BATCHRESAMPLE converts sample rate of all files in folder.
|
b@2
|
3 %
|
b@0
|
4 % by Brecht De Man at Centre for Digital Music on 13 April 2014
|
b@0
|
5
|
b@2
|
6 if nargin < 2
|
b@2
|
7 fsnew = 96000;
|
b@2
|
8 end
|
b@0
|
9
|
b@2
|
10 if nargin < 3
|
b@2
|
11 bitdepthnew = 24;
|
b@0
|
12 end
|
b@8
|
13
|
b@0
|
14 % go over all wav files in this folder
|
b@8
|
15 files = dir([foldername '/*.wav']);
|
b@0
|
16
|
b@0
|
17 % remove hidden files from list
|
b@0
|
18 % see http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/258220
|
b@0
|
19 for k = length(files):-1:1
|
b@0
|
20 fname = files(k).name;
|
b@0
|
21 if fname(1) == '.'
|
b@2
|
22 files(k) = [];
|
b@0
|
23 end
|
b@0
|
24 end
|
b@0
|
25
|
b@0
|
26 for k=1:length(files)
|
b@8
|
27 info = audioinfo([foldername '/' files(k).name]);
|
b@2
|
28 bitdepth = info.BitsPerSample;
|
b@2
|
29 fs = info.SampleRate;
|
b@0
|
30
|
b@2
|
31 if fs==fsnew && bitdepth == bitdepthnew
|
b@2
|
32 disp([files(k).name ' already at ' num2str(fs) ' Hz, ' num2str(bitdepth) ' bit.']);
|
b@0
|
33 else
|
b@8
|
34 [audio,fs] = audioread([foldername '/' files(k).name]); % read audio
|
b@2
|
35 disp([files(k).name ' was ' num2str(fs) ' Hz, ' num2str(bitdepth) ' bit.']);
|
b@2
|
36 if fs ~= fsnew
|
b@12
|
37 %audio = resample(audio, fsnew, fs);
|
b@12
|
38
|
b@12
|
39 % exactly N seconds long
|
b@12
|
40 audio = [audio; zeros(fs - mod(size(audio,1), fs), size(audio, 2))];
|
b@12
|
41
|
b@12
|
42 H = dsp.FIRRateConverter('InterpolationFactor', fsnew, 'DecimationFactor', fs);
|
b@12
|
43 audio = step(H, audio); % resample
|
b@2
|
44 end
|
b@8
|
45 audiowrite([foldername '/' files(k).name], audio/max(max(abs(audio))), ...
|
b@12
|
46 fsnew, 'BitsPerSample', bitdepthnew); % peak normalised!
|
b@0
|
47 end
|
b@0
|
48 end
|
b@0
|
49
|
b@0
|
50 end |