Microsoft DirectX 8.0 (C++) |
制御セグメントは、トラック間で共有されるデータのソースである。次のトラックは、ほかのトラックとは異なり、メッセージを送信するのではなく、パラメータの呼び出しに応答することによって、パフォーマンスにデータを渡す。
たとえば、コード トラックはスタイル トラックからのパラメータの呼び出しに応答する。ノートを送信する前にそのノートの MIDI 値を決定するには、スタイル トラックで現在のコードを決定しなければならない。スタイル トラックは IDirectMusicPerformance8::GetParam を呼び出すことによってこの処理を行い、この呼び出しは制御セグメントのコード トラックに引き継がれる。
制御セグメントとして機能するには、セグメントに 1 つ以上の制御トラックが必要である。ミュート、コマンド、テンポ、およびコードのトラックが制御トラックである。
制御セグメントは、メッセージによって制御される再生には影響しない。制御セグメントの拍子記号が使用されるのは、拍子記号トラックがない場合だけである。これは、通常、セグメントが MIDI ファイルに基づいていない場合である。
デフォルトでは、プライマリ セグメントは制御セグメントである。ただし、DMUS_SEGF_CONTROL フラグを IDirectMusicPerformance8::PlaySegment または IDirectMusicPerformance8::PlaySegmentEx に渡すことによって、セカンダリ セグメントを制御セグメントとして指定できる。
セカンダリ セグメントが制御セグメントである場合も、プライマリ セグメントは制御データの代替ソースとして機能し続ける。たとえば、セカンダリ制御セグメントにテンポ トラックが含まれていない場合に、プライマリ セグメントに含まれている場合は、プライマリ セグメントのテンポが使用される。
詳細については、次のトピックを参照すること。