Platform SDK: DirectX

DirectMusic のデータの流れの概要

一般的に、DirectMusic アプリケーションは、次に示すような 1 つまたは複数のソースからミュージック データを取得する。

 :  これらのデータ ソースは、リソースとしてアプリケーションに格納することができる。

これらのソースからのデータは、DirectMusicSegment オブジェクトにカプセル化される。各セグメント オブジェクトは、1 つのソースからのデータを表す。パフォーマンスではいつでも、1 つ以上のセグメント、つまり 1 つの "プライマリ セグメント" と 1 つまたは複数の "セカンダリ セグメント" を演奏することができる。ソース ファイルは混在させることができる。たとえば、MIDI ファイルに基づくセカンダリ セグメントを、オーサリングされたセグメント ファイルと一緒に演奏することができる。

1 つのセグメントには複数のトラックが含まれ、それぞれが音符やテンポの変更など、特定の種類のタイム データを含んでいる。

ほとんどのトラックは、パフォーマンスでセグメントが演奏されるときにメッセージを生成する。パフォーマンスは、アプリケーション定義ツールにメッセージを送り、ツールはメッセージを変更して渡したり、メッセージの削除や、新規メッセージの送信を行うことができる。ツールは、セグメント グラフとパフォーマンス グラフにグループ化される。セグメント グラフでは、自身のセグメントからのメッセージのみが処理される。パフォーマンス グラフでは、すべてのセグメントからのメッセージが受け付けられる。

[Visual Basic]

アプリケーション定義ツールは、DirectX for Visual Basic ではサポートされていない。

最終的に、メッセージは出力ツールに到達する。出力ツールで、データはポートに渡される前に MIDI フォーマットに変換される。チャンネル固有の MIDI メッセージは、ポートの適切なチャンネル グループに転送される。ポートはサウンド ウェーブを合成し、ウェーブ出力デバイス (通常は DirectSound バッファ) のストリームに入れる。

次の図は、ファイルから取り出されたミュージック データが、ウェーブ出力デバイスに送られるようすを示している。単純にするために、1 つのセグメントだけを示している。このセグメントは、3 つのソースのいずれかのみからデータを取り出している。使用できるソースは、MIDI ファイル、オーサリングされたセグメント ファイル、または DirectMusicComposer オブジェクトによって結合されたコンポーネント ファイルのいずれかである。

パフォーマンスにおけるメッセージの流れを詳細に確認するには、「DirectMusic メッセージ」を参照すること。

図に示されている処理を実装する方法については、「DirectMusic の要点」の「DirectMusic ローダー」および「音楽の演奏」を参照すること。

セグメントおよびコンポーネント ファイルの詳細については、「音楽のアレンジ」を参照すること。

[C++,Visual Basic]