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

DirectX Discussion :

DirectSoundCapture : mauvais son


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 26
    Par défaut DirectSoundCapture : mauvais son
    Bonjour à tous,

    Je suis actuellement en train d'essayer de faire une acquisition micro avec DirectSoundCapture, en format 16000Hz, 16bit, Mono pour le faire entrer dans un module qui prend ce format en entrée (je n'ai pas le choix du format).

    Tout semble fonctionner lors de la capture : je lis bien le bon nombre d'octets dans le temps imparti, pas d'erreur direct sound.

    Mais quand je sauvegarde dans un fichier exactement ce que direct sound me donne, et que j'essaie de transformer en .wav avec l'utilitaire sox puis de lire, j'entends beaucoup de bruit, et un tout petit peu ce que je dis dans mon micro.

    La commande sox que j'utilise est :
    sox -w -s -c 1 -r 16000 testAcqui.raw testAcqui.wav

    Les configurations de directx sont :
    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
    // Create IDirectSoundCapture using the preferred capture device
        RUN( DirectSoundCaptureCreate( &DSDEVID_DefaultVoiceCapture, &m_SoundCapture, NULL ), "Can't create DirectSoundCapture", return; );
     
    	// Set data format
    	m_WaveFormat.nSamplesPerSec = 16000;	// 16kHz
    	m_WaveFormat.wBitsPerSample = 16;
    	m_WaveFormat.nChannels = 1;	// Mono Channels
    	m_WaveFormat.wFormatTag = WAVE_FORMAT_PCM;	// format : uniformaly sized sample
    	m_WaveFormat.nBlockAlign = m_WaveFormat.nChannels * ( m_WaveFormat.wBitsPerSample / 8 ); // given in the DirectSound Documentation (don't have to change if using WAVE_FORMAT_PCM)
    	m_WaveFormat.nAvgBytesPerSec = m_WaveFormat.nBlockAlign * m_WaveFormat.nSamplesPerSec; // given in the DirectSound Documentation (don't have to change if using WAVE_FORMAT_PCM)
    	m_WaveFormat.cbSize = 0;	// additional information per sample (0)
     
    	// Calculate buffer caracteristics
        m_dwNotificationSize = max( 1024 , m_WaveFormat.nAvgBytesPerSec / 8 );
        m_dwNotificationSize -= m_dwNotificationSize % m_WaveFormat.nBlockAlign;   
        m_dwBufferSize = m_dwNotificationSize * NUM_REC_NOTIFICATIONS;
     
        // Create buffer
    	DSCBUFFERDESC bufferDescr; ZeroMemory( &bufferDescr, sizeof(bufferDescr) );
    	bufferDescr.dwFlags	= DSCBCAPS_WAVEMAPPED;
        bufferDescr.dwSize        = sizeof(bufferDescr);
        bufferDescr.dwBufferBytes = m_dwBufferSize;
        bufferDescr.lpwfxFormat   = &m_WaveFormat;
    	RUN( m_SoundCapture->CreateCaptureBuffer( &bufferDescr, &m_Buffer, NULL ), "Impossible to create sound buffer", return; );
        g_dwNextCaptureOffset = 0;
    En passant, quelqu'un sait si DirectX sauvegarde dans son tampon des données en signé (ou alors c'est du non signé) ?

  2. #2
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 26
    Par défaut
    Au passage, quelqu'un sait la différence entre .wav et .raw ? En principe le .wav est juste un .raw avec un header, non ?

    Ou il faut faire une transformation.

Discussions similaires

  1. Réponses: 17
    Dernier message: 27/02/2015, 10h48
  2. Mauvais son avec flash MX
    Par valere3092 dans le forum Flash
    Réponses: 1
    Dernier message: 27/08/2008, 21h04

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