diff --git a/src/SAR2Q3.m b/src/SAR2Q3.m new file mode 100644 index 0000000000000000000000000000000000000000..cbdccaf964047d115326ca28504c30cd30588346 --- /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