estructura X3DAUDIO_EMITTER (x3daudio.h)

Define una fuente de audio 3D de punto único o de varios puntos que se usa con un número arbitrario de canales de sonido.

Sintaxis

typedef struct X3DAUDIO_EMITTER {
  X3DAUDIO_CONE           *pCone;
  X3DAUDIO_VECTOR         OrientFront;
  X3DAUDIO_VECTOR         OrientTop;
  X3DAUDIO_VECTOR         Position;
  X3DAUDIO_VECTOR         Velocity;
  FLOAT32                 InnerRadius;
  FLOAT32                 InnerRadiusAngle;
  UINT32                  ChannelCount;
  FLOAT32                 ChannelRadius;
  FLOAT32                 *pChannelAzimuths;
  X3DAUDIO_DISTANCE_CURVE *pVolumeCurve;
  X3DAUDIO_DISTANCE_CURVE *pLFECurve;
  X3DAUDIO_DISTANCE_CURVE *pLPFDirectCurve;
  X3DAUDIO_DISTANCE_CURVE *pLPFReverbCurve;
  X3DAUDIO_DISTANCE_CURVE *pReverbCurve;
  FLOAT32                 CurveDistanceScaler;
  FLOAT32                 DopplerScaler;
} X3DAUDIO_EMITTER, *LPX3DAUDIO_EMITTER;

Miembros

pCone

Puntero a un cono de sonido. Solo se usa con emisores de un solo canal para matrices, LPF (rutas directas y de reverberación) y cálculos de reverberación. NULL especifica que el emisor es omnidireccional.

OrientFront

Orientación de la dirección frontal. Este valor debe ser ortonormal con OrientTop. OrientFront debe normalizarse cuando se usa. En el caso de los emisores de un solo canal sin cones OrientFront solo se usa para los cálculos de ángulo de emisión. En el caso de los emisores de varios canales o de un solo canal cones OrientFront se usa para matrices, LPF (rutas directas y de reverberación) y cálculos de reverberación.

OrientTop

Orientación de la dirección superior. Este valor debe ser ortonormal con OrientFront. OrientTop solo se usa con emisores multicanal para cálculos de matriz.

Position

Posición en unidades del mundo definidas por el usuario. Este valor no afecta a La velocidad.

Velocity

Vector de velocidad en unidades mundiales definidas por el usuario/segundo. Este valor solo se usa para los cálculos de exchange. No afecta a Position.

InnerRadius

Valor que se va a usar para los cálculos de radio interno. Si InnerRadius es 0, no se usa ningún radio interno, pero innerRadiusAngle todavía se puede usar. Este valor debe estar comprendido entre 0,0f y MAX_FLT.

InnerRadiusAngle

Valor que se va a usar para los cálculos de ángulo de radio interno. Este valor debe estar comprendido entre 0,0f y X3DAUDIO_PI/4,0.

ChannelCount

Número de emisores definidos por la estructura X3DAUDIO_EMITTER . Debe ser mayor que 0.

ChannelRadius

Distancia desde Position que se colocarán los canales si ChannelCount es mayor que 1. ChannelRadius solo se usa con emisores de varios canales para los cálculos de matriz. Debe ser mayor o igual que 0,0f.

pChannelAzimuths

Tabla de posiciones de canal, expresada como azimuth en radianes a lo largo del radio del canal con respecto al vector de orientación frontal del plano ortogonal al vector de orientación superior. Una azimuta de X3DAUDIO_2PI especifica que un canal es un canal de efectos de baja frecuencia (LFE). Los canales LFE se colocan en la base del emisor y se calculan únicamente con respecto a pLFECurve , nunca pVolumeCurve. pChannelAzimuths debe tener al menos elementos ChannelCount , pero puede ser NULL si ChannelCount = 1. Los valores de la tabla deben estar comprendidos en 0,0f en X3DAUDIO_2PI. pChannelAzimuths se usa con emisores de varios canales para cálculos de matriz.

pVolumeCurve

Curva de distancia de nivel de volumen, que solo se usa para cálculos de matriz. NULL especifica una curva predeterminada especializada que se ajusta a la ley cuadrada inversa, de modo que cuando la distancia está entre 0,0f y CurveDistanceScaler × 1,0f, no se aplica ninguna atenuación. Cuando la distancia es mayor que CurveDistanceScaler × 1,0f, el factor de amplificación es (CurveDistanceScaler × 1,0f)/distance. A una distancia de CurveDistanceScaler × 2.0f, el sonido estará a medio volumen o -6 dB, a una distancia de CurveDistanceScaler × 4.0f, el sonido estará en un cuarto de volumen o -12 dB, etc.

pVolumeCurve y pLFECurve son independientes entre sí. pVolumeCurve no afecta al volumen del canal LFE .

pLFECurve

Curva de distancia de lanzamiento de LFE o NULL para usar la curva predeterminada: [0,0f, CurveDistanceScaler ×1.0f], [CurveDistanceScaler ×1.0f, 0.0f]. Un valor NULL para pLFECurve especifica una curva predeterminada que se ajusta a la ley cuadrada inversa con distancias <= CurveDistanceScaler sujeta a ninguna atenuación. pVolumeCurve y pLFECurve son independientes entre sí. pLFECurve no afecta al volumen de canal no LFE.

pLPFDirectCurve

Curva de distancia de coeficiente de trazado directo de filtro de paso bajo (LPF) o NULL para usar la curva predeterminada: [0.0f, 1.0f], [1.0f, 0.75f]. pLPFDirectCurve solo se usa para los cálculos de ruta directa de LPF.

pLPFReverbCurve

Curva de distancia de coeficiente de reverberación de LPF o NULL para usar la curva predeterminada: [0,0f, 0,75f], [1,0f, 0,75f]. pLPFReverbCurve solo se usa para los cálculos de ruta de reverberación LPF.

pReverbCurve

Curva de distancia de nivel de envío de reverberación o NULL para usar la curva predeterminada: [0.0f, 1.0f], [1.0f, 0.0f].

CurveDistanceScaler

Escalador de distancia de curva que se usa para escalar curvas de distancia normalizadas a unidades del mundo definidas por el usuario o para exagerar su efecto. Esto no afecta a ningún otro cálculo. El valor debe estar dentro del intervalo FLT_MIN a FLT_MAX. CurveDistanceScaler solo se usa para matrices, LPF (rutas directas y de reverberación) y cálculos de reverberación.

DopplerScaler

Escalador de desplazamiento Desplaz que se utiliza para exagerar el efecto de desplazamiento de Shift. LoadScaler solo se usa para los cálculos de Load y no afecta a ningún otro cálculo. El valor debe estar dentro del intervalo de 0,0f a FLT_MAX.

Comentarios

X3DAUDIO_EMITTER solo admite un cono en un emisor de un solo punto. Los emisores de varios puntos son una manera cómoda y eficaz de administrar un grupo relacionado de fuentes de sonido. Muchas propiedades se comparten entre todos los puntos de canal, como La misma migración Desaplicada a todos los canales del emisor. Por lo tanto, el valor de Decimal solo se debe calcular una vez, no por punto como se necesitaría con varios emisores de punto único independientes. Dado que X3DAUDIO_EMITTER solo tiene un vector de orientación, un cono emisor de varios puntos sería de utilidad limitada, obligando a todos los canales a comportarse como si estuvieran frente a la misma dirección. Si se necesitan varios conos independientes, se deben usar varios emisores de punto único, cada uno con su propia orientación.

El tipo de parámetro X3DAUDIO_VECTOR se escribe en DirectX::XMFLOAT3, para proporcionar valores de punto flotante x , y y z.

X3DAudio usa un sistema de coordenadas cartesiano a la izquierda, con valores en el eje X que aumentan de izquierda a derecha, en el eje y de abajo a arriba y en el eje z de cerca a lejos. Los Azimuths se miden en el sentido de las agujas del reloj desde una dirección de referencia determinada.

Para usar X3DAudio con coordenadas a la derecha, debe negar el elemento .z de OrientFront, OrientTop, Position y Velocity.

Para las curvas de distancia definidas por el usuario, el campo de distancia del primer punto debe ser 0,0f y el campo de distancia del último punto debe ser 1,0f.

Si un emisor se mueve más allá de una distancia de (CurveDistanceScaler × 1.0f), el último punto de la curva se usa para calcular el nivel de salida del volumen. El último punto viene determinado por lo siguiente:

X3DAUDIO_DISTANCE_CURVE.pPoints[PointCount-1].DSPSetting)

Radio interno y ángulo de radio interno

InnerRadius se usa para especificar un área de transición suave alrededor del punto de origen a medida que un sonido viaja directamente a través, por encima o por debajo del agente de escucha. La elevación se contabiliza especificando un InnerRadiusAngle, en el que un sonido cuya elevación aumenta o disminuye, finalmente comenzará a sangr el sonido en más de dos altavoces.

Cuando no se usa el radio interno y el ángulo de radio interior, los emisores son audibles en los dos altavoces más cercanos a su posición/orientación actual (o, si están directamente en una línea con el ángulo definido de un hablante, únicamente desde ese altavoz).

El radio interno y el ángulo de radio interno no tienen ningún efecto en los emisores situados fuera de los conos que describen. Dentro del cono, harán que el sonido se sangrase gradualmente en los altavoces opuestos, hasta que el sonido se escuche igualmente en todos los altavoces cuando el emisor esté en la misma posición que (o directamente encima o por debajo) del agente de escucha.

Radio interno y ángulo de radio interno

Requisitos de la plataforma

Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); SDK de DirectX (XAudio 2.7)

Requisitos

Requisito Valor
Header x3daudio.h

Consulte también

Estructuras