次の方法で共有


DMus ミニポート ドライバー

DMus ミニポート ドライバーは、高度な MIDI デバイスのハードウェアに依存する機能を管理します。 これらのデバイスは、精度シーケンサーのタイミング、ダウンロード可能なサウンド (DLS)、チャンネル グループなどの DirectMusic 機能をサポートします。 DMus ミニポート ドライバーは、MPU-401 などのデバイスでハイ パフォーマンスを実現できます。 タイミングは、ハードウェアの機能に応じて、ミニポート ドライバーまたはポート ドライバーによって処理することができます。 DMus ミニポート ドライバーは、Wave 出力ストリームを生成するソフトウェア シンセサイザーをサポートすることもできます。

MIDI ハードウェア デバイスの DMus ミニポート ドライバーは、次の 2 つのインターフェイスをサポートする必要があります。

  • ミニポート インターフェイスは、ミニポート オブジェクトを初期化し、MIDI ストリームを作成します。

  • ストリーム インターフェイス は MIDI ストリームを管理し、ミニポート ドライバーの機能のほとんどを公開します。

ミニポート インターフェイス IMiniportDMus は、IMiniport インターフェイスのメソッドを継承します。 IMiniportDMus には、次の追加メソッドが用意されています。

IMiniportDMus::Init

ミニポート オブジェクトを初期化します。

IMiniportDMus::NewStream

新しいストリーム オブジェクトを作成します。

IMiniportDMus::Service

ミニポート ドライバーにサービスの要求を通知します。

ストリーム インターフェイス IMXF は、IUnknown インターフェイスのメソッドを継承します。 IMXF では次の追加のメソッドを提供しています。

IMXF::ConnectOutput

データ ソースであるこのストリーム オブジェクトを、データ シンクである別の ストリーム オブジェクトの IMXF インターフェイスに接続します。

IMXF::DisconnectOutput

このストリーム オブジェクトを、データ シンクである別のストリーム オブジェクトの IMXF インターフェイスから切断します。

IMXF::PutMessage

DMUS_KERNEL_EVENT 構造体をデータ シンクに渡します。

IMXF::SetState

ストリームの状態を設定します。

さらに、DMus ミニポート ドライバーの ISynthSinkDMus インターフェイスは、ソフトウェア シンセサイザーの DLS 機能を提供します。 ISynthSinkDMus は、基本インターフェイス IMXF のメソッドを継承します。 ISynthSinkDMus には、次の追加メソッドが用意されています。

ISynthSinkDMus::RefTimeToSample

参照時刻をサンプル時刻に変換します。

ISynthSinkDMus::Render

ウェーブ シンクのバッファーに Wave データをレンダリングします。

ISynthSinkDMus::SampleToRefTime

サンプル時刻を参照時刻に変換します。

ISynthSinkDMus::SyncToMaster

サンプル クロックをマスター クロックに同期します。

ポート ドライバーのウェーブ シンクは ISynthSinkDMus::Render を呼び出して、シンセサイザーが MIDI 入力ストリームから生成する Wave PCM データを読み取ります。 ウェーブ シンクの詳細については、「カーネル モード ソフトウェア シンセサイザーのウェーブ シンク」を参照してください。

ミニポート ドライバーは、DMus ポート ドライバーで次のインターフェイスを呼び出します。

IPortDMus

IAllocatorMXF

IMasterClock

PortCls には、UART 関数を持つ MIDI デバイス用の組み込みの DMus ミニポート ドライバーが含まれています。 詳細については、「PcNewMiniport」を参照してください。