オーディオ スクリプトの使い方
スクリプトは、DirectMusic Producer でオーサリングされた変数とルーチンのコレクションである。スクリプトは主にテキストで構成されるが、スクリプトにはバイナリ パラメータもいくつか含まれている。概念については、「オーディオ スクリプト」を参照すること。
IDirectMusicLoader8::GetObject メソッドを使ってスクリプトをロードする。IDirectMusicScript8 インターフェイスを取得し、IDirectMusicScript8::Init を呼び出して、スクリプトをパフォーマンスに関連付ける。
次のサンプル関数では、スクリプトをロードして初期化している。
HRESULT LoadScript(IDirectMusicPerformance8 * pPerf,
IDirectMusicLoader8* pLoader,
WCHAR* wstrFileName,
IDirectMusicScript8** ppScript)
{
DMUS_SCRIPT_ERRORINFO errInfo;
HRESULT hr;
if ((NULL == pPerf) || (NULL == pLoader))
{
return E_INVALIDARG;
}
if (SUCCEEDED(hr = pLoader->LoadObjectFromFile(
CLSID_DirectMusicScript, IID_IDirectMusicScript8,
wstrFileName, (LPVOID*) ppScript)))
{
if (FAILED(hr = (*ppScript)->Init(pPerf, &errInfo)))
{
(*ppScript)->Release();
}
}
return hr;
}
Init を除いて、IDirectMusicScript8 のメソッドには、3 つの主な目的がある。
- スクリプトで宣言された変数の値を設定および取得する。スクリプト ルーチンはパラメータを受け付けないので、変数は、スクリプトとアプリケーションで情報を交換するための唯一の方法である。
- ルーチンを呼び出す。アプリケーション スレッドが続行するには、ルーチンの実行が完了している必要がある。
- ルーチンと変数を列挙する。これらのメソッドは、主にスクリプト編集アプリケーションで使われる。
列挙メソッドを除く IDirectMusicScript8のすべてのメソッドは、DMUS_SCRIPT_ERRORINFO 構造体からエラー情報を取得する。変数が見つからない場合や、ルーチン内のコードを実行できない場合は、エラーが発生する可能性がある。
スクリプトは、アプリケーションで直接ロードしたり呼び出したりしなくても使用できる。DirectMusic Producer でオーサリングするセグメントには、スクリプト内のルーチンの呼び出しをトリガするスクリプト トラックを含めることができる。