Platform SDK: DirectX

メッセージの作成と配信

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

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

アプリケーションは、メッセージを直接キューに入れることもできる。たとえば、テンポを変更する場合に、この操作を行うことができる。

[C++]

サンプル コードについては、IDirectMusicPerformance::SendPMsg を参照すること。

[Visual Basic]

サンプル コードについては、「DLSEffects サンプル」を参照すること。

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

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

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

テンポ メッセージは、ミュージック タイムを基準タイムに変換する方法をパフォーマンスに伝える。拍子記号はセグメントに内蔵されていて変更できないため、拍子記号メッセージは情報を伝えるに過ぎない。

[C++]

メッセージは最初に、セグメントのグラフ内のツールに送信され、次いでパフォーマンスのグラフ内のツールに送信される (アプリケーションは、これらのグラフのいずれかまたは両方を作成し、ツールを定義する。デフォルトのグラフはない)。

グラフ内の最初のツールはメッセージを処理し、そのメッセージをほかのツールに渡したい場合は、次のツールへのポインタと共にそのメッセージをグラフにスタンプ処理させる。詳細については、「チュートリアル 2 : ツールの使い方 を参照すること。

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

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

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