From d0bd45adc6eef1f8cf9f0e89d9e035de65db2929 Mon Sep 17 00:00:00 2001
From: YE Victor <victor.ye@imt-atlantique.net>
Date: Tue, 27 May 2025 16:18:16 +0000
Subject: [PATCH] Upload New File

---
 src/SAR2Q4.m | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 src/SAR2Q4.m

diff --git a/src/SAR2Q4.m b/src/SAR2Q4.m
new file mode 100644
index 0000000..e3a98f3
--- /dev/null
+++ b/src/SAR2Q4.m
@@ -0,0 +1,44 @@
+function synthese_soustractive_optimisee()
+    % Paramètres
+    Fe = 44100;
+    D = 1; f0 = 220;
+    t = 0:1/Fe:D-1/Fe;
+
+    % Enveloppe ADSR
+    env = envelope_adsr(length(t), Fe, 0.05, 0.2, 0.6, 0.2);  % plus rapide + sustain moyen
+
+    x = sawtooth(2*pi*f0*t);
+
+    % Filtre passe-bas FIR 
+    fc = 600;                % fréquence de coupure proche de 5*f0
+    ordre = 50;            
+    Wn = fc / (Fe/2);         % normalisation
+    b = fir1(ordre, Wn, 'low'); % filtre passe-bas
+
+    % Application du filtre
+    y = filter(b, 1, x);
+
+    % Application de l’enveloppe
+    y = y .* env;
+
+    % Écoute
+    soundsc(y, Fe);
+end
+
+function env = envelope_adsr(N, Fe, A, D, S, R)
+    Na = round(A * Fe);
+    Nd = round(D * Fe);
+    Nr = round(R * Fe);
+    Ns = N - Na - Nd - Nr;
+
+    if Ns < 0
+        error('Durée totale trop courte pour ADSR.');
+    end
+
+    attack  = linspace(0, 1, Na);
+    decay   = linspace(1, S, Nd);
+    sustain = S * ones(1, Ns);
+    release = linspace(S, 0, Nr);
+
+    env = [attack, decay, sustain, release];
+end
-- 
GitLab