annotate aux/batchResample.m @ 15:24be5e9ce25b tip

Update README
author Brecht De Man <brecht.deman@bcu.ac.uk>
date Thu, 20 Sep 2018 12:23:20 +0200
parents 866c5da4d357
children
rev   line source
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