Dec13th

XACT の変更点

Top / XACT

  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • XACT へ行く。

*プログラムから呼び出し [#c6189768]
-変数
--変数の値をX軸として、VolumeやPitch、周波数やリバーブのパラメータを制御できる
--Xact.exe側の準備
--1. New Variablesで変数を作成
--2. Variable SettingsでName、Init Val、Min、Maxをセット
--3. New RPC PresetsでRPC Presetsを作成
--4. RPC Presetsダイアログで編集するVariableを選択後、ObjectをSound、PrameterをVolumeやPitchなどに変更
--5. 下のグラフを操作
--プログラム側
--1. cueを用意
---再生中に操作する場合、cueへの参照を保存しておく必要が有る
--2. GetVariableIndex()で変数のインデックスを取得
--3. SetVarialble()で変数に値をセット
---Min、Maxの範囲で

--IXACT3Cue::GetVariableIndex()で変数のインデックスを取得後、IXACT3Cue::SetVariable()で変数をセット
#highlight(cpp){{
XACTVARIABLEINDEX variableIndex = pCue->GetVariableIndex("VariableName");
XACTVARIABLEVALUE value = 1.0;
pCue->SetVariable(variableIndex, value);
}}
--グローバル、キューインスタンス合わせて同じ名前を使うことはできない

-キューの状態
--XACT_CUESTATE_CREATED
--XACT_CUESTATE_PREPARING
--XACT_CUESTATE_PREPARED
--XACT_CUESTATE_PLAYING
--XACT_CUESTATE_STOPPING
--XACT_CUESTATE_STOPPED
--XACT_CUESTATE_PAUSED

-カテゴリ単位でボリュームの調整→IXACT3Engine::SetVolume()
--カテゴリはIXACT3Engine::GetCategory()に文字列を渡して取得
--ボリュームはFLOATに名前をつけているだけ。そのまま値を入れられる
---値域は分からない

-キューインタフェースの取得→IXACTSoundBank::Prepare()
#highlight(cpp){{
XACTINDEX cueIndex;
IXACT3Cue* cue;
pSoundBank->Prepare(cueIndex, 0, 0, &cue);
}}
--第3引数で再生位置(ms)を指定できるっぽい
--戻ってくるキューのインスタンスは毎回変わる?
---キューを取得し直すとGetVariableで取ってくる変数の値が初期値に戻ってる

-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をセットすれば同じことができる?
--フェードイン・フェードアウトはイベントとして制御されるらしい

-再生中に音の定位を変更する方法
--Play()時に使ったcueのインスタンスを保存しておいて、XACT3DApply()でDSPパラメータを変更

*メモ [#icd434d9]
-X3DAUDIO_VECTORの中身はD3DVECTOR。

-最大同時再生数はいくつなのか

-DSP
--Digital Signal Processing

-カテゴリは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]
-曲のループポイントの制御
--wavに埋め込むことができる
--wavosaurを使用


~

*リンク [#mad8c7b5]
-XACT番外編。 なんか色々あった話。
http://kocoon-memo.hateblo.jp/entry/2013/12/05/011230
XACT.exeで変数を作ってピッチ制御を行う方法の説明

-XNAでイントロ付きBGMを簡単にループ再生する方法
http://d.hatena.ne.jp/take55/20110126/1295983644

-Xactでサウンド管理
http://www.slideshare.net/kohtakahashi7/xact#14047951711641&hideSpinner
Wavosaur

-XACT
http://msdn.microsoft.com/ja-jp/library/bb943865(v=vs.85).aspx
XACTスタートページ

-方法 : XACT キュー インスタンス変数の使用
http://msdn.microsoft.com/ja-jp/library/cc677043(v=vs.85).aspx

-方法 : 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)