Microsoft DirectX 8.0 (C++)

DirectX Audio の新機能

DirectX のオーディオ コンポーネントは大幅に改訂されている。さまざまなサウンドを再生するために、DirectMusic と DirectSound の API の統一が進められ、多くの新機能が追加された。

次の一覧は、主な新機能を示している。

1 つの再生メカニズムでウェーブベースとメッセージベースのサウンドを統合
ウェーブ ファイルおよびリソースを DirectMusic ローダーでロードし、DirectMusic パフォーマンスによって再生できる。アプリケーションで、ウェーブ サウンドを解析およびコピーしたり、DirectSound バッファにストリーミングする必要がなくなった。ウェーブ再生のタイミングは DirectMusic マスタ クロックに基づいており、ウェーブを音楽イベントに同期させたり、ほかのセグメントと同様にツールで処理することができる。

DirectSound API も引き続きサポートされており、DirectSound バッファを使って直接ウェーブを再生することもできる。DirectSound は、ウェーブ キャプチャおよび全二重の API である。

柔軟性を増して強化されたオーディオパス モデル
以前のバージョンの DirectMusic では、パフォーマンス チャンネルはポートにマップされ、各ポートがその出力を単一の DirectSound バッファに送信していた。新しいモデルでは、セグメントのチャンネルは、パフォーマンスから最終的な出力へのデータ フローを制御するオーディオパスにマップされる。シンセサイザからの出力を、3D ポジショニングおよびエフェクトが個別に設定されている複数の再生バッファに送信できる。オーディオパスは、アプリケーションによって動的に作成したり、セグメントにオーサリングすることができる。
ここのセグメント状態の制御
セグメントの各再生インスタンスはそれぞれオーディオパスを持つことができ、ボリューム、パン、ピッチ ベンドなどのパラメータを、各セグメント状態について個々に変更できる。
DLS2 に基づく合成
DirectMusic シンセサイザは Downloadable Sounds (DLS) Level 2 規格に基づき、高品質なサウンド合成を可能にしている。DLS2 シンセサイザの新機能には、6 段階のエンベロープ、ボイスのレイヤリング、ウェーブフォームの解放、および追加の低周波数発振器 (LFO) などがある。各ボイスには、オプションのローパス共振フィルタがある。
特殊効果
DirectX Media Object をサウンド バッファにアタッチして、エフェクトを追加することができる。ミュージック リバーブ、I3DL2 (Interactive 3-D Audio Level 2) 環境リバーブ、ディストーション、エコーなどの DirectX Audio に用意されている標準的なエフェクトのほかに、サードパーティのエフェクトを追加できる。
キューの詳細な制御
作曲者がセグメント内にセグメントの再生を開始するポイントを設定し、セグメントが拍子記号との関係を維持できるようにすることができる。プライマリ セグメントには、ほかのセグメントにキューを与える任意のポイントを含めることができ、最も近い小節、拍、またはグリッドにキューを与える場合に比べて細かい制御が可能である。新しいセグメント キュー フラグ DMUS_SEGF_SEGMENTEND によって、現在のプライマリ セグメントの再生が終了したときに、セグメントを再生することができる。
演奏がもうすぐ終了することを知らせる通知
パフォーマンス通知イベントに新しい通知タイプ DMUS_NOTIFICATION_MUSICALMOSTEND が追加された。これは、キュー内の最後のプライマリ セグメントの終わりが近いことを示す。この通知によって、アプリケーションは新しいセグメントをスケジュールすることができる。
MIDI コントローラ サポートの強化
カーブメッセージが、RPN/NRPN コントローラの変更をサポートするようになった。
セグメントの無限回の繰り返し
新しい DMUS_SEG_REPEAT_INFINITE フラグによって、セグメントを無限に再生できる。
バンドのダウンロードおよびアンロードの簡易化
簡単なメソッド呼び出しで、バンドをセグメント オブジェクトにダウンロードしたり、セグメント オブジェクトからアンロードすることができる。
トラック データの動的生成
新しいトラック構成および再生フラグによって、セグメントを再生またはループするたびに、トラックを再生成することができる。たとえば、セグメントを再生するたびに新しいコード進行が設定されるようにコードマップ トラックを構成できる。
オーディオ スクリプティング
作曲者やサウンドの作成者は、スクリプトを使用することによって、演奏を細かく制御することができる。アプリケーションは再生の詳細を処理する代わりに、スクリプトを呼び出す。たとえば、ゲーム イベントがスクリプト関数のトリガとなる。スクリプトの作成者は、この関数を変更することによって、ゲームに対するサウンドトラックの応答を容易に変更できる。
トラックの実行時制御機能の向上
アプリケーションで、再生およびパラメータの制御を無効にするように、個々のトラック構成を設定できる。トラックは、ミュージック タイムではなく、クロック タイムで演奏されるように構成できる。自己制御セグメント内のトラックは、制御またはプライマリ セグメント内のパラメータ トラックをオーバーライドするように構成できる。
コンテナ オブジェクト
DirectMusic Producer プロジェクトのすべてのコンポーネントを単一のファイルに保存でき、すべてのオブジェクトを容易に検索およびロードすることができる。コンテナをセグメントに埋め込んで、セグメントの再生に必要なものをすべてセグメント内に保存することもできる。
歌詞トラック
歌詞トラックを含むセグメントによって、タイムスタンプが指定されたテキストがパフォーマンスに送信される。
キャッシュ管理機能の向上
アプリケーションで、ほかのオブジェクトによってロードされた使用されていないオブジェクトを容易に解放できるようになった。