clc; clear; close all;
%%
% Generate all combination between wide-band and localized signals

%%
make_wav_pairs()
%%

pwd;
pathname ='spectro_all_mixtures';
if ~exist('spectro_all_mixtures','dir')
    mkdir('spectro_all_mixtures');
end
addpath('spectro_all_mixtures')

%%
data = load('signal_lists.mat');
%%
resampling_fs = 8000;
sig_len =16384;
signal_params = generate_signal_parameters(resampling_fs, sig_len);

%% DGT parameters
approx_win_len = 512;
win_len = approx_win_len;
win_type='hann';
params = get_params(win_len, win_type);

dgt_params = generate_dgt_parameters(win_type, approx_win_len, params.hop, params.nbins, sig_len);

%% DGT operators

[dgt, idgt] = get_stft_operators(dgt_params, signal_params);


%% All mix
close all
target_name ={'car','plane','train'};
per_name = {'beeps','bird','clicks','pop'};

gamma=0.7;
deb=0;
close all;

for k=1:length(data.wide_band_sources_files)
    sig_wd = load_wideband_signal(k, resampling_fs,  sig_len);
    
    for l=1:length(data.localized_sources_files)
        %%
        
        %figure;
        sig_loc = load_localized_signal(l, resampling_fs,  sig_len,deb);
        signals = generate_mix_signal(sig_wd, sig_loc, gamma);
        
        tf_mat_target = compute_dgt(signals.wideband, dgt );
        tf_mat_per = compute_dgt(signals.localized, dgt );
        tf_mat_mix = compute_dgt(signals.mix, dgt );
        
        [alpha, seuil, radius] = set_smooth_mask_params(target_name{k}, per_name{l}, win_type);
        
        sdr_mix = sdr(signals.wideband, signals.mix);
        
        [original_mask, mask_after_imclose, mask_after_imopen,...,
            mask] = generate_mask(tf_mat_target, tf_mat_per, alpha, seuil, radius);
        
        
        subplot(221);
        plot_spectrogram(tf_mat_target, dgt_params, signal_params, dgt )
        title(target_name{k})
        
        subplot(222);
        plot_spectrogram(tf_mat_per, dgt_params, signal_params, dgt )
        title(per_name(l));
        
        subplot(223);
        plot_spectrogram(tf_mat_mix, dgt_params, signal_params, dgt )
        title(['Mix SDR= ',num2str(sdr_mix),'dB']);
        
        subplot(224);
        plot_spectrogram(mask, dgt_params, signal_params, dgt )
        title(['mask - ', num2str(win_type)]);
        
        saveas(gcf,fullfile(pathname, [target_name{k},'_' num2str(l), '_',num2str(win_type) '.png']));
        %           figure;
        %     plot_spectrogram((1-mask).*tf_mat_per, dgt_params, signal_params, dgt );
        %     title(['masked spectro - ', target_name{k}, per_name(l)])
        %saveas(gcf,fullfile(pathname, ['masked_spectro_', target_name{k},'_' num2str(l), '_',num2str(win_type) '.png']));
        
    end
    
    
    
end