diff --git a/src/wav/question_3_15.m b/src/wav/question_3_15.m new file mode 100644 index 0000000000000000000000000000000000000000..0ae10340ea5e2535f9f8471f1e123bcbf6384146 --- /dev/null +++ b/src/wav/question_3_15.m @@ -0,0 +1,41 @@ +function y = effet_delay(x, delay_time, g, Fe) +% effet_delay - applique un effet de delay simple à un signal +% +% Entrées : +% x : signal d'entrée +% delay_time : durée du delay (en secondes) +% g : coefficient d'amortissement +% Fe : fréquence d'échantillonnage (en Hz) +% +% Sortie : +% y : signal de sortie après delay + + % Convertir le temps de delay en nombre d’échantillons + tau = round(delay_time * Fe); % tau doit être un entier + + % Vecteurs des coefficients du filtre + b = 1; % Numérateur : pas de modification directe + a = [1 zeros(1, tau - 1) -g]; % Dénominateur : y(k) + g*y(k - tau) + + % Appliquer le filtre + y = filter(b,a,x); +end +[x, Fe] = audioread('single_tone_guitar_nylon_string_a3.wav'); % Charger un fichier audio mono +x = x(:,1); % Ne garder qu’un seul canal si stéréo + +tau_sec = 0.001; % Durée du delay en secondes +g = 0.9; % Coefficient d'amortissement + +% Appliquer l'effet de delay +y = effet_delay(x, tau_sec, g, Fe); + +% Écoute du résultat +soundsc(y, Fe); + +% Affichage temporel +t = (0:length(y)-1)/Fe; +plot(t, y); +xlabel('Temps (s)'); +ylabel('Amplitude'); +title('Signal avec effet de delay'); +grid on;