Controlador DMus Miniport
Un controlador DMus miniport administra las funciones dependientes del hardware de los dispositivos MIDI avanzados. Estos dispositivos admiten funcionalidades de DirectMusic, como el tiempo del secuenciador de precisión, los sonidos descargables (DLS) y los grupos de canales. Los controladores de miniporte DMus pueden lograr un alto rendimiento con dispositivos como MPU-401. El controlador de miniporte o el controlador de puerto pueden controlar el control de tiempo, en función de las capacidades del hardware. Un controlador de miniporte DMus también puede admitir un sintetizador de software que genera un flujo de salida de onda.
Un controlador DMus miniport para un dispositivo de hardware MIDI debe admitir dos interfaces:
La interfaz de minipuerto inicializa el objeto miniport y crea secuencias MIDI.
La interfaz de secuencia administra una secuencia MIDI y expone la mayor parte de la funcionalidad del controlador de miniporte.
La interfaz miniporte, IMiniportDMus, hereda los métodos de la interfaz IMiniport . IMiniportDMus proporciona los siguientes métodos adicionales:
Inicializa el objeto miniport.
Crea un nuevo objeto de secuencia.
Notifica al controlador de minipuerto de una solicitud de servicio.
La interfaz de secuencia, IMXF, hereda los métodos de la interfaz IUnknown . IMXF proporciona los siguientes métodos adicionales:
Conecta este objeto de secuencia, que es un origen de datos, a la interfaz IMXF de otro objeto de secuencia, que es un receptor de datos.
Desconecta este objeto de secuencia de la interfaz IMXF de otro objeto de secuencia que es un receptor de datos.
Pasa una estructura de DMUS_KERNEL_EVENT al receptor de datos.
Establece el estado de la secuencia.
Además, la interfaz ISynthSinkDMus del controlador DMus miniport proporciona funcionalidad DLS para sintetizadores de software. ISynthSinkDMus hereda los métodos de la interfaz base IMXF. ISynthSinkDMus proporciona los siguientes métodos adicionales:
ISynthSinkDMus::RefTimeToSample
Convierte una hora de referencia en una hora de ejemplo.
Representa los datos de onda en un búfer para el receptor de onda.
ISynthSinkDMus::SampleToRefTime
Convierte una hora de ejemplo en una hora de referencia.
Sincroniza el reloj de ejemplo con el reloj maestro.
El receptor de onda del controlador del puerto llama a ISynthSinkDMus::Render para leer los datos pcM de onda que el sintetizador genera a partir de su flujo de entrada MIDI. Para obtener más información sobre el receptor de onda, consulte Un receptor de onda para Kernel-Mode sintetizadores de software.
El controlador de minipuerto llama a las siguientes interfaces en el controlador de puerto DMus:
PortCls contiene un controlador DMus miniport integrado para un dispositivo MIDI con una función UART. Para obtener más información, consulta PcNewMiniport.