-
DUBOC Marc authoredDUBOC Marc authored
ANCIEN.m 1.74 KiB
% Chargement de fichiers audio
fileName1 = "wav/single_tone_piano1.wav";
[x1, fe1] = audioread(fileName1);
y1 = fftshift(fft(x1));
N1 = length(x1);
fileName2 = "wav/single_tone_piano2.wav";
[x2, fe2] = audioread(fileName2);
y2 = fftshift(fft(x2));
N2 = length(x2);
% Calcul des fréquences
f1 = linspace(-fe1/2, fe1/2, N1);
f2 = linspace(-fe2/2, fe2/2, N2);
% Calcul des amplitudes en dB
amp1 = 20 * log10(abs(y1) + eps);
amp2 = 20 * log10(abs(y2) + eps);
% Détermination de la fréquence fondamentale
[~, idx1] = max(amp1);
fundamental_freq1 = f1(idx1);
[~, idx2] = max(amp2);
fundamental_freq2 = f2(idx2)/2;
untitled
% Calcul des harmoniques théoriques
harmoniques1 = fundamental_freq1 * (1:10); % Les 10 premières harmoniques
harmoniques2 = fundamental_freq2 * (1:10); % Les 10 premières harmoniques
% % Calcul des écarts par rapport aux harmoniques théoriques
% inharmonicite1 = sum(abs(f1(amp1 > -60) - harmoniques1')); % Seuil de -60 dB pour considérer les pics
% inharmonicite2 = sum(abs(f2(amp2 > -60) - harmoniques2')); % Seuil de -60 dB pour considérer les pics
%
% % Affichage des résultats
% fprintf('Degré d''inharmonicité pour piano 1: %f\n', inharmonicite1);
% fprintf('Degré d''inharmonicité pour piano 2: %f\n', inharmonicite2);
%
% Tracé des spectres
figure(1);
clf;
plot(f1, amp1, '-.', f2, amp2, '-.');
grid on;
xlabel("fréquence (Hz)");
ylabel("amplitude du spectre (dB)");
legend("piano 1", "piano 2");
axis([-fe/2 fe/2 min(min(amp1), min(amp2)) max(max(amp1), max(amp2))]);
amplitude2 = [61.92 61.92 61.57 57.69 22.89 20.81 53.80 56.313];
somme = sin(fundamental_freq2*1*t)*(amplitude2(k)) ;
t = 0 : 1e-3 : 2 ; %temps sur 2 sec
for k=2:1:8,
sini = sin(fundamental_freq2*k*t)*(amplitude2(k));
somme = somme + sini;
end,