MIDI 传输

DMus 端口驱动程序涉及 DMus 微型端口驱动程序的合成器工作的正面和背面。 端口驱动程序输入由含时间戳的 MIDI 数据组成的 MIDI 流,并将该流路由到排序器。 排序器会删除时间戳,并在其时间戳已过时将原始 MIDI 消息传递到微型端口驱动程序。 (DLS 数据直接通过端口驱动程序传递到微型端口驱动程序,而不进行预处理。)

将 DMus 微型端口驱动程序的 MIDI 输入流转换为波次数据时,其输出由波次接收器(也称为“合成器接收器”或“呈现接收器”)管理。

DMus 端口驱动程序使用输入引脚实现内核流式处理筛选器,该引脚可接受来自 DirectMusic 用户模式组件 dmusic.dll 的 DirectMusic 数据。 端口驱动程序还具有发出合成音频流的波次输出引脚。 波次接收器将管理此引脚,并指示合成器在内存中写入其数据的位置。 这种排列使合成器与内核流式处理的详细信息隔离开来。 DMus 微型端口驱动程序只需处理合成来自输入 MIDI 流的波次数据的详细信息。 端口驱动程序将波次数据发送到系统,SysAudio 的筛选器图连接筛选器,使所有内容都正确流动。 如下图所示,MIDI 数据将传入 DMus 端口驱动程序,并在排序后传递到 DMus 微型端口驱动程序。

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

微型端口驱动程序将 MIDI 数据转换为波次格式,该类数据将呈现到由端口驱动程序的另一部分指定的缓冲区:波次接收器。 然后,波次输出通过 KMixer 系统驱动程序转到音频硬件,而不是像在用户模式下那样转到 DirectSound。 DirectSound 实际上只是一个公开 KMixer 的 API,DirectSound 加速包括硬件中加速的混音器功能,而不是由 KMixer 在软件中模拟。

生成音频筛选器图的 SysAudio 系统驱动程序将 DMus 端口驱动程序连接到某个硬件。 端口驱动程序的波次接收器部分通过其波次输出引脚将数据传出,SysAudio 可以将此引脚连接到硬件设备。 它从 DMus 微型端口驱动程序拉取波次数据(不考虑它是硬件还是软件合成器),并处理所有计时问题。 与用户模式相比,微型端口驱动程序类似于合成器,而波次接收器只是端口驱动程序的一部分。

如果 DMus 微型端口驱动程序可以将其输出提供回主机,它将使用 KSPIN_DATAFLOW_OUT(见 KSPIN)的数据方向公开波次引脚,SysAudio 会识别该引脚并将其连接到 KMixer。

有关波次接收器的详细信息,请参阅内核模式软件合成器的波次接收器

本部分还包括:

IMXF 接口

分配器