Beruflich Dokumente
Kultur Dokumente
Jean-Paul Stromboni, Polytech'Nice Sophia, Dpt Sciences Informatiques, SI3 Dure 50 minutes, avec Matlab/Scilab, un vido projecteur, et des hauts parleurs
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 2
Se reprer dans lenvironnement MATLAB (celui de Scilab plus simple contient la plupart des outils de calcul et de trac)
dossier travail
fentre plot
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 3
disp(Message) help disp // il y a un diteur de ligne commande pwd, dir, cd // lancer une application Windows ou Unix unix(notepad.exe) excuter un script ou une fonction Scilab exec(sinus.sce) // fichiers .sce et .sci sinus // %pi format(20) %pi clc execstr(la3= 440;); la3
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 4
y = s.*env;
% concatnation x = [x, am*y]; T = T*.8; am = am*.8; end plot(x) wavplay(x, Fe); wavwrite(x, Fe, './sinus.wav');
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 5
vecteur des frquences harmoniques vecteur des amplitudes des composantes frquentielles
0.4
0.6
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 6
cumul des harmoniques trouvs dans les vecteurs a : amplitude, f : frquence et p : phase
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 7
a= c*t+b pour t(k) < t <t(k+1) Que valent c et b ? Rsoudre a(k)=c*t(k)+b a(k+1)=c*t(k+1)+b
A\B calcule la solution x de A*x = B on s'en sert ici pour trouver les coefficients directeurs c et b de l'enveloppe entre t(k) et t(k+1)
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 8
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 9
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 10
La fonction getf obsolte est remplace par exec exec("envelop.sci"); // par exemple
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 11
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 12
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 13
spectre
1 2 frquence Hz
3 x 10
4
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 14
-40
-100
3 Time
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 15
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 16
function [env] = envelop(t,a,Fe) lt = length(t); T = t(lt); h = 1/Fe; th = 0:h:T; if t(1) >= T // test de validite de t error('t incompatible dans envelop'); end if lt ~= length(a) // test de compatibilit de t et a error('t et a de longueur diffrente dans envelop'); end // au cas o t ne serait pas strictement croissant : for k = 2:lt-1 if (t(k) <= t(k-1)) | (t(k) >= t(lt)) t(k) = (t(k-1)+t(lt))/2; end end n = length(th); env = zeros(1,n); ni = lt-1; c = zeros(1,ni+1); b = c; h2 = 0; for k = 1:ni h1 = h2+1; h2 = 1+floor(t(k+1)/h); cb = [t(k) 1; t(k+1) 1]\[a(k) ; a(k+1)]; c = cb(1); b = cb(2); env(h1:h2) = c*th(h1:h2)+b; end env = .99*env/max(env); endfunction
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 17
note.m Quel doit tre le nom du fichier qui le contient ? On saisit >> note; % dans la fentre de commande, quel est le rsultat ? On saisit s=note; % Quel est le rsultat ? Comment utiliser note pour crer un arpge puis pour crer un accord ?
arpege= [note(440), note(5*440/4), note(3*440/2), note(880,2,.5)]; accord= note(440)+note(5*440/4)+note(3*440/2);
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 19
Dock
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 20
Le nombre d'arguments donns l'appel d'une fonction peut varier, c'est Matlab qui gre :
plot(t,s), plot(s), ou encore h=plot(t,s1,t,s2)
Les deux variables 'nargin' et 'nargout' transmettent la fonction appele le nombre d'arguments dentre et de sortie spcifis lors de l'appel. Dans Scilab, il faut excuter linstruction exec(monFichierScript) pour pouvoir appeler les fonctions dfinies dans monFichierScript la dernire ligne endfunction est obligatoire
2011-12, S.S.I.I., SI3, sance 3, Traiter le signal audio numrique avec Matlab ou Scilab, page 21