Предоставление синтезатора в качестве устаревшего устройства
Вы можете написать один драйвер устройства, который предоставляет оборудование синтезатора как устройство DirectMusic, так и устаревшее устройство MIDI (то есть через API MidiOutXxx Windows Multimedia). Этот метод может быть полезен в следующих трех случаях:
Если устройство не поддерживает DLS. К примерам относятся драйвер MPU-401 (см. пример mpu401 в комплекте драйверов Windows [WDK]), устройство с набором ПЗУ и программный синтезатор с фиксированной функцией (например, FM).
В этом случае устройство может предоставлять устаревший интерфейс MIDI, а также интерфейс DirectMusic. Он должен предоставлять только один устаревший PIN-код MIDI. Важно сначала получить список контактов с устаревшим интерфейсом, чтобы WDM Audio перечислил его как устаревшее устройство MIDI.
Если устройство поддерживает DLS, но работает в загруженном состоянии. Это устройство имеет как ОЗУ для DLS, так и ПЗУ, содержащий волновые таблицы GM/GS/XG.
В этом случае устройство также может предоставлять оба интерфейса. Если два интерфейса являются взаимоисключающими (т. е. если после скачивания чего-либо ПЗУ не отображается), то это должен быть один контакт с двумя интерфейсами на выбор (в отличие от двух контактов).
Если устройство поддерживает DLS, но включает "пустую" (например, синтезатор программного обеспечения DirectMusic), поэтому для инициализации своей волновой таблицы требуется скачивание DLS.
Эта инициализация не нужна, если устройство не требует загрузки DLS (например, если в ПЗУ установлен пример по умолчанию) или если открыт контакт DirectMusic (API DirectMusic гарантирует, что происходит скачивание DLS).
Предоставление доступа к устройству DLS с помощью устаревших API-интерфейсов требует дополнительных работ. При открытии устаревшего пин-кода на устройстве, которому требуются инструменты DLS, драйвер должен найти и открыть файл, содержащий коллекцию DLS для использования. Затем драйвер должен перехватывать обновления и банковские изменения, извлекать соответствующие данные из файла DLS и выполнять необходимые загрузки DLS на устройство.
Это проблематично, так как системный драйвер WDMAud и другие клиенты не знают, что им нужно скачать коллекцию. Они просто начинают отправлять изменения и заметки об обновлениях MIDI.