Expondo seu sintetizador como um dispositivo herdado
Talvez você queira escrever um único driver de dispositivo que exponha seu hardware sintetizador como um dispositivo DirectMusic e um dispositivo MIDI herdado (ou seja, por meio da APIMidiOut Xxx do Windows Multimídia). Essa técnica pode ser útil nos três casos a seguir:
Se o dispositivo não der suporte a DLS. Os exemplos incluem o driver MPU-401 (consulte o exemplo mpu401 no Kit de Driver do Windows [WDK]), um dispositivo que tem apenas um conjunto de ROM e um sintetizador de software de função fixa (por exemplo, FM).
Nesse caso, o dispositivo pode expor uma interface MIDI herdada, bem como uma interface DirectMusic. Ele deve expor apenas um pino MIDI herdado. É importante listar o pin com a interface herdada primeiro para que o WDM Audio o enumera como um dispositivo MIDI herdado.
Se o dispositivo der suporte a DLS, mas for habilitado em um estado carregado. Esse dispositivo tem RAM para DLS e ROM contendo tabelas de ondas GM/GS/XG.
Nesse caso, o dispositivo também pode expor ambas as interfaces. Se as duas interfaces forem mutuamente exclusivas (ou seja, se uma vez que você baixar algo, a ROM não estiver visível), deverá ser um único pino com duas interfaces para escolher (em vez de dois pinos).
Quando o dispositivo dá suporte a DLS, mas aumenta o "vazio" (por exemplo, o sintetizador de software DirectMusic) e, portanto, precisa de downloads de DLS para inicializar sua tabela de ondas.
Essa inicialização será desnecessária se o dispositivo não exigir downloads de DLS (se ele tiver um exemplo padrão definido em ROM, por exemplo) ou se um pino DirectMusic for aberto (as APIs DirectMusic garantem que os downloads de DLS ocorram).
Expor seu dispositivo DLS por meio das APIs herdadas requer algum trabalho extra. Quando um pin herdado é aberto em um dispositivo que requer instrumentos DLS, o driver deve localizar e abrir um arquivo que contém a coleção DLS a ser usada. Em seguida, o driver deve interceptar a atualização e as alterações bancárias, recuperar os dados apropriados do arquivo DLS e executar os downloads de DLS necessários para o dispositivo.
Esse caso é problemático porque o driver do sistema WDMAud e outros clientes não estão cientes de que precisam baixar uma coleção. Eles apenas começam a enviar alterações e anotações de atualização MIDI.