IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Capturer le son avec l'API WaveIn dans la dll Winmm


Sujet :

Windows

  1. #1
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Points : 142
    Points
    142
    Par défaut Capturer le son avec l'API WaveIn dans la dll Winmm
    Hello happy tax payers !

    Salut, joyeux confinés ! (Que chacun choisisse ce qu'il préfère.)

    Je suis en train de m'amuser à développer un programme qui va (je n'en doute pas un instant) afficher à l'écran la forme d'onde issue d'un microphone, et je me pose des questions, car j'ai du mal à comprendre la doc fournie par Microsoft dans "Managing Waveform-Audio Recording".

    J'ai bien compris l'utilisation des différentes structures impliquées dans cette affaire, et j'ai bien vu qu'il allait falloir appeler successivement les points d'entrée waveInOpen, waveInStart, et, à un certain moment, WaveInReset et waveInClose. J'ai bien compris aussi qu'on pouvait utiliser plusieurs buffers.

    Mais c'est ici que je pose ma question : je désire être "au plus près" du temps réel, c'est à dire que quand un son arrive sur le micro, je veux que ça se voie à l'écran (s'il y a un délai d'une milliseconde, ça va...). Dans ces conditions, je pourrais marcher avec un seul buffer (et faire mon affaire du retour à la ligne de l'image du signal), mais la doc de µ$ parle de "buffer returned to application". Est-ce que cela veut dire que pendant que les drivers audio échantillonnent le signal du micro et remplissent le buffer (je suppose là bas, dans leur thread), moi, dans mon application, je n'ai pas accès à ce buffer ? En d'autres termes, avec cette api là, le temps réel ne serait pas possible ?

    J'espère que ma question est assez bien posée pour que ceux qui ont déjà touché à ces domaines la comprennent.

    Merci d'avance à qui voudra bien éclairer ma lanterne.

    AMIcalement.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Points : 142
    Points
    142
    Par défaut
    Ben y'a personne ! Ni tax payer, ni confiné par ici ?

    Pendant ce temps, moi, je me suis dit "en attendant que les experts te répondent, t'as qu'à essayer", et je l'ai fait, et figurez-vous que ça marche !

    Il y a peut-être mieux, mais j'ai mis hors de la boucle tous les appels de préparation, se terminant par
    Code vb6 : Sélectionner tout - Visualiser dans une fenêtre à part
    Call waveInStart(DevHandle)
    et, dans la boucle :
    Code vb6 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        waveInPrepareHeader DevHandle, VarPtr(Wave), Len(Wave)
        waveInAddBuffer DevHandle, VarPtr(Wave), Len(Wave)
    Je passe dans ce code quand j'ai fini une ligne, et je peux immédiatement traiter le contenu du buffer.

    Alors, si les experts ont quelque chose à dire, je suis toujours preneur, mais, pour moi, c'est résolu.

    Merci à ceux qui m'ont lu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec API OutText dans une DLL
    Par KlausGunther dans le forum API, COM et SDKs
    Réponses: 20
    Dernier message: 11/05/2014, 15h55
  2. Réponses: 1
    Dernier message: 11/01/2008, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo