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

C++Builder Discussion :

Lecture d'un fichier Son avec une Fr�quence pr�cise


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut Lecture d'un fichier Son avec une Fr�quence pr�cise
    Bonjour � tous

    Je dois dans un de mes programmes lire un son qui a une fr�quence et une dur�e pr�cise (r�glable).

    J'ai d'abord opt� pour la fonction BEEP � laquelle je passe la fr�quence et la Dur�e.
    Mon probl�me c'est que le son ne se d�clenchait pas � l'instant ou je le lance mais avec une certaine latence qui n'est malheureusement pas la m�me � chaque fois. Je dois lancer un son et envoyer un signal � une carte d'E/S National Instrument pour d�clencher un autre appareil en m�me temps donc la latence me pause probl�me.

    Ma deuxi�me solution � �t� de g�n�rer un fichier waw � la fr�quence que je voulais. Pour la dur�e, je ne peux pas avec le bou de code que j'ai, g�n�r� une dur�e en dessous de 1 seconde. J'ai utilis� l'objet MediaPlayer pour lire le son et l'arr�ter quand j�atteins le temps voulu. (m�me souci de latence).

    Ma troisi�me solution a �t� de g�n�rer un fichier waw plus long et de le lancer en avance avec un volume � 0 (param�tre de MediaPlayer) et de passer le volume � 1 quand je veux lire le son. Probl�me, pas de son lu car le volume reste � 0.

    Ma quatri�me solution aurait �t� d'utiliser PlaySond (API) mais il est en 32 bits, or je d�veloppe en 64 bits et je ne peux pas repasser en 32Bits � cause de la Carte d'E/S qui ne r�pond plus lorsque je suis en 32Bits.

    Quelqu'un aurait-il une solution � me proposer pour que je n'ai pas de latence ?

    Merci d'avance pour votre aide

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut
    la dll wimmdll est compatible 32 et 64 bits
    donc le code suivant
    // je te laisse traduire de Delphi en c++

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure PlaySoundFile(FileName: string);
    begin
     if FileExists(FileName)
     then PlaySound(pchar(FileName), 0, SND_ASYNC or SND_FILENAME);  
     
     { Flags are:
        SND_SYNC  =0 = Start playing, and wait for the sound to finish
        SND_ASYNC =1 = Start playing, and don't wait to return
        SND_LOOP  =8 = Keep looping the sound until another sound is played  }
    end;
    devrait fonctionner sous les environnements 32 et 64 Bits

    infos sup ici:https://learn.microsoft.com/en-us/wi...sound-function

    cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  3. #3
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut
    un petit exemple cr�� en 64 Bits
    j'affiche dans une barre de status le temps entre l'appel de la fonction et la sortie
    sur ma becanne de plus de 10 ans le temps est de 3 ms.
    le param�tre SND_ASYNC est important car on travaille en mode asymchrone

    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
    19
    20
    21
    22
    23
     
    #include <vcl.h>
    #pragma hdrstop
    #include"MMSystem.h"
    #include"Main.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm140 *Form140;
    //---------------------------------------------------------------------------
    __fastcall TForm140::TForm140(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm140::Button1Click(TObject *Sender)
    {
    	  TDateTime Start =Now();
    	  PlaySoundA("SYSTEMSTART", 0, SND_ASYNC);
    	  TDateTime Stop =Now();
    	  StatusBar1->Panels->operator[](1)->Text=FormatDateTime(L"hh:mm:ss.zzz",Stop-Start);    // 3 ms sur ma vieille machine
    }
    //---------------------------------------------------------------------------
    cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  4. #4
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    Je vais essay� ta solution. merci beaucoup

  5. #5
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    Je reviens apr�s avoir test�.

    J'ai sensiblement diminu� mon temps de latence avec ta solution. ce temps est moins al�atoire qu'avec le MediaPlayer mais il reste � 60ms. par temps de latence j'entends le temps entre l'envoi de la commande de son et le moment ou le son commence � se jouer effectivement. Cela ne reste pas assez r�duit pour moi quand je dois lancer dans le m�me temps un autre �v�nement qui dois �tre synchronis�.

    Je ne vois pas comment faire pour arriver � lancer un son en instantan� ou quasiment en instantan� car il y a toujours une latence mais il me faudrait qu'elle soit le plus r�duite possible (de l'odre de 2 � 3 ms) et je craint que cela ne soit pas possible.

    Si vous avez une solution je suis preneur.

  6. #6
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut
    Ce temps de latence est il toujours le m�me ?
    Pour rappel Windows n�est pas un syst�me en temps r�el
    Ce que tu appel temps de latence d�pend de la charge de ta machine.
    Cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

Discussions similaires

  1. R�ponses: 1
    Dernier message: 21/02/2013, 16h21
  2. R�ponses: 2
    Dernier message: 14/01/2013, 15h53
  3. R�ponses: 4
    Dernier message: 24/05/2010, 13h06
  4. Fichier Wav avec une fr�quence donn�e
    Par azimut2 dans le forum Windows
    R�ponses: 0
    Dernier message: 23/11/2009, 05h19
  5. R�ponses: 2
    Dernier message: 01/05/2007, 18h50

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