Transporte MIDI
El controlador de puerto DMus está implicado en los lados delanteros y traseros del sintetizador del controlador DMus miniport. El controlador de puerto introduce una secuencia MIDI que consta de datos MIDI con marca de tiempo y enruta la secuencia al secuenciador. El secuenciador quita las marcas de tiempo y pasa los mensajes MIDI sin procesar al controlador de minipuerto cuando sus marcas de tiempo se vencidas. (Los datos DLS pasan directamente a través del controlador de puerto al controlador de minipuerto sin preprocesamiento).
Cuando el flujo de entrada MIDI del controlador DMus miniporta se convierte en datos de onda, su salida se administra mediante el receptor de onda (también denominado "receptor de síntesis" o "receptor de representación").
El controlador de puerto DMus implementa un filtro de streaming de kernel con un pin de entrada que acepta datos de DirectMusic del componente de modo de usuario de DirectMusic, dmusic.dll. El controlador de puerto también tiene un pin de salida de onda que emite la secuencia de audio sintetizada. El receptor de onda administra este pin e indica al sintetizador dónde en memoria escribir sus datos. Esta disposición aísla el sintetizador de los detalles del streaming del kernel. El controlador de miniporte DMus solo necesita tratar con los detalles de la síntesis de datos de onda de la secuencia MIDI de entrada. El controlador de puerto envía los datos de onda al sistema y el gráfico de filtros de SysAudio conecta los filtros para que todo fluya correctamente. Como se muestra en el diagrama siguiente, los datos MIDI entran en el controlador de puerto DMus y, después de la secuenciación, se pasan al controlador de miniporte DMus.
El controlador de minipuerto convierte los datos MIDI en formato de onda, que se representa en un búfer designado por otra parte del controlador de puerto: el receptor de onda. A continuación, en lugar de salir a DirectSound como lo hace en modo de usuario, la salida de onda pasa al hardware de audio a través del controlador del sistema KMixer. DirectSound es realmente solo una API que expone KMixer, y la aceleración de DirectSound consta de las funciones de mezclador que se aceleran en hardware en lugar de emularse en software por KMixer.
El controlador del sistema SysAudio, que compila el gráfico de filtros de audio, conecta el controlador de puerto DMus a un elemento de hardware. La parte receptora de onda del controlador de puerto entrega los datos a través de su pin de salida de onda, que SysAudio puede conectarse al dispositivo de hardware. Extrae datos de onda del controlador DMus miniport (sin tener en cuenta si es un sintetizador de hardware o software) y controla todos los problemas de tiempo. En comparación con el modo de usuario, el controlador de minipuerto es análogo al sintetizador, mientras que el receptor de onda es simplemente parte del controlador de puerto.
Si un controlador de miniporte DMus puede devolver su salida al host, expone un pin de onda con una dirección de datos de KSPIN_DATAFLOW_OUT (consulte KSPIN), que SysAudio reconoce y conecta a KMixer.
Para obtener más información sobre el receptor de ondas, vea A Wave Sink for Kernel-Mode Software Synthesizers.
Esta sección también incluye: