Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。
IDirectMusicTrack::SetParam または IDirectMusicTrack::GetParam を使ってパラメータを設定または取得するときに、パラメータはメソッドを呼び出したトラックに関連付けられる。ただし、IDirectMusicPerformance::SetParam、IDirectMusicPerformance::GetParam、IDirectMusicSegment::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 内の値である。