Compartilhar via


estrutura X3DAUDIO_EMITTER (x3daudio.h)

Define uma fonte de áudio 3D de ponto único ou de vários pontos que é usada com um número arbitrário de canais de som.

Sintaxe

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;

Membros

pCone

Ponteiro para um cone de som. Usado somente com emissores de canal único para matriz, LPF (caminhos diretos e reverb) e cálculos de reverb. NULL especifica que o emissor é omnidirecional.

OrientFront

Orientação da direção frontal. Esse valor deve ser orthonormal com OrientTop. OrientFront deve ser normalizado quando usado. Para emissores de canal único sem cones, o OrientFront só é usado para cálculos de ângulo de emissor. Para emissores de vários canais ou canal único com cones , OrientFront é usado para matriz, LPF (caminhos diretos e reverb) e cálculos de reverb.

OrientTop

Orientação da direção superior. Esse valor deve ser orthonormal com OrientFront. OrientTop só é usado com emissores de vários canais para cálculos de matriz.

Position

Posição em unidades mundiais definidas pelo usuário. Esse valor não afeta Velocity.

Velocity

Vetor de velocidade em unidades do mundo definidas pelo usuário/segundo. Esse valor é usado apenas para cálculos doppler. Isso não afeta a Posição.

InnerRadius

Valor a ser usado para os cálculos de raio interno. Se InnerRadius for 0, nenhum raio interno será usado, mas InnerRadiusAngle ainda poderá ser usado. Esse valor deve estar entre 0,0f e MAX_FLT.

InnerRadiusAngle

Valor a ser usado para os cálculos de ângulo de raio interno. Esse valor deve estar entre 0,0f e X3DAUDIO_PI/4.0.

ChannelCount

Número de emissores definidos pela estrutura X3DAUDIO_EMITTER . Deve ser maior que 0.

ChannelRadius

Distância de Posição em que os canais serão colocados se ChannelCount for maior que 1. ChannelRadius só é usado com emissores de vários canais para cálculos de matriz. Deve ser maior ou igual a 0,0f.

pChannelAzimuths

Tabela de posições de canal, expressa como um azimute em radianos ao longo do raio do canal em relação ao vetor de orientação frontal no ortogonal do plano para o vetor de orientação superior. Um azimute de X3DAUDIO_2PI especifica que um canal é um canal LFE (efeitos de baixa frequência). Os canais LFE são posicionados na base do emissor e são calculados com relação apenas a pLFECurve , nunca pVolumeCurve. pChannelAzimuths deve ter pelo menos elementos ChannelCount , mas pode ser NULL se ChannelCount = 1. Os valores da tabela devem estar dentro de 0,0f para X3DAUDIO_2PI. pChannelAzimuths é usado com emissores de vários canais para cálculos de matriz.

pVolumeCurve

Curva de distância no nível do volume, que é usada apenas para cálculos de matriz. NULL especifica uma curva padrão especializada que está em conformidade com a lei quadrada inversa, de modo que quando a distância está entre 0,0f e CurveDistanceScaler × 1,0f, nenhuma atenuação é aplicada. Quando a distância é maior que CurveDistanceScaler × 1,0f, o fator de amplificação é (CurveDistanceScaler × 1,0f)/distance. A uma distância de CurveDistanceScaler × 2,0f, o som estará em meio volume ou -6 dB, a uma distância de CurveDistanceScaler × 4,0f, o som estará em um quarto de volume ou -12 dB e assim por diante.

pVolumeCurve e pLFECurve são independentes um do outro. pVolumeCurve não afeta o volume de canal LFE .

pLFECurve

Curva de distância de roll-off LFE ou NULL para usar a curva padrão: [0,0f, CurveDistanceScaler ×1.0f], [CurveDistanceScaler ×1.0f, 0.0f]. Um valor NULL para pLFECurve especifica uma curva padrão que está em conformidade com a lei quadrada inversa com distâncias <= CurveDistanceScaler presa a nenhuma atenuação. pVolumeCurve e pLFECurve são independentes um do outro. pLFECurve não afeta o volume de canal não LFE.

pLPFDirectCurve

Curva de distância do coeficiente de caminho direto LPF (filtro de passagem baixa) ou NULL para usar a curva padrão: [0,0f, 1,0f], [1,0f, 0,75f]. pLPFDirectCurve é usado apenas para cálculos de caminho direto LPF.

pLPFReverbCurve

Curva de distância coeficiente de reverb-path LPF ou NULL para usar a curva padrão: [0,0f, 0,75f], [1,0f, 0,75f]. pLPFReverbCurve só é usado para cálculos de caminho de reverb LPF.

pReverbCurve

Reverb enviar curva de distância de nível ou NULL para usar a curva padrão: [0,0f, 1,0f], [1,0f, 0,0f].

CurveDistanceScaler

O dimensionador de distância de curva usado para dimensionar curvas de distância normalizadas para unidades do mundo definidas pelo usuário e/ou para exagerar seu efeito. Isso não afeta nenhum outro cálculo. O valor deve estar dentro do intervalo FLT_MIN para FLT_MAX. CurveDistanceScaler é usado apenas para matriz, LPF (caminhos diretos e reverb) e cálculos de reverb.

DopplerScaler

Doppler shift scaler que é usado para exagerar o efeito de deslocamento do Doppler. DopplerScaler é usado apenas para cálculos do Doppler e não afeta nenhum outro cálculo. O valor deve estar dentro do intervalo de 0,0f a FLT_MAX.

Comentários

X3DAUDIO_EMITTER só dá suporte a um cone em um emissor de ponto único. Os emissores de vários pontos são uma maneira conveniente e eficiente de gerenciar um grupo relacionado de fontes de som. Muitas propriedades são compartilhadas entre todos os pontos de canal, como Doppler— a mesma mudança do Doppler é aplicada a todos os canais no emissor. Portanto, o valor do Doppler só precisa ser calculado uma vez, não por ponto, como seria necessário com vários emissores de ponto único separados. Como X3DAUDIO_EMITTER tem apenas um vetor de orientação, um cone de emissor de vários pontos seria de utilidade limitada, forçando todos os canais a se comportarem como se estivessem voltados para a mesma direção. Se forem necessários vários cones independentes, vários emissores de ponto único deverão ser usados, cada um com sua própria orientação.

O tipo de parâmetro X3DAUDIO_VECTOR é digitado como DirectX::XMFLOAT3, para fornecer valores de ponto flutuante x , y e z.

X3DAudio usa um sistema de coordenadas cartesiano canhoto, com valores no eixo x aumentando da esquerda para a direita, no eixo y de baixo para cima e no eixo z de perto para longe. Os azimutes são medidos no sentido horário de uma determinada direção de referência.

Para usar X3DAudio com coordenadas destros, você deve negar o elemento .z de OrientFront, OrientTop, Position e Velocity.

Para curvas de distância definidas pelo usuário, o campo de distância do primeiro ponto deve ser 0,0f e o campo de distância do último ponto deve ser 1,0f.

Se um emissor se mover além de uma distância de (CurveDistanceScaler × 1,0f), o último ponto na curva será usado para calcular o nível de saída do volume. O último ponto é determinado pelo seguinte:

X3DAUDIO_DISTANCE_CURVE.pPoints[PointCount-1].DSPSetting)

Raio Interno e Ângulo de Raio Interno

InnerRadius é usado para especificar uma área de transição suave ao redor do ponto de origem enquanto um som viaja diretamente por, acima ou abaixo do ouvinte. A elevação é contabilizado pela especificação de um InnerRadiusAngle, pelo qual um som cuja elevação aumenta ou diminui, eventualmente começará a sangrar o som em mais de dois alto-falantes.

Quando Radius Interno e Ângulo de Raio Interno não são usados, os emissores são audíveis nos dois alto-falantes mais próximos de sua posição/orientação atual (ou, se diretamente em uma linha com o ângulo definido de um alto-falante, exclusivamente desse alto-falante).

Raio Interno e Ângulo de Raio Interno não têm efeito sobre emissores posicionados fora dos cones que descrevem. Dentro do cone, eles gradualmente farão com que o som sangre para os alto-falantes opostos, até que o som seja igualmente ouvido em todos os alto-falantes quando o emissor estiver na mesma posição que (ou diretamente acima ou abaixo) do ouvinte.

Raio interno e ângulo de raio interno

Requisitos da plataforma

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

Requisitos

Requisito Valor
Cabeçalho x3daudio.h

Confira também

Estruturas