次の方法で共有


MIDI トランスポート

DMus ポート ドライバーは、DMus ミニポート ドライバーのシンセサイザー作業の前面と背面に関係します。 ポート ドライバは、タイムスタンプ付きの MIDI データで構成される MIDI ストリームを入力し、ストリームをシーケンサーにルーティングします。 シーケンサーはタイム スタンプを削除し、タイム スタンプの期限が切れたときに生の MIDI メッセージをミニポート ドライバーに渡します。 (DLS データは、プリプロセスなしでミニポート ドライバーにポート ドライバーを介して右に渡されます。)

DMus ミニポート ドライバーの MIDI 入力ストリームがウェーブ データに変換されると、その出力はウェーブ シンク ("シンセ シンク" または "レンダー シンク" とも呼ばれます) によって管理されます。

DMus ポート ドライバーは、DirectMusic ユーザー モード コンポーネントからの DirectMusic データを受け入れる入力ピンを持つカーネル ストリーミング フィルターを実装dmusic.dll。 また、ポート ドライバーには、合成されたオーディオ ストリームを出力するウェーブ出力ピンもあります。 ウェーブシンクはこのピンを管理し、メモリ内のどこにデータを書き込むかをシンセに指示します。 この配置は、カーネルストリーミングの詳細からシンセを絶縁します。 DMus ミニポート ドライバーは、入力 MIDI ストリームからウェーブ データを合成する詳細のみを処理する必要があります。 ポート ドライバーはウェーブ データをシステムに送信し、SysAudio のフィルター グラフはフィルターを接続してすべてが正しくフローするようにします。 次の図に示すように、MIDI データは DMus ポート ドライバーに入り、シーケンス処理後に DMus ミニポート ドライバーに渡されます。

Diagram illustrating the flow of MIDI and DLS data through the PortDMus driver.

ミニポート ドライバーは、MIDI データをウェーブ形式に変換します。これは、ポート ドライバーの別の部分 (ウェーブ シンク) によって指定されたバッファーにレンダリングされます。 次に、ユーザー モードと同様に DirectSound に出力される代わりに、ウェーブ出力は KMixer システム ドライバー を介してオーディオ ハードウェアに 送られます。 DirectSound は実際には KMixer を公開する単なる API であり、DirectSound アクセラレーションは、KMixer によってソフトウェアでエミュレートされるのではなく、ハードウェアで高速化されるミキサー関数で構成されています。

オーディオ フィルター グラフを構築する SysAudio システム ドライバーは、DMus ポート ドライバーをハードウェアの一部に接続します。 ポート ドライバーのウェーブ シンク部分は、SysAudio がハードウェア デバイスに接続できるウェーブアウト ピンを介してデータを送信します。 これは、DMus ミニポート ドライバー (ハードウェアまたはソフトウェア シンセかどうかに関係なく) からウェーブ データをプルし、すべてのタイミングの問題を処理します。 ユーザー モードと比較すると、ミニポート ドライバーはシンセに似ていますが、ウェーブ シンクはポート ドライバーの一部にすぎません。

DMus ミニポート ドライバーは、ホストに出力を提供できる場合は、SysAudio が認識し、KMixer に接続するKSPIN_DATAFLOW_OUT (KSPIN) を参照) のデータ方向を持つウェーブ ピンを公開します。

ウェーブ シンクの詳細については、カーネル モード ソフトウェア シンセサイザーのウェーブ シンク を参照してください。

このセクションには以下も含まれる:

IMXF インターフェイス

Allocator