Skip to content
Snippets Groups Projects
Commit 5a60c118 authored by PERBEN Anatole's avatar PERBEN Anatole
Browse files

Upload New File

parent fce37611
No related branches found
No related tags found
No related merge requests found
% % 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');
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment