Condividi tramite


X3DAUDIO_EMITTER struttura (x3daudio.h)

Definisce un'origine audio 3D a un singolo punto o a più punti usata con un numero arbitrario di canali audio.

Sintassi

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;

Members

pCone

Puntatore a un cono suono. Usato solo con gli emettitori a canale singolo per matrice, LPF (sia percorsi diretti che di riverbero) e calcoli di riverbero. NULL specifica che l'emittente è omnidirectional.

OrientFront

Orientamento della direzione anteriore. Questo valore deve essere ortonormale con OrientTop. OrientFront deve essere normalizzato quando usato. Per gli emettitori a canale singolo senza cones OrientFront viene usato solo per i calcoli dell'angolo di emissione. Per gli emettitori a più canali o a canale singolo con cones OrientFront viene usato per matrice, LPF (percorsi diretti e riverberi) e calcoli di riverbero.

OrientTop

Orientamento della direzione superiore. Questo valore deve essere ortonormale con OrientFront. OrientTop viene usato solo con gli emettitori multicanale per i calcoli della matrice.

Position

Posizione nelle unità mondiali definite dall'utente. Questo valore non influisce sulla velocità.

Velocity

Vettore di velocità nelle unità del mondo definite dall'utente/secondo. Questo valore viene usato solo per i calcoli doppler. Non influisce sulla posizione.

InnerRadius

Valore da utilizzare per i calcoli del raggio interno. Se InnerRadius è 0, non viene usato alcun raggio interno, ma InnerRadiusAngle può comunque essere usato. Questo valore deve essere compreso tra 0,0f e MAX_FLT.

InnerRadiusAngle

Valore da usare per i calcoli dell'angolo di raggio interno. Questo valore deve essere compreso tra 0,0f e X3DAUDIO_PI/4.0.

ChannelCount

Numero di emettitori definiti dalla struttura X3DAUDIO_EMITTER . Deve essere maggiore di 0.

ChannelRadius

Distanza da Posizione che i canali verranno posizionati se ChannelCount è maggiore di 1. ChannelRadius viene usato solo con gli emettitori multicanale per i calcoli della matrice. Deve essere maggiore o uguale a 0,0f.

pChannelAzimuths

Tabella delle posizioni del canale, espressa come azimuth in radianti lungo il raggio del canale rispetto al vettore di orientamento anteriore nel vettore ortogonale del piano al vettore di orientamento superiore. Un azimuth di X3DAUDIO_2PI specifica che un canale è un canale a bassa frequenza (LFE). I canali LFE vengono posizionati alla base dell'emittente e vengono calcolati rispetto solo a pLFECurve , mai pVolumeCurve. pChannelAzimuths deve avere almeno gli elementi ChannelCount , ma può essere NULL se ChannelCount = 1. I valori della tabella devono essere compresi tra 0,0f e X3DAUDIO_2PI. pChannelAzimuths viene usato con gli emettitori multicanale per i calcoli della matrice.

pVolumeCurve

Curva di distanza a livello di volume, usata solo per i calcoli della matrice. NULL specifica una curva predefinita specializzata conforme alla legge quadrata inversa, in modo che quando la distanza è compresa tra 0,0f e CurveDistanceScaler × 1,0f, non viene applicata alcuna attenuazione. Quando la distanza è maggiore di CurveDistanceScaler × 1,0f, il fattore di amplificazione è (CurveDistanceScaler × 1,0f)/distanza. A distanza di CurveDistanceScaler × 2,0f, il suono sarà a metà volume o -6 dB, a distanza di CurveDistanceScaler × 4,0f, il suono sarà a un quarto volume o -12 dB e così via.

pVolumeCurve e pLFECurve sono indipendenti tra loro. pVolumeCurve non influisce sul volume del canale LFE .

pLFECurve

Curva di roll-off della distanza LFE o NULL per usare la curva predefinita: [0.0f, CurveDistanceScaler ×1.0f], [CurveDistanceScaler ×1.0f, 0,0f]. Un valore NULL per pLFECurve specifica una curva predefinita conforme alla legge quadrata inversa con distanze <= CurveDistanceScaler bloccata in nessuna attenuazione. pVolumeCurve e pLFECurve sono indipendenti tra loro. pLFECurve non influisce sul volume del canale LFE.

pLPFDirectCurve

Curva del coefficiente del percorso diretto (LPF) a basso passaggio o NULL per usare la curva predefinita: [0,0f, 1,0f], [1,0f, 0,75f]. pLPFDirectCurve viene usato solo per i calcoli direct-path di LPF.

pLPFReverbCurve

Curva del coefficiente di riverbero del percorso LPF o NULL per usare la curva predefinita: [0,0f, 0,75f], [1,0f, 0,75f]. pLPFReverbCurve viene usato solo per i calcoli del percorso di riverbero LPF.

pReverbCurve

Curva di distanza del livello di trasmissione di riverbero o NULL per usare la curva predefinita: [0.0f, 1.0f], [1.0f, 0.0f].

CurveDistanceScaler

Scaler della distanza curva usato per ridimensionare le curve di distanza normalizzate alle unità mondiali definite dall'utente e/o per esagerare il loro effetto. Ciò non influisce su altri calcoli. Il valore deve essere compreso nell'intervallo FLT_MIN da FLT_MAX. CurveDistanceScaler viene usato solo per i calcoli matrice, LPF (sia diretti che riverberi).

DopplerScaler

Scalare di spostamento doppler usato per esagerare l'effetto di spostamento doppler. DopplerScaler viene usato solo per i calcoli Doppler e non influisce su altri calcoli. Il valore deve essere compreso nell'intervallo 0,0f da FLT_MAX.

Commenti

X3DAUDIO_EMITTER supporta solo un cono in un singolo virgola. Gli emettitori a più punti sono un modo pratico ed efficiente per gestire un gruppo correlato di origini audio. Molte proprietà vengono condivise tra tutti i punti del canale, ad esempio Doppler, lo stesso turno Doppler viene applicato a tutti i canali dell'emittente. Pertanto, il valore Doppler deve essere calcolato una sola volta, non per punto, come sarebbe necessario con più emettitori a virgola singola separati. Poiché X3DAUDIO_EMITTER ha un solo vettore di orientamento, un cono a più punti sarebbe di utilità limitata, forzando tutti i canali a comportarsi come se fossero alla stessa direzione. Se sono necessari più coni indipendenti, è necessario usare più emettitori a singolo punto, ognuno con il proprio orientamento.

Il tipo di parametro X3DAUDIO_VECTOR viene digitato in DirectX::XMFLOAT3, per fornire valori x , y e z a virgola mobile.

X3DAudio usa un sistema di coordinate cartesiano a sinistra, con valori sull'asse x che aumentano da sinistra a destra, sull'asse y dal basso verso l'alto e sull'asse z da vicino a lontano. Gli Azimuth vengono misurati in senso orario da una determinata direzione di riferimento.

Per usare X3DAudio con coordinate di destra, è necessario negare l'elemento .z di OrientFront, OrientTop, Position e Velocity.

Per le curve di distanza definite dall'utente, il campo distanza del primo punto deve essere 0,0f e il campo distanza dell'ultimo punto deve essere 1,0f.

Se un emittente si sposta oltre una distanza di (CurveDistanceScaler × 1,0f), l'ultimo punto della curva viene usato per calcolare il livello di output del volume. L'ultimo punto è determinato dal seguente:

X3DAUDIO_DISTANCE_CURVE.pPoints[PointCount-1].DSPSetting)

Raggio interno e angolo raggio interno

InnerRadius viene usato per specificare un'area di transizione uniforme intorno al punto di origine come un suono viaggia direttamente attraverso, sopra o sotto il listener. L'elevazione è in considerazione specificando un InnerRadiusAngle, in cui un suono la cui elevazione aumenta o diminuisce, alla fine inizierà a esplodere il suono in più di due altoparlanti.

Quando il raggio interno e l'angolo raggio interno non vengono usati, gli emettitori sono udibili nei due altoparlanti più vicini alla loro posizione/orientamento corrente (o, se direttamente su una linea con l'angolo definito da un altoparlante, solo da tale altoparlante).

Il raggio interno e l'angolo raggio interno non hanno alcun effetto sui emettitori posizionati all'esterno dei coni descritti. All'interno del cono, il suono verrà gradualmente filtrato negli altoparlanti opposti, fino a quando il suono non verrà sentito altrettanto in tutti gli altoparlanti quando l'emittente è alla stessa posizione (o direttamente sopra o sotto) il listener.

Raggio interno e angolo raggio interno

Requisiti della piattaforma

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

Requisiti

Requisito Valore
Intestazione x3daudio.h

Vedi anche

Strutture