再生中の音楽の変化
DirectMusic が (単純な MIDI ファイルや、MIDI ファイルに基づいてオーサリングされたセグメント以外の) セグメントを演奏するときに、演奏が同じに聞こえないように、基本的な和音とリズムに変更が加えられる。変更の一部はスクリプト化され、一部はランダムに行われる。
- パターンの選択。一般的に、1 つのスタイルには複数のパターンが含まれる。これらのパターンは、コマンド トラックからのコマンドに応じて選択される。たとえば、コマンド トラックがブレーク装飾の演奏を要求すると、スタイル再生エンジンは現在のグルーブ レベルに矛盾しないブレーク パターンを選択する (オーサーは、各パターンにふさわしいグルーブ レベルを指定する)。適切なパターンがいくつかある場合は、いずれかがランダムに選択される。
- パターン内のバリエーション。パターン内のパートには、複数のバリエーションを設定することができる。バリエーションは、オーサーが指定した順序で演奏することができる。それ以外の場合は、パターンの各繰り返しにおいて、スタイル再生エンジンがバリエーションをランダムに選択する。
- グルーブ レベル。セグメントの現在のグルーブ レベルにより、スタイル内のどのパターンを再生用に選択できるかが決まる。現在のレベルを設定するのはコマンド トラックであるが、コマンド トラックは通常、セグメントかテンプレートの一部としてオーサリングされる。セグメントの現在のグルーブ レベルは、プログラム的に変更することができる。パフォーマンスのマスタ グルーブ レベルを設定することで、変更をすべてのセグメントに適用することができる。
- 転調。セグメントを演奏するときに、根底にあるコードはコード トラックの進行に従って変化する。現在のパターンの音符は、新しいコードと調和するよう、自動的に転調される。
- タイミングのバリエーション。再生エンジンは、個々の音符のパラメータ、つまり音符の開始時期と終了時期に、ランダムな変更を加えることができる。
- バンド。セグメントの演奏中に、音色と音色の設定 (ボリューム、パン、および転調) の選択を、オーサリングされたセグメント内のバンド トラックで変更したり、アプリケーションで動的に変更することができる。アプリケーションは、バンド オブジェクトに基づいてセカンダリ セグメントを作成し、作成したセグメントを演奏することで、バンドを変更することができる。
アプリケーションはほとんどの場合、既存のセグメントを操作するのではなく、別のセグメントを演奏して音楽全体を制御する。たとえば、ゲームのインテンシティの変化を音楽に反映させるには、インテンシティ レベルに応じてオーサリングされた新しいセグメントに移行するだけでよい。オーサーにグルーブ範囲の異なるパターンを作成させ、ゲーム イベントに応じてグルーブ レベルを変更すると、1 つのスタイル ベースのセグメントでも同様のエフェクトを得ることができる。
実行時に音楽を変更する方法については、「ミュージック パラメータ」を参照すること。