DirectMusic ミニポート ドライバー インターフェイス
DMus ミニポート ドライバー インターフェイスは、MIDI ミニポート ドライバー インターフェイスに基づいていますが、高度なシンセサイザーをサポートするために次の拡張機能を追加します。
インスタンスあたり 16 チャンネルを超える DLS のダウンロード数
ハードウェアでのノート イベントのシーケンス処理
DMus ミニポート ドライバー インターフェイスは、いくつかの点で MIDI ミニポート ドライバー インターフェイスとは異なります。 DMus ミニポート ドライバーは、IMiniportMidi ではなく、IMiniportDMus インターフェイスを実装します。 このインターフェイスは IMiniportMidi に似ていますが、IMiniportDMus::NewStream メソッドが、IMiniportMidiStream インターフェイスを実装するのではなく、IMXF (MIDI 変換フィルター) インターフェイスを作成して、DMus ポート ドライバーの IAllocatorMXF インターフェイスに接続します。 IAllocatorMXF と IMXF が、標準の GetMessage 呼び出しと PutMessage 呼び出しをラップします (「IAllocatorMXF::GetMessage」と「IMXF::P utMessage」を参照)。 これらの呼び出しは、生の MIDI バイトではなく、パッケージ化されたイベントを処理します。
シンセサイザー用の DMus ミニポート ドライバーは、DirectMusic プロパティの一部またはすべてを実装することができます。 これらのプロパティを使用すると、システムでデバイスの DLS ダウンロードとチャンネル割り当てを管理することができます。 dmusprop.h ヘッダー ファイルは、DirectMusic 固有のプロパティ項目を定義します。 これらのプロパティの一覧については、「KSPROPSETID_Synth」および「KSPROPSETID_Synth_Dls」を参照してください。
DMus ミニポート ドライバーは、複数のピン インスタンスの作成を許可するように想定されています。 各ピン インスタンスは 1 つの仮想シンセサイザーとして機能し、他のピン インスタンスからは独立した一連のチャンネルと DLS ダウンロードを含んでいます。
オーディオ ドライバー プロパティ セットで説明されているシンセ プロパティの中には、ピン インスタンスに作用するものもあれば、グローバルなものもあります。 グローバル プロパティを処理するには、シンセサイザーのトポロジにシンセサイザー ノードが必要です。 各プロパティ項目の説明に、その項目がシンセサイザー ノードとピン インスタンスのどちらに送信されるかが示されます。 次の図に示すように、合成をサポートするハードウェアの各部分には、ポート ドライバー オブジェクトとミニポート ドライバー オブジェクトが存在します。
ポート ドライバー オブジェクトは、ミニポート ドライバー オブジェクトによって保持されている IPortDMus インターフェイスの 1 つのインスタンスを公開します。 ミニポート ドライバーは、ポート ドライバーによって保持されている IMiniportDMus インターフェイスの 1 つのインスタンスをエクスポートします。 インスタンス化されたピンごとに、ポート ドライバーは一致する IMXF インターフェイスを要求します。 システムとこのインスタンス間の通信は、ピンにアドレス指定されたプロパティ要求と、IMXF ストリーム インターフェイスとの間で送受信されるイベントの組み合わせです。
ミニポート ドライバーが作成されたときに、次の 2 つのオブジェクトをミニポート ドライバーに渡す必要があります。
Clock
アロケーター オブジェクト
クロックは、レンダーおよびキャプチャ操作に非常に重要です。 ミニポート ドライバーは、指定された時刻にノートをレンダリングする必要があります。ミニポート ドライバーは MIDI データの読み取り時に、カーネル イベントにタイム スタンプを設定できるように、時刻を把握していなければなりません 。 詳しくは、「待機時間クロック」を参照してください。
IAllocatorMXF インターフェイスを持つ アロケーター オブジェクトは、メモリを再利用するためのメモリ プールとして使用されます。 システム内のすべての MIDI メッセージは、この共通プールから割り当てられます。 アロケーター オブジェクトは、個々のメッセージを作成または破棄するために使用する必要があります。
このセクションには、次が含まれます。