DMus ミニポート ドライバー
DMus ミニポート ドライバーは、高度な MIDI デバイスのハードウェアに依存する機能を管理します。 これらのデバイスは、精度シーケンサーのタイミング、ダウンロード可能なサウンド (DLS)、チャンネル グループなどの DirectMusic 機能をサポートします。 DMus ミニポート ドライバーは、MPU-401 などのデバイスでハイ パフォーマンスを実現できます。 タイミングは、ハードウェアの機能に応じて、ミニポート ドライバーまたはポート ドライバーによって処理することができます。 DMus ミニポート ドライバーは、Wave 出力ストリームを生成するソフトウェア シンセサイザーをサポートすることもできます。
MIDI ハードウェア デバイスの DMus ミニポート ドライバーは、次の 2 つのインターフェイスをサポートする必要があります。
ミニポート インターフェイスは、ミニポート オブジェクトを初期化し、MIDI ストリームを作成します。
ストリーム インターフェイス は MIDI ストリームを管理し、ミニポート ドライバーの機能のほとんどを公開します。
ミニポート インターフェイス IMiniportDMus は、IMiniport インターフェイスのメソッドを継承します。 IMiniportDMus には、次の追加メソッドが用意されています。
ミニポート オブジェクトを初期化します。
新しいストリーム オブジェクトを作成します。
ミニポート ドライバーにサービスの要求を通知します。
ストリーム インターフェイス IMXF は、IUnknown インターフェイスのメソッドを継承します。 IMXF では次の追加のメソッドを提供しています。
データ ソースであるこのストリーム オブジェクトを、データ シンクである別の ストリーム オブジェクトの IMXF インターフェイスに接続します。
このストリーム オブジェクトを、データ シンクである別のストリーム オブジェクトの IMXF インターフェイスから切断します。
DMUS_KERNEL_EVENT 構造体をデータ シンクに渡します。
ストリームの状態を設定します。
さらに、DMus ミニポート ドライバーの ISynthSinkDMus インターフェイスは、ソフトウェア シンセサイザーの DLS 機能を提供します。 ISynthSinkDMus は、基本インターフェイス IMXF のメソッドを継承します。 ISynthSinkDMus には、次の追加メソッドが用意されています。
ISynthSinkDMus::RefTimeToSample
参照時刻をサンプル時刻に変換します。
ウェーブ シンクのバッファーに Wave データをレンダリングします。
ISynthSinkDMus::SampleToRefTime
サンプル時刻を参照時刻に変換します。
サンプル クロックをマスター クロックに同期します。
ポート ドライバーのウェーブ シンクは ISynthSinkDMus::Render を呼び出して、シンセサイザーが MIDI 入力ストリームから生成する Wave PCM データを読み取ります。 ウェーブ シンクの詳細については、「カーネル モード ソフトウェア シンセサイザーのウェーブ シンク」を参照してください。
ミニポート ドライバーは、DMus ポート ドライバーで次のインターフェイスを呼び出します。
PortCls には、UART 関数を持つ MIDI デバイス用の組み込みの DMus ミニポート ドライバーが含まれています。 詳細については、「PcNewMiniport」を参照してください。