diff --git a/src/wav/question_2_4.m b/src/wav/question_2_4.m
new file mode 100644
index 0000000000000000000000000000000000000000..83e29b32e2adee0c2ee8521ffedc669a33f6c23c
--- /dev/null
+++ b/src/wav/question_2_4.m
@@ -0,0 +1,34 @@
+Fs = 44100; T = 1;
+t = linspace(0, T, Fs*T);
+f0 = 220;
+source = sawtooth(2*pi*f0*t); % signal riche
+env = linspace(0,1,0.05*Fs); % attaque
+env = [env, ones(1, length(t)-length(env))]; % sustain simple
+x = source .* env; % signal source modulé
+
+%% 🔻 Filtre 1 : FIR ordre 20, coupure 1000 Hz
+d1 = designfilt('lowpassfir', ...
+    'FilterOrder', 20, ...
+    'CutoffFrequency', 1000, ...
+    'SampleRate', Fs);
+y1 = filter(d1, x);
+
+%% 🔻 Filtre 2 : FIR ordre 100, plus sélectif
+d2 = designfilt('lowpassfir', ...
+    'FilterOrder', 100, ...
+    'CutoffFrequency', 1000, ...
+    'SampleRate', Fs);
+y2 = filter(d2, x);
+
+%% 🔻 Filtre 3 : IIR Butterworth ordre 6
+d3 = designfilt('lowpassiir', ...
+    'DesignMethod', 'butter', ...
+    'FilterOrder', 6, ...
+    'HalfPowerFrequency', 1000, ...
+    'SampleRate', Fs);
+y3 = filter(d3, x);
+
+%% 🎧 Écoute comparative
+disp('Filtre FIR ordre 20'); soundsc(y1, Fs); pause(T+1);
+disp('Filtre FIR ordre 100'); soundsc(y2, Fs); pause(T+1);
+disp('Filtre IIR ordre 6'); soundsc(y3, Fs); pause(T+1);