Nov17th

XACT のバックアップ差分(No.12)

Top / XACT


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*プログラムから呼び出し [#c6189768]
-カテゴリ単位でボリュームの調整→IXACT3Engine::SetVolume()
--カテゴリはIXACT3Engine::GetCategory()に文字列を渡して取得

-キューインタフェースの取得→IXACTSoundBank::Prepare()
#highlight(cpp){{
XACTINDEX cueIndex;
IXACT3Cue* cue;
pSoundBank->Prepare(cueIndex, 0, 0, &cue);
}}
--第3引数で再生位置(ms)を指定できるっぽい

-Sound Bankからキュー名一覧を読み込む
--キューに積み込んだ曲名はユーザが知っている前提だが、デバッグ用ウィンドウに出力するなどのために一応
#highlight(cpp){{
std::vector<std::string> cueNames;

XACTINDEX num;
pSoundBank->GetNumCues(&num);
for(int i = 0; i < num; i++)
{
    XACT_CUE_PROPERTIES prop;
    pSoundBank->GetCueProperties(i, &prop);
    cueNames.push_back(prop.friendlyName);
}
}}

-キューの名前をインデックスに変換した後に再生する
--音の停止はインデックスで行うので、同じ音でN番目に鳴らしたものを止めるようなことはできない

-WaveBankはサイズの大きいファイルなので、シーンごとにロードするなどの工夫が必要

-WaveBank読み込み時に、メモリに展開かストリーミングかを分ける必要がある
--Xact.exeで設定する項目がある
--読み込みに使う関数が異なる

-WaveBank、SoundBankを複数個持てるような設計にする必要有り

*Xact.exeでのオーサリング [#oa11253b]
-ビルド後のファイルにwavの波形情報が含まれるため、プログラムから呼ぶ場合はwavファイルが参照できなくても大丈夫

-プロジェクトメニューのCompression Presetsで圧縮設定
WaveBankのCompression Presetからwavごとに圧縮設定

-Cueのファイルを選択後、左下のウィンドウのLimit Instancesをチェック入れておくと同時再生を制限できる

-Sound BankにはWave Bankからドラッグ&ドロップで登録
ウィンドウ左下のCueにも登録する

-wavファイルの登録はドラッグ&ドロップで行う

-Xact.exeから音の再生をする場合、AudConsole.exeを立ち上げておく必要がある
サーバの様な機能を持っている模様

-SoundBanks
曲の再生順やループの設定等をする場所
WaveBanksからwavを取り出した後、編集する
Sound Bankウィンドウの左下の名前がプログラムから呼び出す時に使う名前になる

-WaveBanks
元となるWavファイルを登録する場所
ファイルパスの管理を行う


*3D音源 [#pe729f1d]
-初期化
--xact3d3.hをインクルード
--X3daudio.libをリンク
#highlight(cpp){{
X3DAUDIO_HANDLE hXact3d;
HRESULT hr = XACT3DInitialize(pEngine, hXact3d);
}}

-SoundBankのPlayからだとCueへセットした音源位置の計算が適用されないので、IXACT3Cue::Play()を使う
--SoundBank::Play()の第4引数にCueをセットすれば同じことができる?
--フェードイン・フェードアウトはイベントとして制御されるらしい

-再生中に音の定位を変更する方法
--XACT3DApply(&dspSetting, cue)は再生前にしか機能しない

*メモ [#icd434d9]
-カテゴリはSoundBankに登録された音ごとに指定

-再生中に音のパラメータを変更するのは、XACT.exe側で設定したものしか出来ない。
--救急車のサイレンを1周期ごとに再生パラメータを変えて繰り返し鳴らすのはできる
--BGMの音量を距離に応じて変化させるのは、XACT.exe側で事前設定が必要

-内部的にはXAudio2が使われている

-全体を1つのプロジェクトで管理するのが良いのか、1シーンに1プロジェクトファイルを対応させるのが良いのか
--BGM_SceneN、SE_SceneNとしてシーン数だけセットを持たせる?

-Xact.exeでファイルを作った後、XACTAPIでファイルを読み込んで再生

-xgs
プロジェクトファイル
プログラムは最初にこれを読み込む

-xwb
Wave Bankの情報を格納したファイル
ここにwavファイルの中身も入る模様

-xsb
Sound Bankの情報を格納したファイル

-xap
XACTのプロジェクトファイル。これは読み込まない
wavファイルをこれと同じディレクトリに入れる

-DirectXSDKインストール時にXACTとAudConsoleへのパスが通されているので、スタートメニューの検索から呼び出せる

~

*未着手 [#daaf193c]
-曲のループポイントの制御
--マーカーイベントで制御

~

*リンク [#mad8c7b5]
-XACT
http://msdn.microsoft.com/ja-jp/library/bb943865(v=vs.85).aspx
XACTスタートページ

-方法 : XACT での X3DAudio の統合
http://msdn.microsoft.com/ja-jp/library/bb172327(v=vs.85).aspx
lisner、emitterの初期化コード有り

-XACT 変数
http://msdn.microsoft.com/ja-jp/library/bb172310(v=vs.85).aspx

-XACT その2。 ツールの基本の話
http://kocoon-memo.hateblo.jp/entry/2013/07/24/031209
Xact.exeを使って3種のファイルを作成する方法の説明

-XACT その3-1。 コードの話<準備~エンジン初期化編>
http://kocoon-memo.hateblo.jp/entry/2013/10/14/182745
XACTAPIの初期化他

-XACT その3-2。 コードの話<WB/SB初期化編>
http://kocoon-memo.hateblo.jp/entry/2013/10/14/193136

-XACT その3-3。 コードの話<サウンド再生~解放編>
http://kocoon-memo.hateblo.jp/entry/2013/10/14/193156

#highlight(end)