diff --git a/src/effet_reverb.m b/src/effet_reverb.m
new file mode 100644
index 0000000000000000000000000000000000000000..503db7b2a53ae0a8f781aa393e41195c653bd3ae
--- /dev/null
+++ b/src/effet_reverb.m
@@ -0,0 +1,7 @@
+function [y] = effet_reverb(x, h)
+%ENTREE : x=signal émis par le haut-parleur
+%SORTIE : y=signal capté par le microphone dans la pièce
+
+y = conv(x, h, 'same'); % Convolution du signal avec la réponse impulsionnelle
+
+end
\ No newline at end of file
diff --git a/src/effetsAudioNumeriques.m b/src/effetsAudioNumeriques.m
new file mode 100644
index 0000000000000000000000000000000000000000..39f014f5a03c92684ee3a1576fa4cf66bd118d31
--- /dev/null
+++ b/src/effetsAudioNumeriques.m
@@ -0,0 +1,59 @@
+% Chargement du fichier signal_excitation.mat qui contient les signaux xe1 et xe2
+
+fe = load('signal_excitation.mat', 'fe');
+xe1 = load('signal_excitation.mat', 'xe1');
+xe2 = load('signal_excitation.mat', 'xe2');
+
+% Extract the signals from the structures
+fe = fe.fe;  % Get the sampling frequency
+xe1 = xe1.xe1;  % Get the first signal
+xe2 = xe2.xe2;  % Get the second signal
+
+% Calculate autocorrelation of xe1
+[r_xe1, lags_xe1] = xcorr(xe1, 'biased');
+
+% Calculate autocorrelation of xe2
+[r_xe2, lags_xe2] = xcorr(xe2, 'biased');
+
+% Plot the autocorrelation of xe1
+figure;
+subplot(2, 1, 1);
+plot(lags_xe1 / fe, r_xe1);
+title('Autocorrelation of xe1');
+xlabel('Time (s)');
+ylabel('Autocorrelation');
+grid on;
+xlim([-0.1, 0.1]); % Adjust x-axis limits for better visibility
+subplot(2, 1, 2);
+plot(lags_xe2 / fe, r_xe2);
+title('Autocorrelation of xe2');
+xlabel('Time (s)');
+ylabel('Autocorrelation');
+grid on;
+xlim([-0.1, 0.1]); % Adjust x-axis limits for better visibility
+
+% Simulate the room effect on both excitation signals
+y1 = simule_piece(xe1, fe);
+y2 = simule_piece(xe2, fe);
+
+% Estimate the impulse response using the cross-correlation method
+[h1_est, lags_h1] = xcorr(y1, r_xe1, 'none');
+[h2_est, lags_h2] = xcorr(y2, r_xe2, 'none');
+
+% Plot the estimated impulse responses
+figure;
+subplot(2, 1, 1);
+plot(lags_h1 / fe, h1_est);
+title('Estimated Impulse Response using xe1');
+xlabel('Time (s)');
+ylabel('Amplitude');
+grid on;
+xlim([0, 0.1]); % Show only the causal part
+
+subplot(2, 1, 2);
+plot(lags_h2 / fe, h2_est);
+title('Estimated Impulse Response using xe2');
+xlabel('Time (s)');
+ylabel('Amplitude');
+grid on;
+xlim([0, 0.1]); % Show only the causal part
\ No newline at end of file
diff --git a/src/filtered_sawtooth.wav b/src/filtered_sawtooth.wav
index 15c9ff303277e26eb7c3d8582ccd70f82e3db398..a35a9bdcfd1816598b29f375e4a0899094af1b97 100644
Binary files a/src/filtered_sawtooth.wav and b/src/filtered_sawtooth.wav differ
diff --git a/src/filtered_square.wav b/src/filtered_square.wav
index c1b7907d9cbb63ee2f90915a4cd8be22c13261cf..928f0eb442099229e5edaa98452bff55682caff8 100644
Binary files a/src/filtered_square.wav and b/src/filtered_square.wav differ
diff --git a/src/guitar_reverb.wav b/src/guitar_reverb.wav
new file mode 100644
index 0000000000000000000000000000000000000000..9487d127910f1989a6714c90dda85f3c656e96a4
Binary files /dev/null and b/src/guitar_reverb.wav differ
diff --git a/src/original_sawtooth.wav b/src/original_sawtooth.wav
index d67b8a72f133c61206fefdc068e1bee4c3b21479..d54e8cae000662357b06b433d401cea36055648a 100644
Binary files a/src/original_sawtooth.wav and b/src/original_sawtooth.wav differ
diff --git a/src/original_square.wav b/src/original_square.wav
index e47d7ab71468da05ee241852692ee89fa3080c50..be562653847ce9493b99334b3d58685a30c76488 100644
Binary files a/src/original_square.wav and b/src/original_square.wav differ
diff --git a/src/simule_piece_guitar.wav b/src/simule_piece_guitar.wav
new file mode 100644
index 0000000000000000000000000000000000000000..a13b4b61aab9c1400c7a8976d2e627bf0bfa65b7
Binary files /dev/null and b/src/simule_piece_guitar.wav differ
diff --git a/src/syntheseSoustractive.m b/src/syntheseSoustractive.m
index bfd94e1f78c67a27eda4b4f6c15bcb8f3988c6ea..1855aa6a38d32aae35b75447323275b861136970 100644
--- a/src/syntheseSoustractive.m
+++ b/src/syntheseSoustractive.m
@@ -1,7 +1,7 @@
 % Paramètres du signal
 A = 1; % Amplitude
-T = 1; % Période
-Fs = 1000; % Fréquence d'échantillonnage
+T = 0.001; % Période
+Fs = 10000; % Fréquence d'échantillonnage
 t = 0:1/Fs:1000*T; % Vecteur temps (1000 périodes pour meilleure visualisation)
 
 % Signal carré centré
@@ -59,9 +59,14 @@ ylabel('Amplitude');
 % Implémentation du filtre y(k) = 0.5 * (x(k) + x(k-1))
 b = [0.5, 0.5]; % Coefficients du numérateur
 a = [1]; % Coefficients du dénominateur
+
+% New filter
+d = designfilt('lowpassfir','FilterOrder',2,'HalfPowerFrequency',0.25);
+filterAnalyzer(d)
+
 % Application du filtre aux signaux
-filtered_square = filter(b, a, square_signal);
-filtered_sawtooth = filter(b, a, sawtooth_signal);
+filtered_square = filter(d, square_signal);
+filtered_sawtooth = filter(d, sawtooth_signal);
 
 % Calcul du spectre des signaux filtrés
 filtered_square_fft = fftshift(fft(filtered_square));
@@ -141,17 +146,13 @@ duration = 2; % Durée en secondes
 audio_Fs = 44100; % Fréquence d'échantillonnage pour l'audio (standard)
 
 % Paramètres des signaux
-freq = 440; % Fréquence fondamentale en Hz (La4)
+freq = 1/T; % Fréquence fondamentale en Hz (La4)
 audio_t = 0:1/audio_Fs:duration-1/audio_Fs; % Vecteur temps pour l'audio
 
 % Génération des signaux source à fréquence audible
 audio_square = A * square(2 * pi * freq * audio_t);
 audio_sawtooth = A * sawtooth(2 * pi * freq * audio_t);
 
-% New filter
-d = designfilt('lowpassfir','FilterOrder',2,'HalfPowerFrequency',0.25)
-filterAnalyzer(d)
-
 % Création d'une enveloppe ADSR simple
 attack_time = 0.1; % secondes
 decay_time = 0.2; % secondes
@@ -194,23 +195,39 @@ audiowrite('filtered_sawtooth.wav', filtered_sawtooth, audio_Fs);
 audiowrite('original_square.wav', audio_square, audio_Fs);
 audiowrite('original_sawtooth.wav', audio_sawtooth, audio_Fs);
 
-% Affichage des FFT des signaux audio sur le même graphique	
+% Calcul et affichage des spectres des signaux audio
+audio_square_fft = fftshift(fft(audio_square));
+audio_square_magnitude = abs(audio_square_fft) / length(audio_square);
+audio_sawtooth_fft = fftshift(fft(audio_sawtooth));
+audio_sawtooth_magnitude = abs(audio_sawtooth_fft) / length(audio_sawtooth);
+audio_filtered_square_fft = fftshift(fft(filtered_square));
+audio_filtered_square_magnitude = abs(audio_filtered_square_fft) / length(filtered_square);
+audio_filtered_sawtooth_fft = fftshift(fft(filtered_sawtooth));
+audio_filtered_sawtooth_magnitude = abs(audio_filtered_sawtooth_fft) / length(filtered_sawtooth);
+
+% Affichage des spectres audio
 figure;
-subplot(2, 1, 1);
-plot(f, abs(fftshift(fft(audio_square)))/N);
-hold on;
-plot(f, abs(fftshift(fft(filtered_square)))/N);
-title('FFT du signal carré et du signal carré filtré');
+subplot(2, 2, 1);
+plot(linspace(-audio_Fs/2, audio_Fs/2, length(audio_square)), audio_square_magnitude);
+title('Spectre du signal carré original');
 xlabel('Fréquence (Hz)');
 ylabel('Amplitude');
-legend('Signal carré', 'Signal carré filtré');
-xlim([-100, 100]); % Zoom sur les basses fréquences
-subplot(2, 1, 2);
-plot(f, abs(fftshift(fft(audio_sawtooth)))/N);
-hold on;
-plot(f, abs(fftshift(fft(filtered_sawtooth)))/N);
-title('FFT du signal dent de scie et du signal dent de scie filtré');
+xlim([-1000, 1000]); % Zoom sur les basses fréquences
+subplot(2, 2, 2);
+plot(linspace(-audio_Fs/2, audio_Fs/2, length(filtered_square)), audio_filtered_square_magnitude);
+title('Spectre du signal carré filtré');
 xlabel('Fréquence (Hz)');
 ylabel('Amplitude');
-legend('Signal dent de scie', 'Signal dent de scie filtré');
-xlim([-100, 100]); % Zoom sur les basses fréquences
+xlim([-1000, 1000]); % Zoom sur les basses fréquences
+subplot(2, 2, 3);
+plot(linspace(-audio_Fs/2, audio_Fs/2, length(audio_sawtooth)), audio_sawtooth_magnitude);
+title('Spectre du signal dent de scie original');
+xlabel('Fréquence (Hz)');
+ylabel('Amplitude');
+xlim([-1000, 1000]); % Zoom sur les basses fréquences
+subplot(2, 2, 4);
+plot(linspace(-audio_Fs/2, audio_Fs/2, length(filtered_sawtooth)), audio_filtered_sawtooth_magnitude);
+title('Spectre du signal dent de scie filtré');
+xlabel('Fréquence (Hz)');
+ylabel('Amplitude');
+xlim([-1000, 1000]); % Zoom sur les basses fréquences
diff --git a/src/synthesized_piano1.wav b/src/synthesized_piano1.wav
deleted file mode 100644
index b8d67b2940f60ef71de18d147648f5ad2245a6a3..0000000000000000000000000000000000000000
Binary files a/src/synthesized_piano1.wav and /dev/null differ
diff --git a/src/synthesized_piano1_ifft.wav b/src/synthesized_piano1_ifft.wav
deleted file mode 100644
index 8df167bd2d9f9af031c48f7630a913141e7d2a8c..0000000000000000000000000000000000000000
Binary files a/src/synthesized_piano1_ifft.wav and /dev/null differ
diff --git a/src/synthesized_piano1_with_adsr.wav b/src/synthesized_piano1_with_adsr.wav
deleted file mode 100644
index c07eb995a5c28d57dd50b903890e4ef12df92ced..0000000000000000000000000000000000000000
Binary files a/src/synthesized_piano1_with_adsr.wav and /dev/null differ
diff --git a/src/test_effet_reverb.m b/src/test_effet_reverb.m
new file mode 100644
index 0000000000000000000000000000000000000000..7ff06ccff11c4698bf4cf26bfd16d9816cc339c2
--- /dev/null
+++ b/src/test_effet_reverb.m
@@ -0,0 +1,21 @@
+% Get the sample rate
+[guitar, Fs] = audioread('wav/single_tone_guitar_nylon_string_a3.wav');
+
+guitar = guitar(:, 1); % Use only one channel if stereo
+
+fe = load('signal_excitation.mat', 'fe');
+xe1 = load('signal_excitation.mat', 'xe1');
+xe2 = load('signal_excitation.mat', 'xe2');
+fe = fe.fe;  % Get the sampling frequency
+xe1 = xe1.xe1;  % Get the first signal
+xe2 = xe2.xe2;  % Get the second signal
+y1 = simule_piece(xe1, fe);
+y2 = simule_piece(xe2, fe);
+% Estimate the impulse response using the cross-correlation method
+[h1_est, lags_h1] = xcorr(y1, xe1, 'none');
+[h2_est, lags_h2] = xcorr(y2, xe2, 'none');
+
+guitar_rev = effet_reverb(guitar, h2_est);
+
+audiowrite('simule_piece_guitar.wav', guitar_rev, Fs);
+