Procédure : lire un son avec XAudio2

Cette rubrique décrit les étapes minimales requises pour lire des données audio précédemment chargées dans XAudio2. Après avoir initialisé XAudio2 (voir Guide pratique pour initialiser XAudio2) et chargé les données audio (voir How to: How to: Load Audio Data Files in XAudio2), vous pouvez lire un son en créant une voix source et en lui transmettant des données audio.

Pour lire un son

  1. Initialisez le moteur XAudio2 en suivant les étapes décrites dans Guide pratique pour initialiser XAudio2.

  2. Remplissez une structure WAVEFORMATEX et XAUDIO2_BUFFER en suivant les étapes décrites dans Guide pratique pour charger des fichiers de données audio dans XAudio2.

    Notes

    Selon le format des données audio, vous devrez peut-être utiliser une structure de données plus grande contenant une structure WAVEFORMATEX à la place d’une structure WAVEFORMATEX. Pour plus d’informations, consultez la page de référence WAVEFORMATEX .

     

  3. Créez une voix source en appelant la méthode IXAudio2::CreateSourceVoice sur un instance du moteur XAudio2. Le format de la voix est spécifié par les valeurs définies dans une structure WAVEFORMATEX .

    IXAudio2SourceVoice* pSourceVoice;
    if( FAILED(hr = pXAudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx ) ) ) return hr;
    
  4. Envoyez un XAUDIO2_BUFFER à la voix source à l’aide de la fonction SubmitSourceBuffer.

    if( FAILED(hr = pSourceVoice->SubmitSourceBuffer( &buffer ) ) )
        return hr;
    

    Notes

    Les exemples de données audio vers lesquels les points de mémoire tampon sont toujours « détenus » par l’application et doivent rester alloués et accessibles jusqu’à ce que le son cesse de jouer.

     

  5. Utilisez la fonction Start pour démarrer la voix source. Étant donné que toutes les voix XAudio2 envoient leur sortie à la voix de mastering par défaut, l’audio de la voix source se rend automatiquement vers le périphérique audio sélectionné lors de l’initialisation. Dans un graphique audio plus complexe, la voix source doit spécifier la voix à laquelle sa sortie doit être envoyée.

    if ( FAILED(hr = pSourceVoice->Start( 0 ) ) )
        return hr;
    

Remarques pour les applications du Windows Store

Nous vous recommandons d’utiliser un pointeur intelligent pour gérer la durée de vie des objets XAUDIO2 de manière sécurisée. Pour les applications du Windows Store, vous pouvez utiliser le modèle de pointeur intelligent ComPtr à partir de la bibliothèque de modèles C++ Windows Runtime (WRL).

Microsoft::WRL::ComPtr<IXAudio2SourceVoice> SourceVoice;
HRESULT hr;
if( FAILED(hr = pXAudio2->CreateSourceVoice( &SourceVoice, (WAVEFORMATEX*)&wfx ) ) )
    throw Platform::Exception::CreateException(hr); 

if( FAILED(hr = SourceVoice->SubmitSourceBuffer( &buffer ) ) )
    throw Platform::Exception::CreateException(hr); 

if ( FAILED(hr = SourceVoice->Start( 0 ) ) )
    throw Platform::Exception::CreateException(hr);

Notes

Assurez-vous que tous les pointeurs intelligents vers les objets XAUDIO2 sont entièrement libérés avant de libérer l’objet IXAudio2 .

 

XAudio2 Prise en main

Procédure : initialiser XAudio2

Procédure : charger des fichiers de données audio dans XAudio2