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 |