次の方法で共有


オーディオ スクリプトの使い方

スクリプトは、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 でオーサリングするセグメントには、スクリプト内のルーチンの呼び出しをトリガするスクリプト トラックを含めることができる。