%% 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]);

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: