将合成器作为旧设备公开

你可能想要编写一个设备驱动程序,该驱动程序将 Synth 硬件公开为 DirectMusic 设备和旧 MIDI 设备 (即通过 Windows 多媒体 midiOutXxx API) 。 此方法可用于以下三种情况:

  1. 如果设备不支持 DLS。 示例包括 MPU-401 驱动程序 (请参阅 Windows 驱动程序工具包 [WDK]) 中的 mpu401 示例、仅具有 ROM 集的设备以及固定功能软件 (例如 FM) 。

    在这种情况下,设备可以公开旧的 MIDI 接口和 DirectMusic 接口。 它应只公开一个旧的 MIDI 引脚。 首先使用旧接口列出引脚非常重要,以便 WDM Audio 将其枚举为旧版 MIDI 设备。

  2. 如果设备支持 DLS,但以加载状态启动。 此设备具有 DLS 的 RAM 和包含 GM/GS/XG 波形表的 ROM。

    在这种情况下,设备还可以公开这两个接口。 如果两个接口是互斥的 (也就是说,下载内容后,ROM 将不可见) ,则它应该是具有两个接口的单个引脚,可从 (而不是两个引脚) 。

  3. 当设备支持 DLS,但 ("空"时,例如 DirectMusic 软件) 因此需要 DLS 下载来初始化其波形表。

    如果设备不需要 DLS 下载 (则不需要此初始化。如果设备在 ROM 中设置了默认示例集(例如) )或 DirectMusic 引脚已打开 (则 DirectMusic API 可确保 DLS 下载) 。

    通过旧 API 公开 DLS 设备需要额外的工作。 在需要 DLS 仪表的设备上打开旧引脚时,驱动程序应找到并打开包含要使用的 DLS 集合的文件。 然后,驱动程序应截获更新和银行更改,从 DLS 文件中检索相应的数据,并执行必要的 DLS 下载到设备。

    这种情况存在问题,因为 WDMAud 系统 驱动程序和其他客户端不知道他们需要下载集合。 他们只需开始发送 MIDI 更新更改和说明。