FIC MATLAB 2017-2/Aula-16

De MediaWiki do Campus São José
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()