[y1,Fs1] = audioread('ferfi2.wav');
[y2,Fs2] = audioread('noi2.wav');

% Elõször is ha a két Fs nem egyezik, gond van
if Fs1 ~= Fs2
    disp('A két Fs nem egyezik.');
    return;
end

Fs = Fs1;


% Mivel nem biztos, hogy a két hang hossza megegyezik, a rövidebbet
% megnyújtjuk
if length(y1)<length(y2)
    y1=[y1; zeros(length(y2)-length(y1), 1)];
else
    y2=[y2; zeros(length(y1)-length(y2), 1)];
end

% Elõször az y1-et és az y2-t is szûrni kell, hogy ne legyen egyikben sem
% olyan frekvenciájú hang, amit nem tudunk átvinni a számukra kijelölt
% csatornán. (Ami maximum 5kHz, hiszen két hangjelet kell átvinni egy
% 10kHz-es csatornán)

Hd=FIR_lowpass; % Todo: Ide kell annak a függvénynek a meghívása, amit az FDATool kiad magából
y1_filtered = Hd.filter(y1);
Hd=FIR_lowpass;
y2_filtered = Hd.filter(y2);

disp('Nyomj ENTER-t a második lejátszásához!');
sound(y1_filtered, Fs);
pause;
disp('Nyomj ENTER-t a folytatáshoz!');
sound(y2_filtered, Fs);
pause;

% Ezután az egyik hangot feltoljuk a második csatornába
offsetFrequency=5000; % Todo: Mennyire kell eltolni? Nincs rossz válasz, csak rossz kombinációk.
y2_raised = raiseBy(y2_filtered, Fs, offsetFrequency);
y2_deraised =  raiseBy(y2_raised, Fs, -offsetFrequency);
disp('Na, most!');
sound(y2_deraised, Fs);
pause;


% Végül egyesítjük a két hangot
y_comb = y1_filtered + y2_raised;
disp('Nyomj entert a folytatáshoz!');
sound(y_comb, Fs);
pause;

% Most már csak szét kell õket választani
% Ehhez egy aluláteresztõ és egy sáváteresztõ szûrõ kell
lowpassFilter = FIR_lowpass;
bandpassFilter = FIR_bandpass;
y1_rec = lowpassFilter.filter(y_comb);
y2_rec_raised = bandpassFilter.filter(y_comb);
y2_rec = raiseBy(y2_rec_raised, Fs, -offsetFrequency);

disp('Nyomj entert a folytatáshoz!');
sound(y1_rec, Fs);
pause;
disp('Nyomj entert a folytatáshoz!');
sound(y2_rec, Fs);
pause;

subplot(3,2,1);
% Y1_filtered = abs(fft(y1_filtered));
% plot(10:10000,Y1_filtered(10:10000));
plot(psd(spectrum.periodogram,y1_filtered,'Fs',Fs,'NFFT',length(y1_filtered)));
title('y1 filtered');
subplot(3,2,2);
% Y2_filtered = abs(fft(y2_filtered));
% plot(10:10000,Y2_filtered(10:10000));
plot(psd(spectrum.periodogram,y2_filtered,'Fs',Fs,'NFFT',length(y2_filtered)));
title('y2 filtered');
subplot(3,2,3);
% Y_comb = abs(fft(y_comb));
% plot(10:10000,Y_comb(10:10000));
plot(psd(spectrum.periodogram,y_comb,'Fs',Fs,'NFFT',length(y_comb)));
title('y combinated');
subplot(3,2,4);
% Y2_raised = abs(fft(y2_raised));
% plot(10:10000,Y2_raised(10:10000));
plot(psd(spectrum.periodogram,y2_raised,'Fs',Fs,'NFFT',length(y2_raised)));
title('y2 raised');
subplot(3,2,5);
% Y1_rec = abs(fft(y1_rec));
% plot(10:10000,Y1_rec(10:10000));
plot(psd(spectrum.periodogram,y1_rec,'Fs',Fs,'NFFT',length(y1_rec)));
title('y1 recorded');
subplot(3,2,6);
% Y2_rec = abs(fft(y2_rec));
% plot(10:10000,Y2_rec(10:10000));
plot(psd(spectrum.periodogram,y2_rec,'Fs',Fs,'NFFT',length(y2_rec)));
title('y2 recorded');