%% SU L3-ST4 (L.B.)
% 2022/03/25
% 2022/10/12
% derniere MaJ : 2023/09/18
% Update TP d'introduction au "Traitement du signal" destiné à découvrir
% les notions : d'échantillonnage ; de troncature ; la transformation de
% Fourrier, ses applications (et fonctions utiles).
%
% Un fichier son (au format WAV) est fourni.
%
% Pas de dependances.
%
% Script à completer par les étu
% !!!!! ATTENTION NE PAS EXECUTER TEL QUEL
% !!!! FAIRE UNE PREMIERE LECTURE DU SCRIPT
% !!! POUR COMPRENDRE SA STRUCTURE
% PUIS ...
% !!! COMMENTER L'ENSEMBLE DU FICHIER
% !!!! PREPARER LES REPONSES
% !!!!! DECOMMENTER ET COMPLETER PROGRESSIVEMENT
%
% N.B. programmation à la volée, i.e. rien n'est fait pour que le script
% soit optimisé, rapide, modulable -->version qui doit être correctement
% réécrite :
% -> améliorer les commentaires
% -> vectoriser si besoin
% -> passer les étapes répétitives en fonctions
% -> récuperer les étiquettes/paramètres du tir depuis le seg2 (pour niveau M2)
% etc.
%
%% Rendu attendu : répondre en remplissant progressivement le script
% (certaines parties déjà écrites seront à décommenter au fur et à mesure).
% Donnez vos réponses en précisant bien la question à laquelle elles se
% réfèrent, p.ex. : R1.c pour la réponse à la question Q1.c
% (exemples donnés au début)
%
% Le rendu final aura une des formes suivantes :
% - script commenté (.m) et mini-rapport illustré avec figures et commentaires (.pdf)
% - ou bien directement un script enrichi (.mlx)
% - Autres recommandations :
% --commentaires du scripht indispensables ;
% --déclaration de toutes les variables et de tous les
% paramètres avec description en commentaire de leur
% signification et unité (ne pas oublier les unités dans les légendes!);
% --numérotation des figures avec titre et légendes ;
% --indentation ;
% --n'oubliez pas les ";" en fin de ligne...
%
%
%% AUTEUR(S) (partie ETU) : NOM1 (NOM2)
% Date de rendu : yy/yy/2023
% Commentaires généraux :
%
%
% ...
%
% !!! Indiquez ST4TDSON et vos noms dans l'objet du mail de rendu (s'il
% n'est pas demandé en dépôt sur moodle).
%
%% Préparation du script avant lancement
clear % Nettoyage préliminaire fortement conseillé pour éviter que
% d'anciennes valeurs de variables toujours stockées ne perturbent
% l'exécution du script
fclose all ; % Pour fermer tous les fichiers qui n'auraient
% pas été correctement fermés
close all % Pas nécessairement utile à chaque exécution, mais permet de
% fermer tous les graphes d'un coup
format longE % Pour un affichage plus scientifique et sans troncage
% excessif dans les tableaux
nfig = 1; % Pour numéroter les figures
%
%% DONNEES
% les fichier son fourni est :
fichierson="son.wav";
%
%% Question 1
% Ecoutez le son (son.wav) en utilisant une appli sur votre
% ordinateur ou votre téléphone.
%
% Q1.a A quoi correspond ce son ?
% R1.a : son telephone
% Q1.b Quelle est sa durée ?
% R1.b :
% Q1.c Comment définir sa qualité (niveau de bruit)?
% R1.c :
%% Question 2
% Chargez ce "son" qui est au format "wav" = WAVeform audio format
% en utilisant la fonction audioread de matlab :
% https://[Log in to view URL]
% Q2.a Quelles sont (et de quels types) les variables que retourne cette
% fonction (bien lire l'aide matlab) ?
% Pour répondre, regardez notamment la taille de ces variables.
% R2.a :
% Q2.b Quelle est la valeur de Fe ? A quoi cela correspond-t'il ?
%Fe =
% R2.b :
%% Question 3
% Comment, du coup, représenter ce signal correctement en fonction du temps?
%
% Q3.a Quel est son nombre "Nt" d'échantillons ?
% R3.a :
%Nt =
% Q3.b Attribuez au signal sonore le nom de variable "son" en
% vous donnant la possibilité de changer artificiellement sa taille
%son= ;
% Q3.c Quelle est la valeur du pas d'échantillonnage "dt" (ou pas de temps)?
%dt =
%
% Q3.d. Quelle est la durée "Dt" du signal?
%Dt =
%% Question 4
% Il faut creer un tableau un tableau de temps pour representer le
% signal...
%
% Q4.a Quand a t il commencé ?
% temps initial = 0, ou dt, ou au choix?
%t0 =
%tab_temps =
% Q4.b Tracez le son en fonction du temps.
%figure(1); hold on;
%plot(,'b','linewidth',1.5);
%x1 = 50;
%y1 = 550;
%width1 = 550;
%height1 = 400;
%set(gcf,'units','points','position',[x1,y1,width1,height1])
%% Question 5
% Décrire en détails ce signal ?
%disp('Strike any key to zoom')
%pause
%figure(1); xlim([0 0.05]); ylim([-1.25 1.25]);
%disp('Strike any key to continue')
%pause
%% Question 6
% Calculer sa transformée de Fourrier...
%
% Q6.a Comment definir un tableau de fréquences ?
%f0 =
% Q6.b Avec quel pas d'ech. en frequence va-t-on pouvoir calculer la TF?
%df =
% Q6.c Sur combien d'echantillons va-t-on calculer la TF?
%Nf =
%tab_frequence =
% Fonction matlab pour la TF (transformée de Fourier rapide) :
%fftson =
%% Question 7 Représentez la TF:
%figure(2); hold on;
%plot(,'b','linewidth',1.5);
%xlabel('Fréquence (Hz)'); ylabel('|TF|');
%x2 = 50;
%y2 = 50;
%width2 = 550;
%height2 = 400;
%set(gcf,'units','points','position',[x2,y2,width2,height2])
%--> zoom
%disp('Strike any key to zoom')
%pause
%figure(2); xlim([0 10000]);ylim([0 1.25]);
%disp('Strike any key to continue')
%pause
% Q7.a Qu'observe t'on sur le module de la TF ?
%% Question 8 Comment retirer (i.e. filtrer) la note non désirée
%
% Q8.a Création du filtre
% On définit d'abord les limites de la fonction porte
%fmin = ;
%fmax = ;
% On traduit ces valeurs en indices dans le tableau de fréquence
%indice_fmin =
%indice_fmax = ;
% On...
%porte = ;
%porte() = ;
%porte() = ;
% pour être sûr de ce que l'on fait on trace la porte par dessus le module de la TF de "son"
%figure(2); hold on;
%plot(,'g--');
% Q8.b Application du filtre
%filtered_son=
% signal filtré en temps
%figure(1); hold on;
%plot(,'g');
% Q8.c Ecouter la difference...
%
%disp('Strike any key to listen original son.wav')
%pause
%sound(son,Fe);
%disp('Strike any key to continue')
%pause
%disp('Strike any key to listen son.wav filtered')
%pause
%sound(filtered_son,Fe);
%disp('Strike any key to continue')
%pause
%% Question 9 Reproduire vous même ce son et comparer les données :
% Q9.a D'abord apprenez à vous enregistrer...
% decommentez les commandes ci-dessous
% allez visiter l'aide matlab pour savoir à quoi tout ça correspond
% nBits = 16 ; nChannels = 1 ; ID = -1; % default audio input device
% recObj = audiorecorder(Fe,nBits,nChannels,ID);
% disp('Strike any key before speaking.')
% pause
% recordblocking(recObj,Dt);
% disp('End of Recording.');
% sonperso = getaudiodata(recObj);
% Calculer la fft de votre voix
% fftsonperso =
% Q9.b Représentez là, ainsi que le signal temporel par-dessus "son"
%figure(1); hold on;
%plot(,'r','linewidth',1.5);
%xlim([0 2]); ylim([-1.25 1.25]);
%disp('Strike any key to zoom')
%pause
%figure(1); xlim([0 0.05]); ylim([-1.25 1.25]);
%disp('Strike any key to continue')
%pause
%figure(2); hold on;
%plot(,'r','linewidth',1.5);
%xlim([0 max(tab_frequence)]);ylim([0 1.25]);
%disp('Strike any key to zoom')
%pause
%figure(2); xlim([0 3000]);ylim([0 1.25]);
%disp('Strike any key to continue')
%pause
% Q9.c Commentez les différences entre le son d'origine filtré
% et votre voix
% Q9.d Recommencez plusieurs fois en changeant de voix (grave, aigus, etc)
% Enfin... essayer de chanter un "La"
% Q10 Ecouter la difference...
% Et commentez...
%disp('Strike any key before listening son.wav filtered')
%pause
%sound(filtered_son,Fe);
%disp('Strike any key to continue')
%pause
%disp('Strike any key before listening your own voice')
%pause
%sound(100*sonperso,Fe); % facteur 100 d'amplification en fonction des micro/HP
%disp('Strike any key to continue')
%pause
% Q10.a On peut filtrer sa voix pour ne garder que la fréquence désirée
%fmin2 = ;
%fmax2 = ;
%indice_fmin2 =
% etc
%filtered_sonperso=
%disp('Strike any key before listening your own voice filtered')
%pause
%sound(100*filtered_sonperso,Fe);
%disp('Strike any key to continue')
%pause
%figure(1); hold on;
%plot(,'m','linewidth',1.5);
%figure(2); hold on;
%plot(,'m','linewidth',1.5);
%xlim([0 3000]);ylim([0 1.25]);
To embed this project on your website, copy the following code and paste it into your website's HTML: