Analyse Fréquence du son micro

VirusCrazy Messages postés 8 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 25 mai 2007 - 14 juin 2005 à 09:12
VirusCrazy Messages postés 8 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 25 mai 2007 - 15 juin 2005 à 11:21
Bonjour,




<li>Je cherche à savoir comment faire de A à Z pour récupérer le son du microphone et en extraire les fréquences (frequences principales qui se limiterons à 6 au maximum).</li>

Comment récupérer le son du microphone (quel
composant utiliser ? J'utilise actuellement un composant de MMTool mais
je ne peux réutiliser ses données ) et où le stocker ?

Je sais qu'il va falloir utiliser une FFT mais le
problème est son utilisation (quel composant, il y en a tellement ).
J'entends parler de vecteur dans certains fichiers d'aides...késako (je
sais que c'est ce qu'il faut donner en entrée au composant réalisant la
FFT mais je connais pas trop les types...). Quel type de donnée je récupère en sortie de FFT ? (un tableau avec les fondamentale et harmoniques ou autre )?

J'aimerais aussi que la précision soir assez bonne
(de l'ordre du Hertz ou demiHertz). L'analyse serait parfaite si elle
etait quasiment en "live" mais je pense que le temps réel sea difficile
vu les calculs.



Donc si quelqu'un pouvait m'aider à réaliser ce petit code...



D'avance merci.

Jérôme

4 réponses

VirusCrazy Messages postés 8 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 25 mai 2007
14 juin 2005 à 09:46
Salut,



Malheureusement, je n'ai rien trouvé sur ce problème. Il n'y a rien de
très clair et surtout je n'ai aucunes informations comment utiliser les
vecteur pour la fonction FFT.



Merci
0
VirusCrazy Messages postés 8 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 25 mai 2007
15 juin 2005 à 08:16
Merci pour cette réponse, je vais regarder sur le lien donné.
Concernant la FFt, je l'ai étudiée lors de mon cursus scolaire (IUT
Genie Electrique etinformatique industrielle) mais nous l'utilisions
avec en entrée une fonction f(t) du type sin(x)+.... et non pas avec un
tableau de valeurs. C'est pourquoi je ne sais pas trop comment m'y
prendre avec la fonction utilisant des valeurs.

Aussi, j'ai installé les composants du pack DSPLab de chez Dew Research
et ilme semble qu'il ne sont pas trop mal mais si vous pouvez me
conseiller aussi sur le 'meilleur' composant pour faire la FFt, ce
serais sympa.



Je vais déja etudier ce que tu m'as donné.



Merci encore,

Jérôme
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
15 juin 2005 à 11:15
Salut,



En utilisant le TDspFFT avec le TWaveIn ton code pourrait ressembler à :



procedure TForm1.FormCreate(Sender: TObject);

begin

DspFFT1.BufferSize := WaveIn1.BufferLength; // Tailles de buffers compatibles

end ;



procedure TForm1.FormActivate(Sender: TObject);

begin

WaveIn1.StartSampling; // Départ échantillonnage


end;



procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

WaveIn1.StopSampling; // Arrêt échantillonnage

end;



procedure TForm1.WaveIn1BufferFull(Sender: TObject); // Evènement du TWaveIn

var

i : Integer;

F : real;

begin

for i : = 0 to WaveIn1.BufferLength-1 do

begin

DspFFT1.RealIn[i] := WaveIn1.Data[i]; // recopie des echatillons (partie réelle)

DspFFT1.ImagIn[i] := 0; // partie imaginaire à 0

end ;


dspFFT1.FFT; // Calcul de la FFT


// RealOut[i] contient la partie réelle


// ImagOut[i] contient la partie imaginaire



// i de 0 à
(WaveIn1.BufferLength div 2)-1






dspFFT1.CalculateMagnitudes; // Conversion Amplitude (Phase)


// RealOut[i] Contient l'amplitude



// i de 0 à
(WaveIn1.BufferLength div 2)-1



// pas de calcul de phase il me semble



// la fréquence de la raie d'indice i se calcule comme suit :


F : = i / WaveIn1.BufferLength * SampleRates[Ord(WaveIn1.SampleRate)];


end;





Amuse toi bien !



Ken@vo
Code, Code, Codec !

[%3C/body ]
0
VirusCrazy Messages postés 8 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 25 mai 2007
15 juin 2005 à 11:21
Merci,





Je vais commencer par analyser un peu le code pour mieux comprendre
l"'ensemble. Je pense qu'ensuite il me sera plus simple de comprendre
comment cela fonctionne.



Merci.



Jérôme
0
Rejoignez-nous