方法: XAudio2 でのサウンド再生
このトピックでは、XAudio2 で以前に読み込まれたオーディオ データを再生するために必要な最小手順について説明します。 XAudio2 を初期化し ( 「How to: Initialize XAudio2」を参照)、オーディオ データを読み込んだ後 (「How to: Load Audio Data Files in XAudio2」を参照)、ソース音声を作成してオーディオ データを渡すことでサウンドを再生できます。
サウンドを再生するには
「方法: XAudio2 を初期化する」で説明されている手順に従って 、XAudio2 エンジンを初期化します。
「方法: XAudio2 でオーディオ データ ファイルを読み込む」で説明されている手順に従って、WAVEFORMATEX と XAUDIO2_BUFFER 構造体を設定します。
注意
オーディオ データの形式によっては、WAVEFORMATEX の代わりに WAVEFORMATEX 構造体を含むより大きなデータ構造を使用する必要がある場合があります。 詳細については、 WAVEFORMATEX リファレンス ページを参照してください。
XAudio2 エンジンのインスタンスで IXAudio2::CreateSourceVoice メソッドを呼び出して、ソース音声を作成します。 音声の形式は、 WAVEFORMATEX 構造体に設定された値によって指定されます。
IXAudio2SourceVoice* pSourceVoice; if( FAILED(hr = pXAudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx ) ) ) return hr;
関数 SubmitSourceBuffer を使用して、ソース音声にXAUDIO2_BUFFERを送信します。
if( FAILED(hr = pSourceVoice->SubmitSourceBuffer( &buffer ) ) ) return hr;
注意
バッファー ポイントがアプリによって "所有" されているオーディオ サンプル データ。サウンドの再生が停止するまで、割り当てられ、アクセス可能な状態を維持する必要があります。
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 オブジェクトへのすべてのスマート ポインターが完全に解放されていることを確認します。
関連トピック
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示