function [ f_theorique, f_jouee, corde] = fondamental(signal, fs, seuil)
%FONDAMENTAL Détermine le fondamental d'un signal sonore.
%   FONDAMENTAL(SIGNAL,FS,SEUIL) renvoie [F_THEORIQUE,F_JOUEE,CORDE]:
%       F_JOUEE est le fondamental de SIGNAL, échantilloné à FS;
%       F_THEORIQUE est la fréquence sur lauqelle on doit aller s'accorder. 
%   SEUIL correspond à la valeur maximale du bruit: on ne considère que la
%   partie du signal dont l'amplitude de la FFT est supérieure à SEUIL;
%       CORDE est la corde que l'on est en train d'accorder.

f_MI1 = lire_note('MI1');
f_LA1 = lire_note('LA1');
f_RE2 = lire_note('RE2');
f_SOL2 = lire_note('SOL2');
f_SI2 = lire_note('SI2');
f_MI3 = lire_note('MI3');

[fmin_MI1,fmax_MI1]=quart_ton(f_MI1);
[fmin_LA1,fmax_LA1]=quart_ton(f_LA1);
[fmin_RE2,fmax_RE2]=quart_ton(f_RE2);
[fmin_SOL2,fmax_SOL2]=quart_ton(f_SOL2);
[fmin_SI2,fmax_SI2]=quart_ton(f_SI2);
[fmin_MI3,fmax_MI3]=quart_ton(f_MI3);


% Ordre très important dans cet algorithme: on va de la fréquence la plus 
% faible à la fréquence la plus élevée: le fondamental correspond au 
% premier maximum de FFT qui n'est pas du bruit.
if(max_fft(signal, fs, fmin_MI1, fmax_MI1)> seuil)
    f_theorique = f_MI1; corde='MI grave';
elseif(max_fft(signal, fs, fmin_LA1, fmax_LA1)> seuil)
    f_theorique = f_LA1; corde='LA';
elseif(max_fft(signal, fs, fmin_RE2, fmax_RE2)> seuil)
    f_theorique = f_RE2; corde='RE';
elseif(max_fft(signal, fs, fmin_SOL2, fmax_SOL2)> seuil)
    f_theorique = f_SOL2; corde='SOL';
elseif(max_fft(signal, fs, fmin_SI2, fmax_SI2)> seuil)
    f_theorique = f_SI2; corde='SI';
elseif(max_fft(signal, fs, fmin_MI3, fmax_MI3)> seuil)
    f_theorique = f_MI3; corde='MI aigu';
end

[fmin,fmax]=quart_ton(f_theorique);
[~,f_jouee]=max_fft(signal,fs,fmin,fmax);

end
   

