Compartir a través de


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:

IMiniportDMus::Init

Inicializa el objeto miniport.

IMiniportDMus::NewStream

Crea un nuevo objeto de secuencia.

IMiniportDMus::Service

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:

IMXF::ConnectOutput

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.

IMXF::D isconnectOutput

Desconecta este objeto de secuencia de la interfaz IMXF de otro objeto de secuencia que es un receptor de datos.

IMXF::P utMessage

Pasa una estructura de DMUS_KERNEL_EVENT al receptor de datos.

IMXF::SetState

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.

ISynthSinkDMus::Render

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.

ISynthSinkDMus::SyncToMaster

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:

IPortDMus

IAllocatorMXF

IMasterClock

PortCls contiene un controlador DMus miniport integrado para un dispositivo MIDI con una función UART. Para obtener más información, consulta PcNewMiniport.