diff --git a/docs/SARaudio.m b/docs/SARaudio.m index 7f8fb4f174ef6175cc90a472068596a0454a79f9..9b00aae1fe4da0eafba7d8a72ebefd904e832409 100644 --- a/docs/SARaudio.m +++ b/docs/SARaudio.m @@ -381,4 +381,117 @@ audiowrite('guitare_reverberee.wav', w, fe); -plot(linspace(0,1, length(w)),w) \ No newline at end of file +plot(linspace(0,1, length(w)),w) + + +%} +%{ +% Paramètres du filtre +Fe = 44100; % Fréquence d’échantillonnage +tau = 100; % Délai (en échantillons) +g = 0.7; % Atténuation +N = 2048; % Taille pour la FFT + +% Vecteur fréquence normalisé +omega = linspace(0, pi, N); +f = omega / pi * (Fe/2); % Fréquence en Hz + +% Réponse en fréquence théorique +H_th = 1 ./ sqrt(1 + 2*g*cos(omega * tau) + g^2); + +% Réponse impulsionnelle (via filter) +a = [1, zeros(1, tau - 1), g]; +b = 1; +impulse = [1, zeros(1, N - 1)]; +h = filter(b, a, impulse); + +% FFT numérique +H_num = abs(fft(h, N)); +H_num = H_num(1:N); % On garde les fréquences positives + +% Affichage +figure; +plot(f, H_th, 'r', 'LineWidth', 1.5); hold on; +plot(f, H_num(1:N), 'b--'); +xlabel('Fréquence (Hz)'); +ylabel('Module |H(e^{j\omega})|'); +legend('Théorique', 'Numérique'); +title('Comparaison des réponses fréquentielles'); +grid on; + +function y = effet_delay(x, t_delay, g, Fe) + % Effet de delay simple avec rétroaction + % + % x : signal d’entrée + % t_delay : temps de délai en secondes + % g : coefficient d’amortissement + % Fe : fréquence d’échantillonnage (Hz) + + % Conversion du délai en nombre d’échantillons + tau = round(t_delay * Fe); + + % Définir les coefficients du filtre + b = 1; + a = [1, zeros(1, tau - 1), g]; + + % Appliquer le filtre + y = filter(b, a, x); + + % Normalisation optionnelle + y = y / max(abs(y)); +end + +% Charger le son source (accord de piano) +[x, Fe] = audioread('piano_chord.wav'); % exemple de fichier + +% Paramètres de delay +t_delay = 0.25; % délai en secondes +g = 0.6; % coefficient d’amortissement + +% Appliquer l'effet de delay +y = effet_delay(x, t_delay, g, Fe); + +% Écouter le résultat +soundsc(y, Fe); + +% Sauvegarder le signal résultant +audiowrite('piano_delay.wav', y, Fe); + +% Affichage +disp('Effet de delay appliqué avec succès.'); + +% Charger le son source (accord de piano) +[x, Fe] = audioread('piano_chord.wav'); + +% Paramètres de l'effet +t_delay = 0.25; % 250 ms +g = 0.6; % atténuation +M = 50; % taille du filtre de moyenne glissante + +% Appliquer l'effet de delay avec filtre +y = effet_delay_filtre(x, t_delay, g, M, Fe); + +% Écouter le résultat +soundsc(y, Fe); + +% Sauvegarder le signal réverbéré +audiowrite('piano_delay_filtre.wav', y, Fe); + +% Message de confirmation +disp('Signal sauvegardé : piano_delay_filtre.wav'); + +M = 50; % Taille du filtre de moyenne +h_r = ones(1, M) / M; % Filtre moyenne glissante + +N = 1024; +H_r = fft(h_r, N); +f = linspace(0, 1, N/2); % Fréquences normalisées (0 à 1) + +% Affichage du module +figure; +plot(f, abs(H_r(1:N/2))); +xlabel('Fréquence réduite (×π rad/sample)'); +ylabel('|H_r(e^{j\omega})|'); +title('Réponse en fréquence du filtre de moyenne glissante (M=50)'); +grid on; +%} \ No newline at end of file