DirectMusicの初期化

以下のサンプルはMIDIファイルを読み込み、画面上で左クリックで再生、右クリックで停止を行うというものです。
この節ではサンプルソースのDirectMusicの初期化部分について解説を行います。

サンプルソース

初期化の手順

DirectMusicの初期化は処理は以下のように手順で行います。

  1. COMの初期化
  2. パフォーマンスの作成
  3. パフォーマンスの初期化
  4. ローダーの作成

サンプルでは上記の処理をinitSound関数としてまとめています。

COMの初期化

COMの初期化を行うにはCoInitialize関数を使います。

// COMの初期化
if( FAILED( CoInitialize( NULL ) ) ) {
	return E_FAIL;
}
CoInitialize関数はこの後に使用するCoCreateInstance関数を使用する前に必要であり、
CoInitialize関数を行わず、CoCreateInstance関数を使用すると失敗してしまいます。

パフォーマンスの作成

次にIDirectMusicPerformance8 インターフェイスを取得するためにCoCreateInstance関数を使います。

// パフォーマンスの作成
if ( FAILED( CoCreateInstance( CLSID_DirectMusicPerformance, NULL,
	CLSCTX_INPROC, IID_IDirectMusicPerformance8, (void**)&g_pPerformance ) ) ) {
	return E_FAIL;
}

IDirectMusicPerformance8 インターフェイスは、再生の総合的な管理を行うためのものです。

パフォーマンスの初期化

IDirectMusicPerformance8 インターフェイスのメソッドである、InitAudioを使用して、
パフォーマンスを初期化し、オーディオパスを設定します。

// パフォーマンスの初期化
if ( FAILED( g_pPerformance->InitAudio( NULL, NULL, NULL,
	DMUS_APATH_SHARED_STEREOPLUSREVERB, 64, DMUS_AUDIOF_ALL,NULL ) ) ) {
	return E_FAIL;
}

ローダーの作成

IDirectMusicLoader8 インターフェイスを取得するためにCoCreateInstance関数を使います。

if ( FAILED( CoCreateInstance( CLSID_DirectMusicLoader, NULL,
	CLSCTX_INPROC, IID_IDirectMusicLoader8, (void**)&g_pLoader ) ) ) {
	return E_FAIL;
}

IDirectMusicLoader8 インターフェイスは音楽ファイルをロードするためなどに使用します。


inserted by FC2 system