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# Discussion :

[DirectSound] Problème lecture de données


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 29
    Par défaut [DirectSound] Problème lecture de données
    Bonsoir,

    Je suis en train d'écrire un programme qui permet d'enregistrer et lire le son en provenance du micro.

    Le partie enregistrement fonctionne correctement sans problème, mais la partie lecture du son me pose un petit soucis lorsque j'essaie de lire avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    soundBuffer.Play(0, BufferPlayFlags.Default);
    J'ai un message d'erreur: DSERR_PRIOLEVELNEEDED

    Voila mon code pour lire le son précédemment enregistrer:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
               byte[] pData = GetSoundData();
     
    //GetSoundData() renvoie un tableau de byte qui sont mes données audio, si j'enregistre cela au format wav que je les lis avec un lecteur audio aucun soucis,donc pas de données corrompu ou autre et mon WaveFormat est donc correct.
     
                int bufferSize = pData.Length;
     
                BufferDescription bd = new BufferDescription();
                bd.BufferBytes = bufferSize;
                bd.CanGetCurrentPosition = true;
                bd.Control3D = false;
                bd.ControlEffects = true;
                bd.ControlFrequency = true;
                bd.ControlPan = true;
                bd.ControlPositionNotify = true;
                bd.ControlVolume = true;
                bd.DeferLocation = true;
                bd.Format = waveFormat;
                bd.GlobalFocus = false;
                bd.LocateInHardware = false;
                bd.LocateInSoftware = false;
                bd.PrimaryBuffer = false;
                bd.StaticBuffer = false;
                bd.StickyFocus = true;
     
     
                //--Recherche périphérique
                DevicesCollection dc = new DevicesCollection();
                int deviceID=-1;
                for (int i = 0; i < dc.Count; i++)
                {
                    if (dc[i].Description.ToString().ToLower().Contains("nom_de_ma_carte_son_que_je_souhaite_utiliser"))
                    {
                        deviceID = i;
                        break;
                    }
                }
                Device d = new Device(dc[deviceID].DriverGuid);
                //----
     
                SecondaryBuffer soundBuffer = new SecondaryBuffer(bd, d);
                soundBuffer.Volume = 0; //max volume
     
                soundBuffer.Write(0, pData, LockFlag.None);
                soundBuffer.SetCurrentPosition(0);
     
                soundBuffer.Play(0, BufferPlayFlags.Default);
    Je ne voie vraiment pas pourquoi je me ramasse ce DSERR_PRIOLEVELNEEDED à chaque fois que je souhaite lire mes données.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 29
    Par défaut
    Après une bonne nuit de sommeil et avoir de nouveau regarder mon code je viens de m'apercevoir que j'avais oublier de faire un SetCooperativeLevel(() sur mon Device, ça fonctionne tout de suite beaucoup mieux ^^

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

Discussions similaires

  1. Problème lecture des données en arabe
    Par dreadysun dans le forum Accès aux données
    Réponses: 3
    Dernier message: 16/10/2009, 19h11
  2. Réponses: 1
    Dernier message: 17/07/2007, 13h05
  3. [SAX] Problème de lecture de données
    Par zybay dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 05/07/2007, 15h38
  4. Réponses: 1
    Dernier message: 21/03/2007, 16h43
  5. [AJAX] Lecture de données XML
    Par flgwen dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/01/2007, 09h34

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