方法: XAudio2 でサウンドを再生する

このトピックでは、XAudio2 で以前に読み込まれたオーディオ データを再生するために必要な最小手順について説明します。

XAudio2 を初期化後(「XAudio2 の初期化方法」を参照)、オーディオ データを読み込み(方法:XAudio2 でオーディオ データ ファイルを読み込む)、ソース音源を作成してオーディオ データを渡すことで、サウンドを再生できます。

サウンドを再生する

  1. まず、方法: XAudio2 の初期化方法で記載されている手順を実行してオーディオ プレイバック用の XAudio2 を初期化します。

  2. 次に、方法: XAudio2 でオーディオ データ ファイルを読み込むで記載されている手順を実行して、WAVEFORMATEX 構造体と XAUDIO2_BUFFER 構造体を設定します。

    Note

    オーディオ データの形式によっては、WAVEFORMATEX の代わりに、より大きなデータ構造体(WAVEFORMATEX 構造体を含むもの)を使用する必要があります。 詳細については、「WAVEFORMATEX」のトピックを参照してください。

  3. 次に、ソース音声と呼ばれるものを作成するには、IXAudio2::CreateSourceVoice メソッドを呼び出します。 これにより、IXAudio2SourceVoice インターフェイスへのポインターが提供されます。 音声の形式は、WAVEFORMATEX 構造体で設定された値によって指定されます。

    IXAudio2SourceVoice* m_pXAudio2SourceVoice{};
    ...
    winrt::check_hresult(m_xAudio2->CreateSourceVoice(&m_pXAudio2SourceVoice, (WAVEFORMATEX*)&wfx)));    
    
  4. IXAudio2SourceVoice::SubmitSourceBuffer メソッドを呼び出して、XAUDIO2_BUFFER をソース音声に送信します。

    winrt::check_hresult(m_pXAudio2SourceVoice->SubmitSourceBuffer(&xAudio2Buffer));
    

    Note

    SubmitSourceBufferpBuffer パラメータが指すオーディオ サンプル データは、引き続きアプリが所有し、サウンドの再生が停止するまで割り当ておよびアクセス可能な状態を維持する必要があります。

  5. ソース音声を開始するには、IXAudio2SourceVoice::Start メソッドを呼び出します。 すべての XAudio2 音声は既定でマスタリング音声に出力を送信するため、ソース音声からのオーディオは、初期化時に作成/選択されたオーディオ デバイスに自動的に送られます。 より複雑なオーディオ グラフでは、出力をどの音声に送信するかを指定する必要があります。

    winrt::check_hresult(m_pXAudio2SourceVoice->Start(0));
    

スマート ポインター

安全性と利便性のために、IXAudio2 インターフェイスにスマート ポインターを使用できます。 ただし、音声インターフェイス (IXAudio2MasteringVoice など) には Release メソッドがないため、スマート ポインターを使用しようとするとビルド エラーが表示されます。 これらのコード スニペットでは、可能であればスマート ポインターを、必要に応じて生ポインターを使用します。