Skip to content
Snippets Groups Projects
Commit 33682e15 authored by PERBEN Anatole's avatar PERBEN Anatole
Browse files

Upload New File

parent b994cac6
No related branches found
No related tags found
No related merge requests found
function y = effet_reverb_FFT(x, h)
% effet_reverb_FFT : applique une réverbération par filtrage fréquentiel
%
% Entrées :
% x : signal source
% h : réponse impulsionnelle
%
% Sortie :
% y : signal filtré (avec réverbération)
% Calcul de la taille optimale de FFT
NFFT = length(x) + length(h) - 1;
% FFT des deux signaux
X = fft(x, NFFT);
H = fft(h, NFFT);
% Multiplication dans le domaine fréquentiel
Y = X .* H;
% Revenir au domaine temporel
y_full = ifft(Y);
% Optionnel : garder même taille que convolution
y = real(y_full(1:NFFT)); % s'assurer que le résultat est réel
end
% Chargement du signal et de la réponse impulsionnelle estimée
[x_guitare, fe] = audioread('single_tone_guitar_nylon_string_a3.wav');
load('signal_excitation.mat'); % contient R_yx
x_guitare = x_guitare(:,1)
% Extraire la partie causale de la réponse impulsionnelle
[~, idx_peak] = max(abs(R_yx));
h = R_yx(idx_peak:end);
% --- Mesure du temps FFT ---
tic;
y_fft = effet_reverb_FFT(x_guitare, h);
t_fft = toc;
fprintf("Temps FFT : %.4f secondes\n", t_fft);
% Écoute
soundsc(y_fft, fe); % tu peux aussi tester y_conv
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment