Platform SDK: DirectX

カスタム音色による MIDI ファイルの演奏

MIDI ファイルを演奏する場合、デフォルトでは、Gm.dls ファイルに含まれる Roland GM/GS Sound Set の音色が使用される。ただし、ほかのコレクションの音色を使って MIDI ファイルを演奏することもできる。

[C++]

ほかのコレクションの音色を使って MIDI ファイルを演奏するには、最初に、「コレクションのロード」で説明した方法でコレクションをロードし、IDirectMusicCollection インターフェイスへのポインタを取得する。続いて、MIDI セグメントに対して IDirectMusicSegment::SetParam を呼び出し、セグメントとコレクションの接続を確立する。

次のコード例は、接続の作成方法を示している。

/* pSegment は MIDI ファイルから作成され、
pLoadedCollection は有効な IDirectMusicCollection 
ポインタであるとする。*/
 
HRESULT hr = pSegment->SetParam(GUID_ConnectToDLSCollection,
0xFFFFFFFF, 0, 0,
(void*)pLoadedCollection);

ほかのコレクションの場合と同様に、自動ダウンロードが有効でない場合は、MIDI ファイルの演奏に使用する音色を、セグメントを演奏する前にダウンロードしなければならない (自動ダウンロードの詳細については、「グローバル パラメータの設定と取り出し」および「バンドのダウンロードとアンロード」を参照すること)。音色が自動的にダウンロードされない場合は、次のコード例に示すように、IDirectMusicSegment::SetParam を呼び出して音色をダウンロードしなければならない。

/* pSegment は IDirectMusicSegment ポインタであり、pPerformance は
IDirectMusicPerformance への有効なポインタである。*/
 
pSegment->SetParam(GUID_Download, 0xFFFFFFFF, 0, 0, (void *) pPerformance);

SetParam を使ったダウンロードの詳細については、「トラック パラメータの設定と取り出し」を参照すること。

[Visual Basic]

ほかのコレクションの音色を使って MIDI ファイルを演奏するには、MIDI ファイルに基づいて、コレクションをロードし、セグメントに関連付ける。次に、ほかのセグメントの場合と同様に、コレクションをダウンロードする。詳細については、「コレクションのロード」を参照すること。

 :  MIDI セグメントにカスタム コレクションを付加するときに、GM コレクションへの接続は破壊されない。たとえば、パッチ番号が 12 の 1 つの音色を含むコレクションをロードし、これをセグメントに接続する場合、12 以外のパッチ番号を持つ MIDI チャンネルでは、GM コレクションの適切な音色を使って演奏が続けられる。