diff --git a/src/SAR1Q4.m b/src/SAR1Q4.m
new file mode 100644
index 0000000000000000000000000000000000000000..596fdb8e9bde0328cb9b183f66e1bf7cdf9804b8
--- /dev/null
+++ b/src/SAR1Q4.m
@@ -0,0 +1,104 @@
+%Q1.4
+% Charger un son
+fichier = fullfile('wav', 'single_tone_piano1');
+[signal, Fs] = audioread(fichier);
+
+if size(signal,2) == 2
+    signal = mean(signal,2);
+end
+
+duration = 1; % (en secondes)
+N = min(length(signal), round(duration*Fs));
+signal = signal(1:N);
+
+% Calculer la FFT
+Y = fft(signal);
+Nfft = length(Y);
+f = (0:Nfft-1)*(Fs/Nfft);
+
+% Utiliser uniquement la moitié du spectre
+Y_half = Y(1:floor(Nfft/2));
+f_half = f(1:floor(Nfft/2));
+
+% Trouver la fréquence fondamentale automatiquement
+[~, idx_fundamental] = max(abs(Y_half));
+f0 = f_half(idx_fundamental);
+fprintf('Fréquence fondamentale estimée : %.2f Hz\n', f0);
+
+% Calculer les 8 premières harmoniques
+harmonics_freqs = f0 * (1:8);
+harmonics_amps = zeros(1,8);
+
+for k = 1:8
+    % Trouver l'index dans f_half le plus proche de l'harmonique k
+    [~, idx] = min(abs(f_half - harmonics_freqs(k)));
+    harmonics_amps(k) = abs(Y_half(idx));
+end
+
+% Durée du son synthétisé
+t = (0:1/Fs:duration)'; 
+
+% Synthèse du son (superposition d'ondes)
+synth_signal = zeros(size(t));
+for k = 1:8
+    synth_signal = synth_signal + harmonics_amps(k) * sin(2*pi*harmonics_freqs(k)*t);
+end
+
+%------Ajout de l'enveloppe ADSR-----
+
+% Paramètres de l'enveloppe (en secondes)
+T_attack = 0.05;   
+T_decay = 0.1;  
+T_sustain = 0.7;   % niveau de sustain (entre 0 et 1)
+T_release = 0.2;   
+
+% Créer l'enveloppe
+n_attack = round(T_attack * Fs);
+n_decay = round(T_decay * Fs);
+n_release = round(T_release * Fs);
+n_sustain = length(t) - (n_attack + n_decay + n_release);
+
+if n_sustain < 0
+    error('Durée totale trop courte par rapport aux durées ADSR.');
+end
+
+% Attack : linéaire de 0 à 1
+env_attack = linspace(0, 1, n_attack)';
+
+% Decay : descend de 1 à T_sustain
+env_decay = linspace(1, T_sustain, n_decay)';
+
+% Sustain : niveau constant
+env_sustain = T_sustain * ones(n_sustain,1);
+
+% Release : descend de T_sustain à 0
+env_release = linspace(T_sustain, 0, n_release)';
+
+% Concaténer toutes les phases
+envelope = [env_attack; env_decay; env_sustain; env_release];
+
+% Appliquer l'enveloppe
+synth_signal = synth_signal .* envelope;
+
+% Normaliser pour éviter saturation
+synth_signal = synth_signal / max(abs(synth_signal));
+
+% Écouter le son synthétisé
+sound(synth_signal, Fs);
+
+% Afficher les harmoniques trouvées
+disp('Fréquences et amplitudes des 8 premières harmoniques :');
+for k = 1:8
+    fprintf('Harmonique %d : %.2f Hz, amplitude = %.4f\n', k, harmonics_freqs(k), harmonics_amps(k));
+end
+
+% Pour sauvegarder dans un fichier 
+audiowrite('synth_piano_ADSR.wav', synth_signal, Fs);
+
+% Pour afficher l'enveloppe : 
+figure;
+plot(t, envelope, 'LineWidth', 2);
+xlabel('Temps (s)');
+ylabel('Amplitude');
+title('Enveloppe ADSR appliquée');
+grid on;
\ No newline at end of file