diff --git a/q1 3.m b/q1 3.m new file mode 100644 index 0000000000000000000000000000000000000000..448f3ecbde5ab077c981eb2609d10f75a467f5e5 --- /dev/null +++ b/q1 3.m @@ -0,0 +1,17 @@ +t = 0:0.01:3; +amplitudes = 10.^([77.25 75.91 60.74 63.01 59.83 56.54 55.12 41.16]/20); +frequences = [220.46 442.12 663.62 885.62 1108.42 1331.54 1556.29 1782.8]; + +y = zeros(size(t)); % initialiser le signal + +for k = 1:length(amplitudes) + y = y + amplitudes(k) * sin(2*pi*frequences(k)*t); +end + +figure(1); +plot(t, y); + +xlabel('temps (s)'); +ylabel('Amplitude'); +title('Piano1/superposition'); +grid; diff --git a/q1 4.m b/q1 4.m new file mode 100644 index 0000000000000000000000000000000000000000..915cedf1af587434e92b2928c7a9f7aa34bd2184 --- /dev/null +++ b/q1 4.m @@ -0,0 +1,39 @@ +fs = 44100; % fr�quence d'�chantillonnage +dur = 2; % dur�e du signal (en secondes) +t = 0:(1/fs):dur; % axe temporel + +% Amplitudes et fr�quences +amplitudes = 10.^([77.25 75.91 60.74 63.01 59.83 56.54 55.12 41.16]/20); +frequences = [220.46 442.12 663.62 885.62 1108.42 1331.54 1556.29 1782.8]; + +% G�n�ration du signal +y = zeros(size(t)); +for k = 1:length(amplitudes) + y = y + amplitudes(k) * sin(2*pi*frequences(k)*t); +end + +% -- (Optionnel) enveloppe ADSR -- +% Param�tres ADSR +attack = 0.1; decay = 0.05; sustain = 0.7; sustainTime = 1.4; release = 0.4; +attackS = round(attack*fs); +decayS = round(decay*fs); +sustainS = round(sustainTime*fs); +releaseS = round(release*fs); + +% Cr�ation de l'enveloppe +env = [linspace(0, 1, attackS), ... + linspace(1, sustain, decayS), ... + sustain*ones(1, sustainS), ... + linspace(sustain, 0, releaseS)]; +env = [env, zeros(1, length(t) - length(env))]; % compl�ter si besoin + +% Appliquer l'enveloppe +yenv = y .* env; + +plot(t,y,'b'); +hold on +plot(t,yenv,'r'); + +% Lecture ou sauvegarde +% audiowrite('piano_synthetise.wav', y, fs); % pour sauvegarder + diff --git a/q2 1.m b/q2 1.m new file mode 100644 index 0000000000000000000000000000000000000000..cbbc24349141382da4c3449ae41627f61357d3e6 --- /dev/null +++ b/q2 1.m @@ -0,0 +1,16 @@ +Fe = 44100 +T = 1/440; +t = 0:1/Fe:1; +x_square = square(2*pi*t/T); +x_saw = sawtooth(2*pi*t/T); +disp(x_square) +plot(t, x_square); +plot(t, x_saw); + + +X_sq = fftshift(fft(x_square)); +X_sw = fftshift(fft(x_saw)); + +% Filtrage passe-bas d'ordre 1 +y_lp = filter([0.5, 0.5], 1, x_saw); +