clear all
close all


pp=1; %Počet nástrojů k porovnání
if pp>6
   error('Max. 6 vzorku')
end
pharm=12; %Počet harmonických složek k porovnání
if pharm>12
   error('Max. 12 harmonickych')
end
%% Načtení a zpracování kalibračních souborů
[kalibrace, cesta] = uigetfile({'.wav'},'Načtěte kalibrační soubory','Multiselect','on');

if iscell(kalibrace)
    PocetMikrofonu = length(kalibrace);
else
    error('Vyberte vice nez jeden zvukovy soubor')
end;

%Vytvoření vektoru pro pozdější uložení normalizačních konstant
Kalib=[1,PocetMikrofonu];

for i = 1:PocetMikrofonu,
    [x, fvz] = audioread(fullfile(cesta,kalibrace{i}));
    x = x(:,1);
    Kalib(i) = 1/rms(x); %Normalizační konstanta z kalibračního signálu
end;

%% Načtení a zpracování zvukových vzorků nástroje
%Vytvoření matic pro ukládání spočtených hodnot směrové charakteristiky a
%názvů jednotlivých vzorků
RMSpv=cell(pp,1);
PoradiHarmonickych={'f1/f7'; 'f2/f8' ; 'f3/f9'; 'f4/f10'; 'f5/f11'; 'f6/f12' ;'f7' ;'f8' ;'f9' ; 'f10' ;'f11' ;'f12' ;'f13'};
PoradiHarmonickych=PoradiHarmonickych(1:pharm);
krivka=zeros(pp,1);
DirectMat=zeros(PocetMikrofonu,pharm);
UhelKrok = 180/(PocetMikrofonu-1);
Uhly = 180:-UhelKrok:0;
Radiany = Uhly * pi / 180;
barva=[1 0 0; 0 1 0; 0 0 1; 0.7 0.3 1; 0.7 1 0.1; 0 1 1; 1 0 0; 0 1 0; 0 0 1; 0.7 0.3 1; 0.7 1 0.1; 0 1 1];
cara={'--','-',':','-.','--','-','--','-',':','-.','--','-'};
line(1:6)=2.5;
line(7:12)=1.7;
figure(1)

for p = 1 : pp
    [horna, cesta] = uigetfile({'.wav'},'Načtěte vzorky lesního rohu','Multiselect','on');

    if length(horna) ~= PocetMikrofonu
        error('Vybran spatny pocet souboru. Vyberte stejny pocet zvukovych vzorku jako pocet kalibracnich vzorku.')
    end;

    for n = 1:PocetMikrofonu
        [x,fvz] = audioread(fullfile(cesta, horna{n}));
        x = x(:,1);
        x = Kalib(n)*x;
        [peaky,pozice]=FFThodnoty(x,fvz,n);
        DirectMat(n,:)=peaky(1:pharm); 
    end; 
        
        subplot(1,2,p+p-1)
        for b = 1 : pharm/2
        krivka(b,1)=polar(Radiany, DirectMat(:,b)');  % Vykreslení polárního diagramu
        hold on
        set(krivka(b,1),'linewidth',line(b),'color',barva(b,:),'linestyle',cara{1,b});
        end
        hold off
        title('f1-f6             ','FontSize',12)
        ylim([0 100])
        
        
        subplot(1,2,p*2)
        for b = (pharm/2+1) : pharm
           if max(DirectMat(:,b)) < 50
                DirectMat(:,b)=DirectMat(:,b);%+(50-(max(DirectMat(:,b))));
            end
        krivka(b,1)=polar(Radiany, DirectMat(:,b)'+2);  % Vykreslení polárního diagramu
        hold on
        set(krivka(b,1),'linewidth',line(b),'color',barva(b,:),'linestyle',cara{1,b});
        end
        hold off
        title('f7-f12             ','FontSize',12)
        ylim([0 100]) 
end
set(gcf,'Name','Směrové charakteristiky')
legend(PoradiHarmonickych)