-
Notifications
You must be signed in to change notification settings - Fork 0
/
add_reverb.m
18 lines (15 loc) · 893 Bytes
/
add_reverb.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function out = add_reverb(voice, voice_FS, scale)
%add reverb to a sound file
[H FS] = audioread('reverb/s1_r1_b.wav'); %read impulse response sample
H = interp1(1:length(H), H, linspace(1, length(H), floor(length(H)/scale)), 'spline');
if FS >= voice_FS
downsample = FS / voice_FS; %convert between sample rates
H = interp1(1:length(H), H(:,1), 1:downsample:length(H)); %downsample the impulse response to be the same frequency as the voice clip
voice = voice(:,1); %take the left channel
else
downsample = voice_FS / FS;
voice_FS = FS;
H = H(:,1); %take the left channel
voice = interp1(1:length(voice), voice(:,1), 1:downsample:length(voice)); %downsample the voice sample to the same frequency as the impulse response
end
out = conv(voice, H, 'full'); %add reverb