Bagikan melalui


struktur X3DAUDIO_EMITTER (x3daudio.h)

Mendefinisikan sumber audio 3D satu titik atau beberapa titik yang digunakan dengan jumlah saluran suara arbitrer.

Sintaks

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;

Anggota

pCone

Penunjuk ke kerujut suara. Hanya digunakan dengan pemancar saluran tunggal untuk matriks, LPF (jalur langsung dan gema), dan perhitungan reverb. NULL menentukan pemancar adalah omnidirectional.

OrientFront

Orientasi arah depan. Nilai ini harus orthonormal dengan OrientTop. OrientFront harus dinormalisasi saat digunakan. Untuk emiter saluran tunggal tanpa kerucut OrientFront hanya digunakan untuk perhitungan sudut emiter. Untuk pemancar multi saluran atau saluran tunggal dengan kerucut OrientFront digunakan untuk matriks, LPF (jalur langsung dan balik), dan perhitungan gema.

OrientTop

Orientasi arah atas. Nilai ini harus orthonormal dengan OrientFront. OrientTop hanya digunakan dengan emiter multi-saluran untuk perhitungan matriks.

Position

Posisi di unit dunia yang ditentukan pengguna. Nilai ini tidak memengaruhi Kecepatan.

Velocity

Vektor kecepatan dalam unit/detik dunia yang ditentukan pengguna. Nilai ini hanya digunakan untuk perhitungan doppler. Ini tidak mempengaruhi Posisi.

InnerRadius

Nilai yang akan digunakan untuk perhitungan radius dalam. Jika InnerRadius adalah 0, maka tidak ada radius dalam yang digunakan, tetapi InnerRadiusAngle masih dapat digunakan. Nilai ini harus antara 0,0f dan MAX_FLT.

InnerRadiusAngle

Nilai yang akan digunakan untuk perhitungan sudut radius dalam. Nilai ini harus antara 0,0f dan X3DAUDIO_PI/4,0.

ChannelCount

Jumlah emiter yang ditentukan oleh struktur X3DAUDIO_EMITTER . Harus lebih besar dari 0.

ChannelRadius

Jarak dari Posisi bahwa saluran akan ditempatkan jika ChannelCount lebih besar dari 1. ChannelRadius hanya digunakan dengan emiter multi-saluran untuk perhitungan matriks. Harus lebih besar dari atau sama dengan 0,0f.

pChannelAzimuths

Tabel posisi saluran, dinyatakan sebagai azimut dalam radian di sepanjang radius saluran sehubungan dengan vektor orientasi depan di bidang ortogonal ke vektor orientasi atas. Azimut X3DAUDIO_2PI menentukan saluran adalah saluran efek frekuensi rendah (LFE). Saluran LFE diposisikan di dasar emiter dan dihitung sehubungan dengan pLFECurve saja, tidak pernah pVolumeCurve. pChannelAzimuths harus memiliki setidaknya elemen ChannelCount , tetapi dapat berupa NULL jika ChannelCount = 1. Nilai tabel harus dalam 0,0f hingga X3DAUDIO_2PI. pChannelAzimuths digunakan dengan emiter multi-saluran untuk perhitungan matriks.

pVolumeCurve

Kurva jarak tingkat volume, yang hanya digunakan untuk perhitungan matriks. NULL menentukan kurva default khusus yang sesuai dengan hukum kuadrat terbalik, sehingga ketika jarak antara 0,0f dan CurveDistanceScaler × 1,0f, tidak ada redaman yang diterapkan. Ketika jarak lebih besar dari CurveDistanceScaler × 1,0f, faktor amplifikasinya adalah (CurveDistanceScaler × 1,0f)/jarak. Pada jarak CurveDistanceScaler × 2,0f, suara akan berada di setengah volume atau -6 dB, pada jarak CurveDistanceScaler × 4,0f, suara akan berada pada volume seperempat atau -12 dB, dan sebagainya.

pVolumeCurve dan pLFECurve independen satu sama lain. pVolumeCurve tidak memengaruhi volume saluran LFE .

pLFECurve

Kurva jarak roll-off LFE, atau NULL untuk menggunakan kurva default: [0.0f, CurveDistanceScaler ×1.0f], [CurveDistanceScaler ×1.0f, 0.0f]. Nilai NULL untuk pLFECurve menentukan kurva default yang sesuai dengan hukum kuadrat terbalik dengan jarak <= CurveDistanceScaler yang dijepit tanpa redaman. pVolumeCurve dan pLFECurve independen satu sama lain. pLFECurve tidak memengaruhi volume saluran non LFE.

pLPFDirectCurve

Kurva jarak koefisien jalur langsung filter low-pass (LPF), atau NULL untuk menggunakan kurva default: [0.0f, 1.0f], [1.0f, 0,75f]. pLPFDirectCurve hanya digunakan untuk perhitungan jalur langsung LPF.

pLPFReverbCurve

Kurva jarak koefisien jalur gaung LPF, atau NULL untuk menggunakan kurva default: [0.0f, 0.75f], [1.0f, 0,75f]. pLPFReverbCurve hanya digunakan untuk perhitungan jalur reverb LPF.

pReverbCurve

Gaung kirim kurva jarak tingkat, atau NULL untuk menggunakan kurva default: [0.0f, 1.0f], [1.0f, 0.0f].

CurveDistanceScaler

Penskala jarak kurva yang digunakan untuk menskalakan kurva jarak yang dinormalisasi ke unit dunia yang ditentukan pengguna, dan/atau untuk melebih-lebihkan efeknya. Ini tidak mempengaruhi perhitungan lain. Nilai harus berada dalam rentang FLT_MIN hingga FLT_MAX. CurveDistanceScaler hanya digunakan untuk matriks, LPF (jalur direct dan reverb), dan perhitungan reverb.

DopplerScaler

Doppler menggeser scaler yang digunakan untuk melebih-lebihkan efek shift Doppler. DopplerScaler hanya digunakan untuk perhitungan Doppler dan tidak memengaruhi perhitungan lainnya. Nilai harus berada dalam rentang 0,0f hingga FLT_MAX.

Keterangan

X3DAUDIO_EMITTER hanya mendukung kerujut dalam emiter satu titik. Emitor multi-titik adalah cara yang nyaman dan efisien untuk mengelola sekelompok sumber suara terkait. Banyak properti dibagikan di antara semua titik saluran, seperti Doppler—pergeseran Doppler yang sama diterapkan ke semua saluran di pemancar. Dengan demikian, nilai Doppler hanya perlu dihitung sekali, bukan per titik seperti yang akan diperlukan dengan beberapa emiter titik tunggal terpisah. Karena X3DAUDIO_EMITTER hanya memiliki satu vektor orientasi, kerucut emitor multi-titik akan memiliki kegunaan terbatas, memaksa semua saluran untuk berperilaku seolah-olah mereka menghadapi arah yang sama. Jika beberapa kerucut independen diperlukan, beberapa emiter titik tunggal harus digunakan, masing-masing dengan orientasinya sendiri.

Jenis parameter X3DAUDIO_VECTOR di ketikkan ke DirectX::XMFLOAT3, untuk menyediakan nilai x , y , dan z floating-point.

X3DAudio menggunakan sistem koordinat Kartesius sebelah kiri, dengan nilai pada sumbu x meningkat dari kiri ke kanan, pada sumbu y dari bawah ke atas, dan pada sumbu z dari dekat ke jauh. Azimuth diukur searah jarang dari arah referensi tertentu.

Untuk menggunakan X3DAudio dengan koordinat tangan kanan, Anda harus meniadakan elemen .z dari OrientFront, OrientTop, Posisi, dan Velocity.

Untuk kurva jarak yang ditentukan pengguna, bidang jarak titik pertama harus 0,0f dan bidang jarak titik terakhir harus 1,0f.

Jika emitor bergerak melampaui jarak (CurveDistanceScaler × 1,0f), titik terakhir pada kurva digunakan untuk menghitung tingkat output volume. Poin terakhir ditentukan oleh hal-hal berikut:

X3DAUDIO_DISTANCE_CURVE.pPoints[PointCount-1].DSPSetting)

Radius Dalam dan Sudut Radius Dalam

InnerRadius digunakan untuk menentukan area transisi halus di sekitar titik asal saat suara berjalan langsung melalui, di atas atau di bawah pendengar. Elevasi diperkirakan dengan menentukan InnerRadiusAngle, di mana suara yang elevasinya meningkat atau menurun, pada akhirnya akan mulai mengeluarkan suara menjadi lebih dari dua speaker.

Ketika Radius Dalam dan Sudut Radius Dalam tidak digunakan, emiter dapat didengar di dua speaker terdekat dengan posisi/orientasinya saat ini (atau, jika langsung pada garis dengan sudut yang ditentukan satu speaker, semata-mata dari satu speaker).

Radius Dalam dan Sudut Radius Dalam tidak berpengaruh pada emiter yang diposisikan di luar kerucut yang mereka jelaskan. Di dalam kerucut, mereka secara bertahap akan menyebabkan suara berdarah ke speaker yang berlawanan, sampai suara akan sama-sama terdengar di semua speaker ketika emiter berada pada posisi yang sama seperti (atau tepat di atas atau di bawah) pendengar.

Radius dalam dan sudut radius dalam

Persyaratan Platform

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

Persyaratan

Persyaratan Nilai
Header x3daudio.h

Lihat juga

Struktur