Platform SDK: DirectX

ステップ 2 : パフォーマンスの作成

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectMusic Visual Basic チュートリアル」を参照すること。

[C++]

どの DirectMusic アプリケーションでも中心となるオブジェクトはパフォーマンスであり、セグメントの再生を管理する。次のサンプル関数のように、COM の CoCreateInstance 関数を使ってパフォーマンスを作成する。

IDirectMusicPerformance* CreatePerformance(void)
{
    IDirectMusicPerformance* pPerf;
 
    if (FAILED(CoCreateInstance(
            CLSID_DirectMusicPerformance,
            NULL,
            CLSCTX_INPROC, 
            IID_IDirectMusicPerformance2,
            (void**)&pPerf
        )))
    {
        pPerf = NULL;
    }
    return pPerf;
}
 

この関数を使ってグローバル パフォーマンス ポインタを初期化し、後のステップで利用できる。

IDirectMusicPerformance* g_pPerf = CreatePerformance();
if (g_pPerf == NULL)
{
    // 失敗。パフォーマンスは作成されていない。
}
 

作成したパフォーマンスは、IDirectMusicPerformance::Init メソッドを呼び出して初期化する必要がある。メソッドは DirectMusic オブジェクトを作成して、デフォルト ポートを管理する。IDirectMusic のメソッドに直接アクセスする必要はないため、ポインタを取得する必要ない。したがって、Init の最初のパラメータには NULL を渡す。また、IDirectSound のポインタおよびウィンドウ ハンドルとして NULL を渡すと、DirectMusic は DirectSound オブジェクトを作成し、協調レベルを設定するときに現在のフォーカス ウィンドウを渡す。

if (FAILED(g_pPerf->Init(NULL, NULL, NULL)))
{
    // 失敗。パフォーマンスは初期化されていない。
};
 

パフォーマンスを作成した後で、初期化を行い、ポートを追加する必要がある。NULL パラメータを渡して IDirectMusicPerformance::AddPort メソッドを呼び出すと、自動的に 1 つのチャンネル グループと共にデフォルト ポート (通常は Microsoft Software Synthesizer) が追加され、そのグループの MIDI チャンネルに P チャンネル 0-15 が割り当てられる。

if (FAILED(pPerf->AddPort(NULL)))
{
// 失敗。ポートは初期化されていない。
}

次項 : ステップ 3 : ローダーの作成