Compartir a través de


KSPROPSETID_Synth

El KSPROPSETID_Synth conjunto de propiedades contiene propiedades globales para la configuración de un nodo de sintetizador (KSNODETYPE_SYNTHESIZER).

Los elementos de propiedad de este conjunto se especifican mediante KSPROPERTY_SYNTH valores de enumeración, tal como se define en el archivo de encabezado Dmusprop.h.

Tabla de resumen de uso

El sistema usa la propiedad KSPROPERTY_SYNTH_CAPS para determinar las funcionalidades de un sintetizador.

Obtener Set Destino Tipo de descriptor de propiedad Tipo de valor de propiedad

No

Anclar

KSNODEPROPERTY

SYNTHCAPS

El valor de propiedad (datos de operación) es una estructura de tipo SYNTHCAPS y especifica las funcionalidades del sintetizador. Estas son algunas de ellas:

  • Cantidad de memoria de ejemplo disponible

  • Número máximo de grupos de canales

  • Número máximo de voces

  • Número máximo de canales de audio

  • Efectos de representación

Para obtener más información, consulte SYNTHCAPS.

Valor devuelto

Una solicitud de propiedad KSPROPERTY_SYNTH_CAPS devuelve STATUS_SUCCESS para indicar que se ha completado correctamente. De lo contrario, la solicitud devuelve un código de estado de error adecuado.

Para obtener más información sobre las funcionalidades del sintetizador, vea el método IDirectMusicPort::GetCaps y la estructura de DMUS_PORTCAPS en la documentación de Microsoft Windows SDK.

Tabla de resumen de uso

El sistema usa la propiedad KSPROPERTY_SYNTH_CHANNELGROUPS para establecer o obtener el número de grupos de canales activos en la instancia de pin. Los grupos de canales se numeran, empezando por cero, en cada instancia de patilla.

Obtener Set Destino Tipo de descriptor de propiedad Tipo de valor de propiedad

Anclar

KSNODEPROPERTY

ULONG

El valor de propiedad (datos de operación) es de tipo ULONG y especifica cuántos grupos de canales admite el pin. Si un pin admite n grupos de canales, los grupos de canales de la patilla se numeran de 0 a n-1.

Valor devuelto

Una solicitud de propiedad KSPROPERTY_SYNTH_CAPS devuelve STATUS_SUCCESS para indicar que se ha completado correctamente. De lo contrario, la solicitud devuelve un código de estado de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de error.

Código de estado Significado

STATUS_BUFFER_TOO_SMALL

El búfer era demasiado pequeño para completar la operación.

STATUS_UNSUCCESSFUL

La operación no se completó correctamente.

Para obtener más información sobre los grupos de canales, vea las descripciones de los métodos IDirectMusicPort::GetNumChannelGroups e IDirectMusicPort::SetNumChannelGroups en la documentación de Microsoft Windows SDK.

Tabla de resumen de uso

La propiedad KSPROPERTY_SYNTH_LATENCYCLOCK se usa para consultar el controlador de minipuerto para la hora actual del reloj de latencia de la secuencia, que siempre es mayor que la hora del reloj maestro.

Obtener Set Destino Tipo de descriptor de propiedad Tipo de valor de propiedad

No

Anclar

KSNODEPROPERTY

ULONGLONG

El valor de propiedad (datos de operación) es de tipo ULONGLONG y representa el tiempo de latencia actual del sintetizador. Esta hora se especifica en relación con el reloj maestro y se expresa en unidades de 100 nanosegundos.

Valor devuelto

Una solicitud de propiedad KSPROPERTY_SYNTH_LATENCYCLOCK devuelve STATUS_SUCCESS para indicar que se ha completado correctamente. De lo contrario, la solicitud devuelve un código de estado de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de error.

Código de estado Significado

STATUS_BUFFER_TOO_SMALL

El búfer era demasiado pequeño para completar la operación.

STATUS_UNSUCCESSFUL

La operación no se completó correctamente.

STATUS_INVALID_DEVICE_REQUEST

La operación no es válida para este dispositivo.

Los relojes de latencia se suelen usar para sincronizar secuencias de salida de audio entre varios dispositivos.

Una solicitud de KSPROPERTY_SYNTH_LATENCYCLOCK get-property debe devolver una hora de reloj de latencia que sea igual a la hora del reloj maestro actual, además de la latencia mínima garantizada del filtro de audio que pasa la secuencia. Un programa de aplicación que programa los datos de audio que se reproducirán antes de la hora del reloj de latencia actual corre el riesgo de que los datos se reproduzcan tarde.

Para obtener más información sobre los relojes de latencia, consulte lo siguiente:

  • Explicación de la propiedad KSPROPERTY_SYNTH_LATENCYCLOCK en Relojes de latencia.

  • Las descripciones de los métodos IDirectMusicPort::GetLatencyClock e IReferenceClock::GetTime en la documentación de Microsoft Windows SDK.

Tabla de resumen de uso

La propiedad KSPROPERTY_SYNTH_PORTPARAMETERS se usa para obtener los parámetros de configuración de un puerto directMusic, que es un término de DirectMusic para un dispositivo que envía o recibe datos de música. (En la terminología de KS, el puerto de DirectMusic no corresponde a un controlador de puerto DMus. Corresponde a un pin de representación o captura en un filtro directMusic).

Obtener Set Destino Tipo de descriptor de propiedad Tipo de valor de propiedad

No

Anclar

KSNODEPROPERTY + SYNTH_PORTPARAMS

SYNTH_PORTPARAMS

El descriptor de propiedad (datos de instancia) consta de una estructura KSNODEPROPERTY seguida inmediatamente de una estructura de SYNTH_PORTPARAMS. Antes de enviar la solicitud de propiedad, el cliente especifica sus valores de parámetro solicitados escribiendolos en la estructura SYNTH_PORTPARAMS.

El valor de propiedad (datos de operación) también es de tipo SYNTH_PORTPARAMS. El controlador de minipuerto carga esta estructura con los valores de parámetro que realmente usa para configurar el puerto.

Valor devuelto

Si el controlador de miniporte se configura correctamente el puerto de DirectMusic exactamente según lo especificado por el autor de la llamada, devuelve el código STATUS_SUCCESS. De lo contrario, devuelve un código de error adecuado. En la tabla siguiente se indican algunos de los posibles códigos de estado de error.

Código de estado Significado

STATUS_NOT_ALL_ASSIGNED

La operación se realizó correctamente, pero el controlador de minipuerto tuvo que modificar uno o varios de los valores de parámetro que el autor de la llamada marcó como válido en el valor de propiedad.

STATUS_UNSUCCESSFUL

La operación no se completó correctamente.

Este es el más complicado de los elementos de propiedad directMusic que se van a controlar. Aunque esta propiedad solo admite la solicitud get, la solicitud get también establece los parámetros de puerto. El puerto pasa una estructura de SYNTH_PORTPARAMS como descriptor de propiedad para la solicitud de propiedad. Un búfer de valor de propiedad acompaña a la solicitud de propiedad, pero como se trata de una solicitud get, el búfer solo se usa para recuperar información del controlador de miniport.

El controlador de minipuerto debe copiar primero la estructura SYNTH_PORTPARAMS del descriptor de propiedad en el búfer de valor de propiedad. A continuación, debe comprobar si es capaz de admitir todos los valores de parámetro que el autor de la llamada ha solicitado (marcado como válido). Si el controlador de minipuerto no puede admitir uno o varios de los valores de parámetro solicitados, debe sobrescribir (en la estructura SYNTH_PORTPARAMS en el búfer de valor de propiedad) los valores solicitados para estos parámetros concretos con los valores que puede admitir.

Si el controlador de minipuerto no realiza ningún cambio en el SYNTH_PORTPARAMS del autor de la llamada, el autor de la llamada debería obtener un valor de propiedad que coincida exactamente con los parámetros del descriptor de propiedad que el autor de la llamada envió originalmente al controlador de miniporte.

Por convención, el controlador también rellena los valores de los parámetros que no tienen los bits correspondientes establecidos en el miembro dwValidParams de SYNTH_PORTPARAMS. Esto permite al autor de la llamada ver qué valores predeterminados usa el controlador de minipuerto para estos parámetros. El controlador de minipuerto genera los valores de parámetro reales que usó para compilar el dispositivo de interfaz de onda.

El controlador de KSPROPERTY_SYNTH_PORTPARAMETERS del controlador de miniporte debe estar preparado para controlar correctamente las solicitudes de cambios de frecuencia de muestreo.

Tabla de resumen de uso

La propiedad KSPROPERTY_SYNTH_RUNNINGSTATS se usa para consultar el controlador de minipuerto para las estadísticas de rendimiento del sintetizador.

Obtener Set Destino Tipo de descriptor de propiedad Tipo de valor de propiedad

No

Anclar

KSNODEPROPERTY

SYNTH_STATS

El valor de propiedad (datos de operación) es una estructura de tipo SYNTH_STATS. El controlador de propiedades del controlador de minipuerto escribe las estadísticas siguientes en esta estructura:

  • Número medio de voces que se reproducen

  • Uso de CPU

  • Número de notas perdidas

  • Cantidad de memoria libre

  • Nivel de volumen máximo

Valor devuelto

Una solicitud de propiedad KSPROPERTY_SYNTH_RUNNINGSTATS devuelve STATUS_SUCCESS para indicar que se ha completado correctamente. De lo contrario, la solicitud devuelve un código de estado de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de error.

Código de estado Significado

STATUS_BUFFER_TOO_SMALL

El búfer era demasiado pequeño para completar la operación.

STATUS_UNSUCCESSFUL

La operación no se completó correctamente.

STATUS_INVALID_DEVICE_REQUEST

La operación no es válida para este dispositivo.

Las estadísticas de rendimiento del sintetizador se actualizan continuamente mientras el dispositivo permanece en estado KSSTATE_RUN. Cada vez que el dispositivo entra en este estado, restablece las estadísticas, que cero valores acumulados, como el volumen máximo y el número de notas perdidas.

Para obtener más información, vea la descripción del método IDirectMusicPort::GetRunningStats y la estructura de DMUS_SYNTHSTATS en la documentación de Microsoft Windows SDK.

Tabla de resumen de uso

La propiedad KSPROPERTY_SYNTH_VOICEPRIORITY especifica qué prioridad debe tener una voz determinada en un sintetizador MIDI cuando el controlador de miniporte necesita aumentar las voces de su caché de voz.

Obtener Set Destino Tipo de descriptor de propiedad Tipo de valor de propiedad

Anclar

KSNODEPROPERTY + SYNTHVOICEPRIORITY_INSTANCE

DWORD

El descriptor de propiedad (datos de instancia) consta de una estructura KSNODEPROPERTY seguida inmediatamente de una estructura de SYNTHVOICEPRIORITY_INSTANCE, que especifica el grupo de canales de voz (conjunto de 16 canales MIDI) y el número de canal (dentro del grupo).

El valor de propiedad (datos de operación) es un DWORD que especifica la prioridad. El cliente usa una solicitud de KSPROPERTY_SYNTH_VOICEPRIORITY set-property para enviar la nueva prioridad de la voz al controlador de miniporte y usa una solicitud de KSPROPERTY_SYNTH_VOICEPRIORITY get-property para recuperar la prioridad actual de la voz del controlador de miniporte.

Prioridades de voz

Las siguientes prioridades del grupo de canales se definen en el archivo de encabezado Dmusprop.h:

  DAUD_CRITICAL_VOICE_PRIORITY
  DAUD_HIGH_VOICE_PRIORITY
  DAUD_STANDARD_VOICE_PRIORITY
  DAUD_LOW_VOICE_PRIORITY
  DAUD_PERSIST_VOICE_PRIORITY

La lista anterior se ordena con la prioridad más alta en la parte superior de la lista y la más baja en la parte inferior. Estas prioridades son ORed con los desplazamientos de prioridad del canal para llegar a la prioridad de voz de cada canal dentro de un grupo de canales. Las prioridades resultantes se pasan en las solicitudes get-and set-property.

Los valores de prioridad del grupo de canales anteriores son grandes en comparación con los desplazamientos de prioridad del canal. El resultado es que cambiar la prioridad del grupo de canales aumenta o reduce la prioridad de todo el grupo de canales en relación con otros grupos de canales sin modificar las prioridades relativas de los canales dentro del grupo de canales.

Prioridades predeterminadas

Cuando se crea un controlador de minipuerto de sintetizador, asigna una prioridad predeterminada a cada una de sus voces. Los valores predeterminados se definen de la siguiente manera:

  • De forma predeterminada, las prioridades son iguales entre grupos de canales. Esto significa, por ejemplo, que el canal 5 del grupo de canales 1 tiene la misma prioridad que el canal 5 en el grupo de canales 2.

  • De acuerdo con las especificaciones DLS Level-1, el canal 10 (el canal de percusión MIDI) tiene la máxima prioridad, seguido de 1 a 9 y 11 a 16.

El archivo de encabezado Dmusprop.h define los siguientes desplazamientos de prioridad:

  DAUD_CHAN10_VOICE_PRIORITY_OFFSET
  DAUD_CHAN1_VOICE_PRIORITY_OFFSET
  DAUD_CHAN2_VOICE_PRIORITY_OFFSET
  DAUD_CHAN3_VOICE_PRIORITY_OFFSET
  DAUD_CHAN4_VOICE_PRIORITY_OFFSET
  DAUD_CHAN5_VOICE_PRIORITY_OFFSET
  DAUD_CHAN6_VOICE_PRIORITY_OFFSET
  DAUD_CHAN7_VOICE_PRIORITY_OFFSET
  DAUD_CHAN8_VOICE_PRIORITY_OFFSET
  DAUD_CHAN9_VOICE_PRIORITY_OFFSET
  DAUD_CHAN11_VOICE_PRIORITY_OFFSET
  DAUD_CHAN12_VOICE_PRIORITY_OFFSET
  DAUD_CHAN13_VOICE_PRIORITY_OFFSET
  DAUD_CHAN14_VOICE_PRIORITY_OFFSET
  DAUD_CHAN15_VOICE_PRIORITY_OFFSET
  DAUD_CHAN16_VOICE_PRIORITY_OFFSET

La lista anterior de desplazamientos se ordena con la prioridad más alta en la parte superior de la lista. El archivo de encabezado Dmusprop.h también define las prioridades predeterminadas de los canales de cada grupo de canales mediante ORing bit a bit cada uno de estos desplazamientos con DAUD_STANDARD_VOICE_PRIORITY. Por ejemplo, la definición siguiente proporciona la prioridad predeterminada para el canal 1 en cada grupo de canales:

  #define DAUD_CHAN1_DEF_VOICE_PRIORITY \
    (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)

Valor devuelto

Una solicitud de propiedad KSPROPERTY_SYNTH_VOICEPRIORITY devuelve STATUS_SUCCESS para indicar que se ha completado correctamente. De lo contrario, la solicitud devuelve un código de estado de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de error.

Código de estado Significado

STATUS_BUFFER_TOO_SMALL

El búfer era demasiado pequeño para completar la operación.

STATUS_UNSUCCESSFUL

La operación no se completó correctamente.

Para obtener más información sobre las prioridades de voz, consulte las descripciones de los métodos IDirectMusicPort::GetChannelPriority e IDirectMusicPort::SetChannelPriority en la documentación de Microsoft Windows SDK.

Tabla de resumen de uso

La propiedad KSPROPERTY_SYNTH_VOLUME obtiene o establece el nivel de volumen de un dispositivo sintetizador.

Obtener Set Destino Tipo de descriptor de propiedad Tipo de valor de propiedad

Anclar

KSPROPERTY

LONG

El valor de propiedad (datos de operación) es de tipo LONG y especifica el nivel de volumen del dispositivo sintetizador. La configuración del volumen se especifica en unidades de 1/100th de un decibel. El controlador de minipuerto debe cambiar su volumen o notificar su volumen, en función de si la solicitud es obtener o establecer la propiedad .

Valor devuelto

Una solicitud de propiedad KSPROPERTY_SYNTH_VOLUME devuelve STATUS_SUCCESS para indicar que se ha completado correctamente. De lo contrario, la solicitud devuelve un código de estado de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de error.

Código de estado Significado

STATUS_BUFFER_TOO_SMALL

El búfer era demasiado pequeño para completar la operación.

STATUS_UNSUCCESSFUL

La operación no se completó correctamente.

Tabla de resumen de uso

La propiedad KSPROPERTY_SYNTH_VOLUMEBOOST especifica la cantidad por la que se aumenta el volumen de un dispositivo sintetizador.

Obtener Set Destino Tipo de descriptor de propiedad Tipo de valor de propiedad

Anclar

KSNODEPROPERTY

LONG

El valor de propiedad (datos de operación) es de tipo LONG y especifica por cuánto aumentar la señal de audio después de la fase de combinación. Esta es la cantidad de volumen que se va a agregar a la salida final del sintetizador después de que se hayan completado todas las articulaciones y mezclas de voz. La cantidad de aumento de volumen se especifica en 1/100ths de un decibel. Este valor puede ser positivo o negativo.

Valor devuelto

Una solicitud de propiedad KSPROPERTY_SYNTH_VOLUMEBOOST devuelve STATUS_SUCCESS para indicar que se ha completado correctamente. De lo contrario, la solicitud devuelve un código de estado de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de error.

Código de estado Significado

STATUS_BUFFER_TOO_SMALL

El búfer era demasiado pequeño para completar la operación.

STATUS_UNSUCCESSFUL

La operación no se completó correctamente.

No se debe agregar ninguna otra potenciación a la salida. El sintetizador debe seguir las convenciones estrictas de nivel 1 de DLS para la articulación.

Esta propiedad se usa para igualar el volumen del sintetizador con otra salida de audio en el sistema y, por tanto, las cantidades de aumento deben interpretarse de forma coherente en todos los dispositivos.