Share via


Procedura: Riprodurre un suono con XAudio2

In questo argomento vengono descritti i passaggi minimi necessari per riprodurre i dati audio caricati in precedenza in XAudio2. Dopo aver inizializzato XAudio2 (vedere Procedura: Inizializzare XAudio2) e caricare i dati audio (vedere Procedura: Caricare file di dati audio in XAudio2), è possibile riprodurre un suono creando una voce di origine e passando dati audio.

Per riprodurre un suono

  1. Inizializzare il motore XAudio2 seguendo la procedura descritta in Procedura: Inizializzare XAudio2.

  2. Popolare una struttura WAVEFORMATEX e XAUDIO2_BUFFER seguendo i passaggi descritti in Procedura: Caricare file di dati audio in XAudio2.

    Nota

    A seconda del formato dei dati audio, potrebbe essere necessario usare una struttura di dati più grande contenente una struttura WAVEFORMATEX al posto di waveFORMATEX. Per altre informazioni, vedere la pagina di riferimento WAVEFORMATEX .

     

  3. Creare una voce di origine chiamando il metodo IXAudio2::CreateSourceVoice in un'istanza del motore XAudio2. Il formato della voce viene specificato dai valori impostati in una struttura WAVEFORMATEX .

    IXAudio2SourceVoice* pSourceVoice;
    if( FAILED(hr = pXAudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx ) ) ) return hr;
    
  4. Inviare un XAUDIO2_BUFFER alla voce di origine usando la funzione SubmitSourceBuffer.

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

    Nota

    I dati di esempio audio a cui i punti buffer sono ancora di proprietà dell'app e devono rimanere allocati e accessibili fino a quando il suono non smette di riprodurre.

     

  5. Usare la funzione Start per avviare la voce di origine. Poiché tutte le voci XAudio2 inviano l'output alla voce mastering per impostazione predefinita, l'audio dalla voce di origine consente automaticamente al dispositivo audio selezionato all'inizializzazione. In un grafico audio più complesso, la voce di origine deve specificare la voce a cui inviare l'output.

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

Note per le app di Windows Store

È consigliabile usare un puntatore intelligente per gestire la durata degli oggetti XAUDIO2 in modo sicuro. Per le app di Windows Store, puoi usare il modello di puntatore intelligente ComPtr dalla libreria modelli C++ di Windows Runtime.

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);

Nota

Assicurarsi che tutti i puntatori intelligenti agli oggetti XAUDIO2 vengano rilasciati completamente prima di rilasciare l'oggetto IXAudio2 .

 

Introduzione XAudio2

Procedura: Inizializzare XAudio2

Procedura: Caricare file di dati audio in XAudio2