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