From 069db72b9ce3e09fe83bba660903219849ab4a87 Mon Sep 17 00:00:00 2001 From: YE Victor <victor.ye@imt-atlantique.net> Date: Tue, 27 May 2025 16:22:04 +0000 Subject: [PATCH] Upload New File --- src/SAR2Q3.m | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/SAR2Q3.m diff --git a/src/SAR2Q3.m b/src/SAR2Q3.m new file mode 100644 index 0000000..cbdccaf --- /dev/null +++ b/src/SAR2Q3.m @@ -0,0 +1,44 @@ + + +function synthese_comparaison() + % Paramètres + Fe = 44100; % Fréquence d'échantillonnage (Hz) + D = 1; % Durée du son (s) + f0 = 220; % Fréquence fondamentale (Hz) + t = 0:1/Fe:D-1/Fe; + + % Enveloppe ADSR simple + A = 0.1; D_env = 0.2; S = 0.7; R = 0.2; + env = envelope_adsr(length(t), Fe, A, D_env, S, R); + + % --- Synthèse soustractive --- + % Source riche : dent de scie + x1 = sawtooth(2*pi*f0*t); + % Filtrage passe-bas + x1_filtered = filter([0.5 0.5], 1, x1); + y_soustractive = x1_filtered .* env; + + % --- Synthèse additive --- + N_harm = 10; + y_additive = zeros(size(t)); + for n = 1:N_harm + y_additive = y_additive + (1/n) * sin(2*pi*f0*n*t); + end + y_additive = y_additive .* env; + + % --- Écoute --- + soundsc(y_soustractive, Fe); + pause(D + 1); + soundsc(y_additive, 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; + env = [linspace(0,1,Na), ... + linspace(1,S,Nd), ... + S*ones(1,Ns), ... + linspace(S,0,Nr)]; +end -- GitLab