Bonjour,

Je voudrais réaliser un programme qui affiche en temps réel sous forme de spectre fréquentiel le son émis dans un micro. Pour le spectre c'est bon (voir algo de la FFT), pour le principe de saisie au micro c'est bon aussi. J'utilise cet algo avec mciSendString :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Bo_Run_Click()
  'Pour capturer
  Nil = ""
  mciSendString "close all", Nil, 0, 0   'Fermeture (au cas où)
  mciSendString "open new type waveaudio alias capture", Nil, 0, 0 'Ouverture du périphérique MCI
  mciSendString "seek capture to start", Nil, 0, 0 'Préparation de la capture
  mciSendString "set capture samplespersec 22050", Nil, 0, 0 'Qualité du son
  mciSendString "set capture bitspersample 8", Nil, 0, 0 'Nombre de bit
  mciSendString "set capture channels 1", Nil, 0, 0 'Nombre de canaux (mono/stereo)
  mciSendString "record capture", Nil, 0, 0  'Capture
End Sub
 
Private Sub Bo_Stop_Click()
  'pour enregistrer
  mciSendString "save capture ""Son.wav""", Nil, 0, 0 'Enregistrement
  mciSendString "stop capture", Nil, 0, 0
  mciSendString "close capture", Nil, 0, 0
End Sub
Le problème c'est que je voudrais raffraichir le spectre au moins 10 fois par seconde, mais si je demande une capture de moins de 0,5 secondes, le fichier son résultant est vide (44 octets). On dirait qu'il ne veut pas enregistrer une période plus courte. Pourtant quand je demande 0,5 secondes il enregistre pile 0,5 secondes de son. Je comprend pas trop , ça vient de quoi, et que puis je faire ?

Merci