DirectMusicツールの登録

前回DirectMusicツールを作ったので、それを登録して演奏時にツールを通すようにします。

登録

こんなふうに。
ツールを登録するため余分にIDirectMusicPerformance::AddRefしてます。
2つのツールを登録する場合はIDirectMusicGraph::InsertToolを連続で使います。

pModulator = new CBWBGMModulatorTool();
IDirectMusicGraph* pGraph;
pPerf->AddRef();
if (SUCCEEDED(CoCreateInstance(CLSID_DirectMusicGraph,NULL,
        CLSCTX_INPROC, IID_IDirectMusicGraph,(void**)&pGraph))) {
    pGraph->InsertTool( (IDirectMusicTool*)pModulator, NULL, 0, 0);
    pPerf->SetGraph(pGraph);
    pGraph->Release();
}

解除

つまり登録の逆。
まあ、アプリケーション終了時に一緒に消え去りそうなものですが。

IDirectMusicGraph* pGraph;
if (SUCCEEDED(pPerf->GetGraph((IDirectMusicGraph**)&pGraph))) {
    pGraph->RemoveTool(m_pModulator);
    pGraph->Release();
}
pPerf->Release();
delete pModulator;