Microsoft DirectX 8.0 (C++)

トラックの識別

IDirectMusicTrack8::SetParamEx または IDirectMusicTrack8::GetParamEx を使ってパラメータを設定または取得するときに、パラメータはメソッドを呼び出したトラックに関連付けられる。ただし、IDirectMusicPerformance8::SetParamIDirectMusicPerformance8::GetParamIDirectMusicSegment8::SetParam、または IDirectMusicSegment8::GetParam を呼び出すときに、DirectMusic は適切なトラックを検索する必要がある。

通常は、目的のパラメータがどのトラックに含まれるかを、DirectMusic に決定させることができる。この場合、dwGroupBits を 0xFFFFFFFF に、dwIndex を DMUS_SEG_ANYTRACK に設定する。たとえば、次の IDirectMusicSegment8::SetParam の呼び出しでは、セグメントのループでテンポがリセットされないように、テンポ トラックをオフにしている。

pIDMSegment->SetParam(GUID_DisableTempo, 0xFFFFFFFF, 
    DMUS_SEG_ALLTRACKS, 0, NULL);

ただし、トラックを識別しなければならない場合もある。一般的には、セグメントに同じタイプのトラックが 2 つ以上含まれている場合である。目的のトラックでパラメータを設定または取得するには、グループまたはインデックス値を使って、トラックを識別しなければならない。

すべてのトラックは 1 つまたは複数のグループに属し、それぞれのグループは dwGroupBits パラメータのビットで表される。dwGroupBits は、後で説明するメソッドの 1 つのパラメータである。トラックは、パフォーマンスに挿入されるときに、1 つまたは複数のグループに割り当てられる。「IDirectMusicSegment8::InsertTrack」を参照すること。ファイルからロードされるセグメントの場合、トラック グループはセグメントのオーサーによって割り当てられる。

トラックは、属しているグループそれぞれにおいて、ゼロから始まるインデックス値で識別される。インデックス値は、トラックが挿入された順序で決定される。

あるセグメントに、次の表に示すトラックが格納されていると仮定する。

トラック グループ ビット
A 0x1
B 0x2
C 0x1
D 0x3

グループ 1 はトラック A、トラック C、およびトラック D を含み、グループ 2 はトラック B とトラック D を含む。dwGroupBits を 1、dwIndex を 0 にして設定メソッドまたは取得メソッドを呼び出すと、パラメータは、グループ 1 の最初のトラックであるトラック A から取得される。dwIndex が 1 の場合は、グループで 2 番目のトラック C からパラメータが取得される。トラック D は、グループ 1 とグループ 2 の、2 つのグループに属している。したがって、このトラックは、dwGroupBits = 1 および dwIndex =2、または dwGroupBits = 2 および dwIndex = 1 の組み合わせのどちらかで識別される。

dwGroupBits に複数のビットを設定すると、それらのすべてのビットを含む n 番目のトラックからパラメータが取得される。ここで n dwIndex 内の値である。