Microsoft DirectX 8.0 (C++) |
セグメントが演奏されている場合、ほとんどのトラックは、再生中に発生するイベントに関する情報を含むメッセージを生成する。詳細については、「DirectMusic トラック」を参照すること。
数種類のメッセージを送信するトラックもある。たとえば、スタイル トラックはノート メッセージと拍子記号メッセージを送信する。これらの場合、アプリケーションはトラックの特定の種類のメッセージを無効にすることができる。詳細については、「トラック パラメータの無効化と有効化」を参照すること。
パフォーマンス エンジンは、各メッセージをクロック タイムでいつ処理するかを決定する。チャンネル メッセージの場合、パフォーマンスはメッセージを取得するパフォーマンス チャンネルも決定する。この情報は、メッセージ タイプ、ソース トラック、メッセージを受信する最初のツールグラフとツールへのポインタなどを保持するほかのデータと共に、メッセージ構造体に保存される。
テンポや拍子記号の変更などの特定のメッセージは、パフォーマンスによって直ちに処理され、解放される。ノートやパッチの変更など、その他のメッセージはキューに入れられ、タイム スタンプの順に処理される。
注 同じタイム スタンプのメッセージが特定の順序で処理されるという保証はない。
拍子記号メッセージは純粋な情報である。拍子記号はセグメントに組み込まれ、変更できない。
メッセージは、最初にセグメント ツールグラフ内のツール、次にオーディオパス ツールグラフ内のツール、最後にパフォーマンス ツールグラフ内のツールに送信される。
セグメント ツールグラフとパフォーマンス ツールグラフを作成し、ツールを定義するのはアプリケーションの役目である。ツールグラフの作成の詳細については、次のトピックを参照すること。
オーディオパス ツールグラフは、DirectMusic Producer ファイルに含まれるオーディオパス構成のオプション コンポーネントである。アプリケーションでは、オーディオパスの作成後、オーディオパス ツールグラフの実装にかかわる必要はない。
ツールグラフ内の最初のツールはメッセージを処理し、そのメッセージをほかのツールに渡したい場合は、次のツールへのポインタと共にそのメッセージをツールグラフにスタンプ処理させる。
この時点で、ツールグラフはメッセージに配信タイプのフラグを割り当てる。このフラグに基づいて、メッセージを次のツールに配信する時期が決まる。このフラグは、ツールで予期されている、次のような配信タイプに基づいている。
ツールグラフがメッセージのスタンプ処理とフラグ割り当てを行った後で、現在のツールは配信タイプを変更することができる。
最終的に、メッセージは破棄されない限り、DirectMusic の出力ツールに到達する。このツールは受け取ったすべてのメッセージをスタンダード MIDI メッセージに変換し、それらをポート バッファ経由でシンセサイザに配信する。
解説については、「オーディオ データの流れの概要」を参照すること。