From 016dea19fcc77b07e2c1c05140b309154cf31030 Mon Sep 17 00:00:00 2001
From: PERBEN Anatole <anatole.perben@imt-atlantique.net>
Date: Wed, 28 May 2025 23:28:16 +0000
Subject: [PATCH] Upload New File

---
 src/wav/question_2_3.m | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 src/wav/question_2_3.m

diff --git a/src/wav/question_2_3.m b/src/wav/question_2_3.m
new file mode 100644
index 0000000..5751c84
--- /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);
-- 
GitLab