MIDI 傳輸
DMus 埠驅動程式涉及 DMus 迷你埠驅動程式的前端和後端工作。 埠驅動程式會輸入 MIDI 資料流程,其中包含時間戳記的 MIDI 資料,並將資料流程路由傳送至排序器。 排序器會移除時間戳記,並在其時間戳記到期時,將原始 MIDI 訊息傳遞至迷你埠驅動程式。 (DLS 資料會透過埠驅動程式直接傳遞至迷你埠驅動程式,而不需要前置處理。)
當 DMus 迷你埠驅動程式的 MIDI 輸入資料流程轉換成波浪資料時,其輸出會由波接收管理, (也稱為「合成接收器」或「轉譯接收」) 。
DMus 埠驅動程式會實作內核串流篩選器,其中包含接受 DirectMusic 使用者模式元件之 DirectMusic 資料的輸入針腳,dmusic.dll。 埠驅動程式也有波浪輸出針腳,可發出合成的音訊資料流程。 波接收會管理此針腳,並告訴合成器在記憶體中寫入其資料的位置。 這種安排會隔離核心串流的詳細資料。 您的 DMus 迷你埠驅動程式只需要處理從輸入 MIDI 資料流程合成波浪資料的詳細資料。 埠驅動程式會將波浪資料傳送至系統,而 SysAudio 的篩選圖形會連接篩選準則,讓所有專案都正確流動。 如下圖所示,MIDI 資料會傳入 DMus 埠驅動程式,並在排序之後傳遞至 DMus 迷你埠驅動程式。
迷你埠驅動程式會將 MIDI 資料轉換成波浪格式,這會轉譯成埠驅動程式另一個部分所指定的緩衝區:波接收。 然後,不會在使用者模式中跳出 DirectSound,而是透過 KMixer 系統驅動程式將波輸出移至音訊硬體。 DirectSound 其實只是公開 KMixer 的 API,而 DirectSound 加速是由硬體加速的混音器函式所組成,而不是由 KMixer 模擬軟體。
建置音訊篩選圖形的 SysAudio 系統驅動程式會將 DMus 埠驅動程式連接到硬體片段。 埠驅動程式的波浪接收部分會透過其波浪輸出針腳送出資料,SysAudio 可以連線到硬體裝置。 它會從 DMus 迷你埠驅動程式提取波浪資料 (,而不需考慮它是硬體或軟體合成) ,以及處理所有計時問題。 相較于使用者模式,迷你埠驅動程式類似于合成器,而波浪接收只是埠驅動程式的一部分。
如果 DMus 迷你埠驅動程式可以提供其輸出回主機,則會公開具有資料方向的波浪針腳,KSPIN_DATAFLOW_OUT (查看 KSPIN) ,SysAudio 可辨識並連接到 KMixer。
如需波接收的詳細資訊,請參閱 Kernel-Mode 軟體合成器的 Wave 接收。
本節也包含: