ぼく用あれこれまとめ

XAudio2

最終更新:

bokuyo

- view
管理者のみ編集可

XAudio2


WAVEFORMATEX構造体

チャンネル数 1(モノラル), 2(ステレオ)
ビット深度 8bit, 16bit
サンプリングレート 8.0 kHz, 11.025 kHz, 22.05 kHz, 44.1 kHz
ビットレート 1411bps(=2(stereo)*16bit*44.1bit)以下
XAUDIO2: WARNING: High-bit-depth PCM format should be expressed using WAVEFORMATEXTENSIBLE
XAUDIO2: WARNING: High-bit-depth PCM format should be expressed using WAVEFORMATEXTENSIBLE
  • これはサンプルレート24bitをWAVEFORMATEX構造体を使って呼んだ場合。
  • WAVEFORMATEX構造体はサンプルレート8bitか16bitしか対応してないため怒られる。
解決策
  • wavファイルを16bit/44.100Hzにエンコードする。
  • WAVEFORMATEXTENSIBLE構造体を使う。


WAVEFORMATEXTENSIBLE構造体

  • WAVEFORMATEX構造体で対応できない解像度の高いwavファイルを扱える。
チャンネル数 3以上
ビット深度 WAVEFORMATEXより高いビット深度(24bit)
サンプリングレート WAVEFORMATEXより高い周波数(44.8Hzとか)


XAUDIO2_BUFFER構造体

  • Loopの回数や、Loopするところの指定はすべてここで行う。

LoopCount

  • 0~XAUDIO2_MAX_LOOP_COUNT(=254)回指定できる。
  • 無限ループする場合は、XAUDIO2_LOOP_INFINITE(=255)
  • 0回の場合ループは実行されず、LoopBeginとLoopLengthの値を0にしないといけない。
  • 256をいれるとどうなるのか?
→256が入るけれど、バッファを送るときに強制終了(ブレークポイント発動!)する。
  • じゃあ-1をいれるとどうなるのか?
→buffer.LoopCount=4294967295の値が入るけれど同じく、CreateSourceVoice();で中断(ブレークポイント発動!!)させられる。

Voice

  • ソースボイス
  • サブミックスボイス
  • マスターボイス
があって、ソースボイスはオーディオファイルを読み込んだもの、


SourceVoice

IXAudio2SourceVoice::Start()




WaveFileClass

  • SDK付属のwav読み込みクラス。便利。
  • C:\Program Files\Microsoft DirectX SDK (February 2010)\Samples\C++\Direct3D10\GPUSpectrogram の中にあるよ。


関連項目


参考文献

記事メニュー
目安箱バナー