Platform SDK: DirectX

トラックの識別

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。

[C++]

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

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

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

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

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

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

1 つのセグメントが、次のトラックによって構成されていると仮定する。

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

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

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