structure X3DAUDIO_EMITTER (x3daudio.h)
Définit une source audio 3D monopoint ou à plusieurs points qui est utilisée avec un nombre arbitraire de canaux audio.
Syntaxe
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;
Membres
pCone
Pointeur vers un cône sonore. Utilisé uniquement avec des émetteurs à canal unique pour les calculs de matrice, de LPF (chemins directs et de réverbération) et de réverbération. NULL spécifie que l’émetteur est omnidirectionnel.
OrientFront
Orientation de la direction avant. Cette valeur doit être orthonormale avec OrientTop. OrientFront doit être normalisé lorsqu’il est utilisé. Pour les émetteurs à canal unique sans cônes , OrientFront n’est utilisé que pour les calculs d’angle de l’émetteur. Pour les émetteurs multicanaux ou pour un canal unique avec des cônes , OrientFront est utilisé pour les calculs de matrice, de LPF (chemins directs et de réverbération) et de réverbération.
OrientTop
Orientation de la direction supérieure. Cette valeur doit être orthonormale avec OrientFront. OrientTop est utilisé uniquement avec les émetteurs multicanaux pour les calculs de matrice.
Position
Position dans les unités mondiales définies par l’utilisateur. Cette valeur n’affecte pas la vitesse.
Velocity
Vecteur de vélocité dans les unités mondiales définies par l’utilisateur/seconde. Cette valeur est utilisée uniquement pour les calculs doppler. Cela n’affecte pas Position.
InnerRadius
Valeur à utiliser pour les calculs de rayon interne. Si InnerRadius est 0, aucun rayon interne n’est utilisé, mais InnerRadiusAngle peut toujours être utilisé. Cette valeur doit être comprise entre 0,0f et MAX_FLT.
InnerRadiusAngle
Valeur à utiliser pour les calculs d’angle de rayon interne. Cette valeur doit être comprise entre 0,0f et X3DAUDIO_PI/4.0.
ChannelCount
Nombre d’émetteurs définis par la structure X3DAUDIO_EMITTER . Doit être supérieure à 0.
ChannelRadius
Distance à partir de La position où les canaux seront placés si ChannelCount est supérieur à 1. ChannelRadius est utilisé uniquement avec les émetteurs multicanaux pour les calculs de matrice. Doit être supérieur ou égal à 0,0f.
pChannelAzimuths
Tableau des positions de canal, exprimées sous forme d’azimut en radians le long du rayon du canal par rapport au vecteur d’orientation avant dans le plan orthogonal vers le vecteur d’orientation supérieure. Un azimut de X3DAUDIO_2PI spécifie qu’un canal est un canal à effets basse fréquence (LFE). Les canaux LFE sont positionnés à la base de l’émetteur et sont calculés par rapport à pLFECurve uniquement, jamais pVolumeCurve. pChannelAzimuths doit avoir au moins des éléments ChannelCount , mais peut avoir la valeur NULL si ChannelCount = 1. Les valeurs de table doivent être comprises dans 0,0f pour X3DAUDIO_2PI. pChannelAzimuths est utilisé avec des émetteurs multicanaux pour les calculs de matrice.
pVolumeCurve
Courbe de distance au niveau du volume, qui est utilisée uniquement pour les calculs de matrice. NULL spécifie une courbe par défaut spécialisée qui est conforme à la loi carrée inverse, de sorte que lorsque la distance est comprise entre 0,0f et CurveDistanceScaler × 1.0f, aucune atténuation n’est appliquée. Lorsque la distance est supérieure à CurveDistanceScaler × 1.0f, le facteur d’amplification est (CurveDistanceScaler × 1.0f)/distance. À une distance de CurveDistanceScaler × 2.0f, le son sera à un demi-volume ou -6 dB, à une distance de CurveDistanceScaler × 4.0f, le son sera à un quart de volume ou -12 dB, et ainsi de suite.
pVolumeCurve et pLFECurve sont indépendants les uns des autres. pVolumeCurve n’affecte pas le volume du canal LFE .
pLFECurve
Courbe de distance de substitution LFE ou NULL pour utiliser la courbe par défaut : [0.0f, CurveDistanceScaler ×1.0f], [CurveDistanceScaler ×1.0f, 0.0f]. Une valeur NULL pour pLFECurve spécifie une courbe par défaut conforme à la loi carrée inverse avec distances <= CurveDistanceScaler serrée à aucune atténuation. pVolumeCurve et pLFECurve sont indépendants les uns des autres. pLFECurve n’affecte pas le volume de canal non LFE.
pLPFDirectCurve
Courbe de distance à coefficient direct du filtre passe-bas (LPF) ou NULL pour utiliser la courbe par défaut : [0.0f, 1.0f], [1.0f, 0.75f]. pLPFDirectCurve est utilisé uniquement pour les calculs de chemin direct LPF.
pLPFReverbCurve
Courbe de coefficient de chemin de réverbération LPF ou NULL pour utiliser la courbe par défaut : [0,0f, 0,75f], [1.0f, 0.75f]. pLPFReverbCurve est utilisé uniquement pour les calculs de chemin de réverbération LPF.
pReverbCurve
Courbe de distance de niveau d’envoi de réverbération ou NULL pour utiliser la courbe par défaut : [0.0f, 1.0f], [1.0f, 0.0f].
CurveDistanceScaler
Scaler de distance de courbe utilisé pour mettre à l’échelle des courbes de distance normalisées en unités mondiales définies par l’utilisateur, et/ou pour exagérer leur effet. Cela n’affecte pas les autres calculs. La valeur doit se trouver dans la plage FLT_MIN à FLT_MAX. CurveDistanceScaler est utilisé uniquement pour les calculs de matrice, de LPF (chemins directs et de réverbération) et de réverbération.
DopplerScaler
Scaler de décalage Doppler utilisé pour exagérer l’effet de décalage Doppler. DopplerScaler est utilisé uniquement pour les calculs Doppler et n’affecte aucun autre calcul. La valeur doit se trouver dans la plage 0,0f pour FLT_MAX.
Remarques
X3DAUDIO_EMITTER prend uniquement en charge un cône dans un émetteur à point unique. Les émetteurs multipoints sont un moyen pratique et efficace de gérer un groupe de sources sonores connexes. De nombreuses propriétés sont partagées entre tous les points de canal, comme Doppler. Le même décalage Doppler est appliqué à tous les canaux de l’émetteur. Par conséquent, la valeur Doppler n’a besoin d’être calculée qu’une seule fois, et non par point comme cela serait nécessaire avec plusieurs émetteurs à point unique distincts. Comme X3DAUDIO_EMITTER n’a qu’un seul vecteur d’orientation, un cône émetteur multipoint serait d’une utilité limitée, obligeant tous les canaux à se comporter comme s’ils faisaient face à la même direction. Si plusieurs cônes indépendants sont nécessaires, plusieurs émetteurs à point unique doivent être utilisés, chacun avec sa propre orientation.
Le type de paramètre X3DAUDIO_VECTOR est tapé sur DirectX ::XMFLOAT3, pour fournir des valeurs à virgule flottante x , y et z.
X3DAudio utilise un système de coordonnées cartésien gauche, avec des valeurs sur l’axe des x augmentant de gauche à droite, sur l’axe y de bas en haut et sur l’axe z de près à loin. Les azimuts sont mesurés dans le sens des aiguilles d’une montre à partir d’une direction de référence donnée.
Pour utiliser X3DAudio avec des coordonnées à droite, vous devez nier l’élément .z de OrientFront, OrientTop, Position et Velocity.
Pour les courbes de distance définies par l’utilisateur, le champ de distance du premier point doit être de 0,0f et le champ de distance du dernier point doit être de 1,0f.
Si un émetteur se déplace au-delà d’une distance de (CurveDistanceScaler × 1.0f), le dernier point de la courbe est utilisé pour calculer le niveau de sortie du volume. Le dernier point est déterminé par les éléments suivants :
X3DAUDIO_DISTANCE_CURVE.pPoints[PointCount-1].DSPSetting)
Rayon interne et angle de rayon interne
InnerRadius est utilisé pour spécifier une zone de transition fluide autour du point d’origine pendant qu’un son traverse, au-dessus ou au-dessous de l’écouteur. L’élévation est prise en compte par la spécification d’un InnerRadiusAngle, par lequel un son dont l’élévation augmente ou diminue, commence finalement à saigner le son en plus de deux haut-parleurs.Lorsque le rayon intérieur et l’angle de rayon interne ne sont pas utilisés, les émetteurs sont audibles dans les deux haut-parleurs les plus proches de leur position/orientation actuelle (ou, si directement sur une ligne avec l’angle défini d’un haut-parleur, uniquement à partir de celui-ci).
Le rayon intérieur et l’angle de rayon interne n’ont aucun effet sur les émetteurs positionnés en dehors des cônes qu’ils décrivent. À l’intérieur du cône, ils provoquent progressivement le saigne du son dans les haut-parleurs opposés, jusqu’à ce que le son soit également entendu dans tous les haut-parleurs lorsque l’émetteur est à la même position que (ou directement au-dessus ou au-dessous) de l’écouteur.
Configuration requise pour la plateforme
Windows 10 (XAudio2.9) ; Windows 8, Windows Phone 8 (XAudio 2.8) ; Kit de développement logiciel (SDK) DirectX (XAudio 2.7)Configuration requise
Condition requise | Valeur |
---|---|
En-tête | x3daudio.h |