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