From 5a60c118ac18d01b2fb0d53ad3893eac106b5302 Mon Sep 17 00:00:00 2001
From: PERBEN Anatole <anatole.perben@imt-atlantique.net>
Date: Wed, 28 May 2025 23:27:25 +0000
Subject: [PATCH] Upload New File

---
 src/wav/question_1_3.m | 82 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 82 insertions(+)
 create mode 100644 src/wav/question_1_3.m

diff --git a/src/wav/question_1_3.m b/src/wav/question_1_3.m
new file mode 100644
index 0000000..4aff29f
--- /dev/null
+++ b/src/wav/question_1_3.m
@@ -0,0 +1,82 @@
+% % Paramètres de base
+% f0 = 220; % Fréquence fondamentale en Hz (La3)
+% amplitudes = [77, 75, 60, 63, 60, 56.5, 55, 41]; % Amplitudes des 8 harmoniques
+% Fs = 44100; % Taux d'échantillonnage
+% duration = 2; % Durée du son en secondes
+% t = linspace(0, duration, duration * Fs); % Vecteur temps
+% 
+% % Initialisation du signal
+% signal = zeros(size(t));
+% 
+% % Superposition des 8 harmoniques
+% for n = 1:8
+%     freq = n * f0;
+%     signal = signal + amplitudes(n) * sin(2 * pi * freq * t);
+% end
+% 
+% % Normalisation
+% signal = signal / max(abs(signal));
+% 
+% % Lecture du son
+% sound(signal, Fs);
+% 
+% % Optionnel : tracer la forme d’onde
+% figure;
+% plot(t(1:1000), signal(1:1000)); % Affiche un court extrait
+% title('Forme d’onde du son harmonique');
+% xlabel('Temps (s)');
+% ylabel('Amplitude');
+% 
+% 
+% 
+
+% Paramètres de base
+f0 = 220; % Fréquence fondamentale
+amplitudes =[77, 75, 60, 63, 60, 56.5, 55, 41];
+Fs = 44100; % Taux d'échantillonnage
+duration = 4; % Durée totale
+t = linspace(0, duration, duration * Fs);
+
+% Création du signal harmonique
+signal = zeros(size(t));
+for n = 1:8
+    freq = n * f0;
+    signal = signal + amplitudes(n) * sin(2 * pi * freq * t);
+end
+signal = signal / max(abs(signal)); % Normalisation
+
+% Paramètres ADSR (en secondes)
+A = 0.01;
+D = 0.05;
+S = 0.2;
+R = 0.1;
+
+% Calcul des échantillons pour chaque phase
+N = length(t);
+Na = round(A * Fs);
+Nd = round(D * Fs);
+Nr = round(R * Fs);
+Ns = N - (Na + Nd + Nr); % reste pour sustain
+
+% Création de l'enveloppe ADSR
+envelope = [linspace(0, 1, Na), ...                    % Attack
+            linspace(1, S, Nd), ...                    % Decay
+            S * ones(1, Ns), ...                       % Sustain
+            linspace(S, 0, Nr)];                       % Release
+
+% Ajustement en cas de petit décalage
+envelope = envelope(1:min(end, N));
+signal = signal(1:length(envelope)); % synchroniser
+
+% Application de l'enveloppe
+signal = signal .* envelope;
+
+% Lecture du son
+sound(signal, Fs);
+
+% Affichage forme d’onde + enveloppe
+figure;
+plot(t(1:3000), signal(1:3000));
+title('Son harmonique avec enveloppe ADSR');
+xlabel('Temps (s)');
+ylabel('Amplitude');
-- 
GitLab