From 7bdbbeae2a99d24cd6aa0e38802467e6f4021554 Mon Sep 17 00:00:00 2001 From: DUBOC Marc <marc.duboc@imt-atlantique.net> Date: Fri, 2 May 2025 08:45:33 +0000 Subject: [PATCH] Upload New File --- TP/ANCIEN.m | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 TP/ANCIEN.m diff --git a/TP/ANCIEN.m b/TP/ANCIEN.m new file mode 100644 index 0000000..526de10 --- /dev/null +++ b/TP/ANCIEN.m @@ -0,0 +1,59 @@ +% 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, + -- GitLab