Skip to content
Snippets Groups Projects
question3.m 865 B
% Charger le son
[y, Fs] = audioread('single_tone_piano1.wav');

% FFT
N = 2^nextpow2(length(y));
Y = fft(y, N);
P = abs(Y(1:N/2+1));
f = Fs*(0:(N/2))/N;

% Trouver la fondamentale (plus fort pic sous 500 Hz)
[~, loc_f1] = max(P(f < 500)); % Suppose que f1 est sous 500Hz
f1 = f(loc_f1);

% Initialiser
freq_harm = zeros(1,8);
amp_harm = zeros(1,8);

% Chercher 8 harmoniques autour de nf1
for n = 1:8
    [~, idx] = min(abs(f - n*f1)); % Trouver l'index proche de n*f1
    freq_harm(n) = f(idx);
    amp_harm(n) = P(idx);
end

% Durée du son
duration = 2; % secondes
t = 0:1/Fs:duration;

% Signal synthétisé
synth = zeros(size(t));
for k = 1:8
    synth = synth + amp_harm(k) * cos(2*pi*freq_harm(k)*t);
end

% Normaliser
synth = synth / max(abs(synth));

% Jouer le son
sound(synth, Fs);

% Sauvegarder si besoin
audiowrite('piano_synthetise.wav', synth, Fs);