annotate aux/clipfade.m @ 0:4fd284285159

Adding listening test plus some helpful functions and scripts.
author Brecht <b.deman@qmul.ac.uk>
date Thu, 24 Apr 2014 23:53:31 +0100
parents
children b28ffd29e6e1
rev   line source
b@0 1 function clipfade(folder, startTime, endTime, fs)
b@0 2 % CLIPFADE clips and fades a fragment [start end] of all audio files in
b@0 3 % a folder.
b@0 4 %
b@0 5 % folder: path to all audio files (automatically selected)
b@0 6 % start: start time in seconds
b@0 7 % end: end time in seconds
b@0 8 %
b@0 9 % by Brecht De Man at Centre for Digital Music on 25 October 2013
b@0 10
b@0 11 if nargin < 4
b@0 12 fs = 96000;
b@0 13 end
b@0 14
b@0 15 fadeTime = 1; % fade time in seconds
b@0 16 bitDepth = 16;
b@0 17 slash = '/'; % depending on OS
b@0 18
b@0 19 %newFolder = 'Clips'; % folder where output files will be stored
b@0 20 % MODIFICATION: store in place, do not keep unclipped files!
b@0 21
b@0 22 % list all audio files
b@0 23 list = dir([folder slash '*.wav']);
b@0 24
b@0 25 % make new folder if not present yet
b@0 26 % if ~exist([folder slash newFolder], 'dir') % make output folder if not there
b@0 27 % mkdir(folder, newFolder);
b@0 28 % end
b@0 29
b@0 30 for i = 1:length(list)
b@0 31 if strcmp(list(i).name, 'bounce.wav')
b@0 32 %disp([' ' folder slash list(i).name]); % DEBUG
b@0 33
b@0 34 [audio,fsfile] = audioread([folder slash list(i).name], [startTime*fs+1 endTime*fs]); % read part of file
b@0 35 assert(fsfile == fs); % check file has expected sampling rate
b@0 36
b@0 37 Nfade = fadeTime*fs; % make fade vector (based on sampling rate)
b@0 38 fadeVector = [(1:Nfade)/Nfade ones(1,length(audio)-2*Nfade) (Nfade:-1:1)/Nfade];
b@0 39
b@0 40 % apply fading and write to new folder
b@0 41 if size(audio,2) == 2 % if stereo
b@0 42 audiowrite([folder slash list(i).name], ... %[folder slash newFolder slash list(i).name]
b@0 43 [fadeVector'.*audio(:,1) fadeVector'.*audio(:,2)], fs, 'BitsPerSample', bitDepth);
b@0 44 else % if mono
b@0 45 audiowrite([folder slash list(i).name], ... %[folder slash newFolder slash list(i).name]
b@0 46 fadeVector'.*audio, fs, 'BitsPerSample', bitDepth);
b@0 47 end
b@0 48
b@0 49 end
b@0 50 end