FIC MATLAB 2017-2/Aula-16
Ir para navegação
Ir para pesquisar
% msc.m
dur = 0.125;
som = [];
for ii = 1:6
Fs = 44100;
[x_aux, Fs] = audioread('r1_omni.wav');
x = x_aux(1:100000)';
%x = exp(-t) + 0.1*randn(size(t));
tt = 7;
notas = logspace(log10(220), log10(2^tt*220), 1+12*tt);
bar1 = [19 19 19 19 19 2 19 19 20 20 20 20 15 15 15 12];
bar2 = [19 19 19 19 19 2 19 19 20 20 19 19 15 15 12 12];
song = [bar1 bar1 bar1 bar2];
song = [song song+(1:length(song))];
N = length(song);
[bat, Fs2] = audioread('ir_p1.wav');
bat = resample(bat,Fs,Fs2);
bateria = repmat(bat(1:Fs/4,1)',1,4*N*dur);
t = (0:N*dur*Fs-1)/Fs;
y = zeros(size(t));
for i = 1:N
idx = ((i-1)*dur < t) & (t < i*dur);
y(idx) = square(2*pi*notas(song(i))*t(idx));
end
max_size = max(length(y), length(x));
pad_x_size = max(0, max_size - length(x));
pad_y_size = max(0, max_size - length(y));
saida = ifft(fft([y+4*bateria, zeros(1, pad_y_size)]) .* fft([x, zeros(1, pad_x_size)]));
saida = saida/max(saida);
dur = dur/2;
som = [som saida];
end
player = audioplayer(som, Fs);
player.play()