次の方法で共有


方法: XAudio2 でのサウンド再生

このトピックでは、XAudio2 で以前に読み込まれたオーディオ データを再生するために必要な最小手順について説明します。 XAudio2 を初期化し ( 「How to: Initialize XAudio2」を参照)、オーディオ データを読み込んだ後 (「How to: Load Audio Data Files in XAudio2」を参照)、ソース音声を作成してオーディオ データを渡すことでサウンドを再生できます。

サウンドを再生するには

  1. 「方法: XAudio2 を初期化する」で説明されている手順に従って 、XAudio2 エンジンを初期化します。

  2. 方法: XAudio2 でオーディオ データ ファイルを読み込む」で説明されている手順に従って、WAVEFORMATEXXAUDIO2_BUFFER 構造体を設定します。

    注意

    オーディオ データの形式によっては、WAVEFORMATEX の代わりに WAVEFORMATEX 構造体を含むより大きなデータ構造を使用する必要がある場合があります。 詳細については、 WAVEFORMATEX リファレンス ページを参照してください。

     

  3. XAudio2 エンジンのインスタンスで IXAudio2::CreateSourceVoice メソッドを呼び出して、ソース音声を作成します。 音声の形式は、 WAVEFORMATEX 構造体に設定された値によって指定されます。

    IXAudio2SourceVoice* pSourceVoice;
    if( FAILED(hr = pXAudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx ) ) ) return hr;
    
  4. 関数 SubmitSourceBuffer を使用して、ソース音声にXAUDIO2_BUFFERを送信します。

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

    注意

    バッファー ポイントがアプリによって "所有" されているオーディオ サンプル データ。サウンドの再生が停止するまで、割り当てられ、アクセス可能な状態を維持する必要があります。

     

  5. Start 関数を使用して、ソース音声を開始します。 すべての XAudio2 音声は既定でマスタリング音声に出力を送信するため、ソース音声からのオーディオは初期化時に選択されたオーディオ デバイスに自動的に転送されます。 より複雑なオーディオ グラフでは、ソース音声で出力の送信先となる音声を指定する必要があります。

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

Windows ストア アプリに関する注意事項

スマート ポインターを使用して、例外セーフな方法で XAUDIO2 オブジェクトの有効期間を管理することをお勧めします。 Windows ストア アプリの場合は、Windows ランタイム C++ テンプレート ライブラリ (WRL) から ComPtr スマート ポインター テンプレートを使用できます。

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

注意

IXAudio2 オブジェクトを解放する前に、XAUDIO2 オブジェクトへのすべてのスマート ポインターが完全に解放されていることを確認します。

 

XAudio2 はじめに

方法: XAudio2 の初期化

方法: XAudio2 でのオーディオ データ ファイルの読み込み