XACT 時間変数
Microsoft Cross-Platform Audio Creation Tool (XACT) エンジンは、ランタイム パラメーター制御でのみ使用し、Wave の再生のアタック エンベロープおよびリリース エンベロープの動作を指定できる一連の暗黙的な変数を提供します。
変数名 | 型 | 説明 |
---|---|---|
AttackTime | キュー インスタンス | 再生が開始されてから経過した時間をカウントします。このカウンターは 0 からカウントを始め、キューが停止するまでインクリメントし続けます。 |
ReleaseTime | キュー インスタンス | 再生を停止する非即時要求からの経過時間をカウントします。停止要求は、プログラマーの制御または Stop イベントによって発生します。このカウンターは 0 からカウントを始め、キューが再度トリガーされるまでインクリメントし続けます。 |
これらの "時間" 変数は、キューの各インスタンスに暗黙的です。他の暗黙的な変数 (NumCueInstances や Distance など) と異なり、これらの変数は、プロジェクト ツリーに表示されません。これらの変数は、[ランタイム パラメーター制御](Runtime Parameter Control) ダイアログ ボックスの [変数](Variable) 列からのみアクセスできます。これらの変数を設定またはクエリすることはできません。また、XACT API でアクセスすることもできません。
エンベロープの実装
Wave を再生するときのデフォルトの動作では、一定のボリュームおよびピッチ レベルで再生し、停止を要求されると直ちに再生を停止します。
暗黙的な時間関連変数 AttackTime および ReleaseTime を使用することで、ボリュームおよびピッチのレベルにエンベロープを定義し、デフォルトの動作をオーバーライドできます。エンベロープによって制御されるレベルは、トラック内の設定に加算されるものです。ボリュームに対しては -96.00 dB ~ +6.00 dB、ピッチに対しては -12 ~ 12 半音です。
たとえば、オーディオ デザイナーは、図 1 に示すように、アタック エンベロープおよびリリース エンベロープを定義するランタイム パラメーター制御 (RPC) を作成できます。
図形 1. RPC 設定の例
AttackTime 変数を使用したカーブにおいて、左端のポイントは再生の開始と、その設定の初期レベルを示します。これはそのレベルのトラックの設定に対する相対レベルであることに注意してください。つまり、ボリューム レベル 0 はトラックのボリューム レベルと同じであることを意味し、-96dB は無音に等しくなります。
AttackTime 変数を使用したカーブの右端のポイントは、持続エンベロープを定義します。これは、再生の残り時間を通じて設定が保持される相対レベルです。
ReleaseTime 変数を使用したカーブにおいて、左端のポイントは再生を停止する初期要求 (プログラムまたは Stop イベントによる) と、持続エンベロープのレベルに加算される初期量を示しています。したがって、スムーズな遷移のためには常にゼロから開始する必要があります。
ReleaseTime 変数を使用したカーブの右端のポイントは、再生が完全に停止されるポイントを表しています。プログラムまたは Stop イベントで IMMEDIATE フラグが使用された場合は、ReleaseTime カーブが無効であることに注意してください。
コンテンツ作成者は、1 つの RPC 内、または同じサウンドに割り当てられた複数の RPC 内に、同じ時間変数およびレベルのカーブを複数作成することが可能です。ただし、これは Wave を停止する動作があいまいになるため、望ましくありません。ボリュームのリリース エンベロープに対して競合が発生した場合は、最も短いエンベロープが優先されますが、他の定義もすべて適用されます。これは、予期しない結果につながる場合があるため、1 つのサウンドには、レベルごとに 1 つのエンベロープだけを適用することをお勧めします。