Microsoft DirectX 8.0 (C++)

IDirectMusicPerformance8::InitAudio

パフォーマンスを初期化し、オプションでデフォルトのオーディオパスをセットアップする。このメソッドは、オーディオパスを使ってパフォーマンスを演奏する前に、呼び出す必要がある。

ほとんどの場合、IDirectMusicPerformance8::Init ではなく、このメソッドを使用することが望ましい。

HRESULT InitAudio(
  IDirectMusic** ppDirectMusic,
  IDirectSound** ppDirectSound,
  HWND hWnd,
  DWORD dwDefaultPathType,
  DWORD dwPChannelCount,
  DWORD dwFlags,
  DMUS_AUDIOPARAMS *pParams
);

パラメータ

ppDirectMusic
DirectMusic オブジェクトへのインターフェイス ポインタを指定または受け取る変数のアドレス。

ppDirectMusic が指す変数に、有効な IDirectMusic または IDirectMusic8 インターフェイス ポインタが含まれている場合は、既存のオブジェクトがパフォーマンスに割り当てられる。このインターフェイスの参照カウントはインクリメントされる。

ppDirectMusic が指す変数に NULL が含まれる場合、DirectMusic オブジェクトが作成され、IDirectMusic インターフェイス ポインタが返される。QueryInterface を使用して IDirectMusic8 を取得する。

ppDirectMusic が NULL の場合、DirectMusic オブジェクトが作成され、パフォーマンスによって内部的に使用される。

「注意」を参照すること。

ppDirectSound
ウェーブ出力のデフォルトで使用する DirectSound オブジェクトの、IDirectSound インターフェイス ポインタを指定または取得する変数のアドレス。このパラメータに NULL ポインタが含まれる場合、DirectMusic によって専用の DirectSound オブジェクトが作成される。示された変数に NULL が含まれる場合、DirectMusic オブジェクトが DirectSound オブジェクトを作成し、そのインターフェイス ポインタが返される。「注意」を参照すること。
hWnd
DirectSound の作成に使うウィンドウ ハンドル。このパラメータは NULL でもよい。その場合、前面ウィンドウが使用される。「注意」を参照すること。

IDirectSound インターフェイス ポインタが ppDirectSound のメソッドに渡される場合、このパラメータは無視される。その場合、アプリケーションは、IDirectSound8::SetCooperativeLevel を使ってウィンドウ ハンドルを設定する責任がある。

dwDefaultPathType
デフォルトのオーディオパス タイプを指定する DWORD 値。デフォルト パス タイプが不要な場合は、0 を指定する。定義された値のリストについては、「IDirectMusicPerformance8::CreateStandardAudioPath」を参照すること。
dwPChannelCount
dwDefaultPathType が 0 以外である場合、パスに割り当てるパフォーマンス チャンネル数を指定する値。
dwFlags
要求された機能を指定するフラグ。pParams が NULL 以外である場合、この値は無視され、要求された機能は、DMUS_AUDIOPARAMS 構造体の dwFeatures メンバに指定される。このパラメータで使用できる値として、次の値が定義されている。
DMUS_AUDIOF_3D
3D バッファ。
DMUS_AUDIOF_ALL
すべての機能。
DMUS_AUDIOF_BUFFERS
複数のバッファ。
DMUS_AUDIOF_ENVIRON
環境モデリング。
DMUS_AUDIOF_EAX
EAX エフェクト。
DMUS_AUDIOF_STREAMING
ストリーミング ウェーブのサポート。
pParams
シンセサイザのパラメータを指定し、どのパラメータが設定されたかについての情報を受け取る DMUS_AUDIOPARAMS 構造体のアドレス。デフォルトのパラメータを使用する場合は、NULL でもよい。

戻り値

成功した場合は S_OK を返す。

失敗した場合は、次のいずれかのエラー値を返す。

DMUS_E_ALREADY_INITED
DSERR_BUFFERLOST
DSERR_PRIOLEVELNEEDED
DSERR_UNINITIALIZED
E_NOINTERFACE
E_OUTOFMEMORY
E_POINTER

注意

このメソッドは、一度だけ呼び出すことができる。既存の IDirectMusic8 インターフェイスの取得に使用することはできない。

DirectMusic オブジェクトは、以下の方法で、パフォーマンスに関連付けることができる。

ppDirectSound で指定するインターフェイス ポインタは、CLSID_DirectSound8 クラスのオブジェクトへのインターフェイスを指していなければならない。このクラスのオブジェクトは、IDirectSoundIDirectSound8 の両方をサポートしているが、IDirectSound インターフェイスを渡す必要がある。このクラスのオブジェクトの作成方法については、「IDirectSound8」の「注意」を参照すること。DirectSound オブジェクトは、InitAudio に渡す前に完全に初期化する必要がある。それが CoCreateInstance を使って作成されたオブジェクトである場合は、IDirectSound8::Initialize を呼び出す。IDirectSound8::SetCooperativeLevel を使って、協調レベルを DSSCL_PRIORITY に設定する。

hWnd パラメータに NULL を渡すと、現在の前面ウィンドウのハンドルを DirectSound に渡すことができる。ただし、アプリケーション ウィンドウが初期化中に前面にあると想定しないこと。最上位アプリケーションのウィンドウ ハンドルを渡すことが最良である。

dwFlags および pParams に設定されたパラメータは、デフォルトのオーディオパス、およびその後作成されたすべてのオーディオパスに適用される。

dwDefaultPathType で 0 以外の値が渡された場合、何かのアプリケーションによって DirectSound が書き込み優先協調レベルで初期化されていると、このメソッドは失敗して DSERR_BUFFERLOST を返す。

パフォーマンスを解放する前に、IDirectMusicPerformance8::CloseDown メソッドを使用してパフォーマンスを終了しなければならない。

動作環境

  ヘッダー : dmusici.h で宣言。