diff --git a/src/wav/question_2_3.m b/src/wav/question_2_3.m
new file mode 100644
index 0000000000000000000000000000000000000000..5751c84d47f8b7694ad174dc49896bdb2e5b7415
--- /dev/null
+++ b/src/wav/question_2_3.m
@@ -0,0 +1,39 @@
+Fs = 44100; % Fréquence d’échantillonnage
+T = 1;      % Durée du son
+t = linspace(0, T, T*Fs);
+
+% ----- Enveloppe ADSR simple -----
+attack = 0.1; decay = 0.1; sustain = 0.7; release = 0.1;
+env = [linspace(0,1,attack*Fs), ...
+       linspace(1,sustain,decay*Fs), ...
+       sustain*ones(1, round((T - attack - decay - release)*Fs)), ...
+       linspace(sustain,0,release*Fs)];
+env = env(1:length(t)); % Adapter la taille
+
+% ----- Sources pour synthèse soustractive -----
+f0 = 220; % fréquence fondamentale
+
+square_sig = square(2*pi*f0*t);
+saw_sig    = sawtooth(2*pi*f0*t);
+sinus_sig  = sin(2*pi*f0*t);
+
+% ----- Filtre passe-bas pour la synthèse soustractive -----
+[b,a] = butter(4, 1000/(Fs/2)); % passe-bas à 1000 Hz
+
+% Appliquer enveloppe + filtre
+sq_sous = filter(b,a, square_sig .* env);
+sw_sous = filter(b,a, saw_sig    .* env);
+si_sous = filter(b,a, sinus_sig  .* env);
+
+% ----- Synthèse additive (somme de sinusoïdes) -----
+add_sig = zeros(size(t));
+for k = 1:10  % 10 harmoniques
+    add_sig = add_sig + (1/k) * sin(2*pi*f0*k*t);
+end
+add_sig = add_sig .* env;
+
+% ----- Écoute et comparaison -----
+disp('Carré (soustractive)'); soundsc(sq_sous, Fs); pause(T+1);
+disp('Dent de scie (soustractive)'); soundsc(sw_sous, Fs); pause(T+1);
+disp('Sinus (soustractive)'); soundsc(si_sous, Fs); pause(T+1);
+disp('Synthèse additive'); soundsc(add_sig, Fs); pause(T+1);