Microsoft DirectX 8.0 (C++)

メッセージの作成と配信

セグメントが演奏されている場合、ほとんどのトラックは、再生中に発生するイベントに関する情報を含むメッセージを生成する。詳細については、「DirectMusic トラック」を参照すること。

数種類のメッセージを送信するトラックもある。たとえば、スタイル トラックはノート メッセージと拍子記号メッセージを送信する。これらの場合、アプリケーションはトラックの特定の種類のメッセージを無効にすることができる。詳細については、「トラック パラメータの無効化と有効化」を参照すること。

パフォーマンス エンジンは、各メッセージをクロック タイムでいつ処理するかを決定する。チャンネル メッセージの場合、パフォーマンスはメッセージを取得するパフォーマンス チャンネルも決定する。この情報は、メッセージ タイプ、ソース トラック、メッセージを受信する最初のツールグラフとツールへのポインタなどを保持するほかのデータと共に、メッセージ構造体に保存される。

テンポや拍子記号の変更などの特定のメッセージは、パフォーマンスによって直ちに処理され、解放される。ノートやパッチの変更など、その他のメッセージはキューに入れられ、タイム スタンプの順に処理される。

  同じタイム スタンプのメッセージが特定の順序で処理されるという保証はない。

拍子記号メッセージは純粋な情報である。拍子記号はセグメントに組み込まれ、変更できない。

メッセージは、最初にセグメント ツールグラフ内のツール、次にオーディオパス ツールグラフ内のツール、最後にパフォーマンス ツールグラフ内のツールに送信される。

セグメント ツールグラフとパフォーマンス ツールグラフを作成し、ツールを定義するのはアプリケーションの役目である。ツールグラフの作成の詳細については、次のトピックを参照すること。

オーディオパス ツールグラフは、DirectMusic Producer ファイルに含まれるオーディオパス構成のオプション コンポーネントである。アプリケーションでは、オーディオパスの作成後、オーディオパス ツールグラフの実装にかかわる必要はない。

ツールグラフ内の最初のツールはメッセージを処理し、そのメッセージをほかのツールに渡したい場合は、次のツールへのポインタと共にそのメッセージをツールグラフにスタンプ処理させる。

この時点で、ツールグラフはメッセージに配信タイプのフラグを割り当てる。このフラグに基づいて、メッセージを次のツールに配信する時期が決まる。このフラグは、ツールで予期されている、次のような配信タイプに基づいている。

ツールグラフがメッセージのスタンプ処理とフラグ割り当てを行った後で、現在のツールは配信タイプを変更することができる。

最終的に、メッセージは破棄されない限り、DirectMusic の出力ツールに到達する。このツールは受け取ったすべてのメッセージをスタンダード MIDI メッセージに変換し、それらをポート バッファ経由でシンセサイザに配信する。

解説については、「オーディオ データの流れの概要」を参照すること。