Suara Spasial untuk pengembang aplikasi untuk Windows, Xbox, dan Hololens 2

Catatan

Dokumentasi ini ditargetkan untuk audiens pengembang. Untuk dukungan pengguna akhir untuk mengaktifkan suara spasial di perangkat Anda, lihat Cara mengaktifkan suara spasial di Windows 10.

Microsoft Spatial Sound adalah solusi tingkat platform Microsoft untuk dukungan suara spasial pada Xbox, Windows, dan HoloLens 2, memungkinkan isyarat audio surround dan elevation (di atas atau di bawah listener). Suara spasial dapat dimanfaatkan oleh aplikasi desktop Windows (Win32) serta aplikasi Platform Windows Universal (UWP) pada platform yang didukung. API suara spasial memungkinkan pengembang membuat objek audio yang memancarkan audio dari posisi dalam ruang 3D. Objek audio dinamis memungkinkan Anda memancarkan audio dari posisi arbitrer di ruang, yang dapat berubah dari waktu ke waktu. Anda juga dapat menentukan bahwa objek audio mengeluarkan suara dari salah satu dari 17 saluran statis yang telah ditentukan sebelumnya (8.1.4.4) yang dapat mewakili speaker nyata atau virtual. Format output aktual dipilih oleh pengguna, dan dapat diabstraksi dari implementasi Microsoft Spatial Sound; audio akan disajikan ke speaker, headphone, dan penerima home theater yang ada tanpa memerlukan perubahan kode atau konten apa pun. Platform ini sepenuhnya mendukung pengodean Dolby Atmos real time untuk output headphone HDMI dan stereo, DTS:X untuk Headphone, dan pengodean Windows Sonic untuk Headphone untuk headphone stereo. Akhirnya, aplikasi Microsoft Spatial Sound mematuhi kebijakan pencampuran sistem, dan audionya juga akan dicampur dengan aplikasi yang tidak sadar spasial. Dukungan Microsoft Spatial Sound juga diintegrasikan ke dalam Media Foundation; aplikasi yang menggunakan fondasi media dapat berhasil memutar konten Dolby Atmos tanpa implementasi tambahan.

Suara spasial dengan Microsoft Spatial Sound mendukung TV, teater rumah, dan bilah suara yang mendukung Dolby Atmos. Suara spasial juga dapat digunakan dengan sepasang headphone yang mungkin dimiliki konsumen, dengan audio yang dirender oleh platform menggunakan Windows Sonic untuk Headphone, Dolby Atmos untuk Headphone, atau DTS Headphone:X.

Mengaktifkan Suara Spasial Microsoft

Baik sebagai pengembang atau konsumen, pengguna harus mengaktifkan Microsoft Spatial Sound di perangkat mereka untuk mendengar suara spasial.

Jendela

Pada PC Windows, ini dilakukan melalui halaman properti untuk perangkat output suara tertentu. Dari panel Kontrol suara, pilih perangkat output dan klik Properti perangkat. Di bagian Suara spasial halaman, jika perangkat mendukung suara spasial, Anda dapat memilih salah satu format yang tersedia dari menu dropdown Format suara spasial.

enable spatial sound in the sound control panel

Anda juga dapat mengaktifkan Microsoft Spatial Sound dengan mengklik kanan ikon Volume di taskbar.

enable spatial sound from the taskbar

Xbox

Di Xbox, kemampuan Microsoft Spatial Sound selalu tersedia untuk konsumen, dan diaktifkan melalui Aplikasi Pengaturan di bawah Umum -> Volume & output audio.

Tombol audio HDMI diisi dengan semua format yang didukung oleh Audio Video Receiver (AVR) atau Soundbar atau TV yang terhubung langsung ke konsol Xbox Anda. Opsi "Audio optik" hanya tersedia di konsol Xbox yang lebih lama dan bukan di Xbox Series X|S ke atas.

Screenshot of the General Volume & Output settings page showing the HDMI audio dropdown.

Perhatikan bahwa memilih opsi "Dolby Atmos untuk home theater (khusus HDMI)" atau "DTS:X untuk home theater (hanya HDMI)" dalam audio HDMI akan meminta pengguna untuk mengunduh dan menginstal aplikasi Dolby Access atau DTS Sound Unbound jika belum diinstal

Screenshot of the General Volume & Output settings page showing the selection of DTS Digital Surround.

Pilih Dolby Atmos untuk Headphone, DTS Headphone:X, atau Windows Sonic untuk Headphone dari menu dropdown format Headset di bawah Audio headset

Screenshot of the General Volume & Output settings page showing the enabling spatial sound for headphones.

Ketika Microsoft Spatial Sound tidak tersedia (misalnya, saat bermain ke speaker stereo laptop yang disematkan, atau jika pengguna belum mengaktifkan Suara Spasial Microsoft secara eksplisit per di atas), jumlah objek dinamis yang tersedia yang dikembalikan oleh ISpatialAudioClient::GetMaxDynamicObjectCount ke aplikasi akan menjadi 0.

HoloLens 2

Pada HoloLens 2, Microsoft Spatial Sound diaktifkan secara default dan menggunakan offload DSP perangkat keras yang dirancang khusus untuk Windows Sonic untuk Headphone.

Middleware Suara dan Audio Spasial Microsoft

Banyak pengembang aplikasi dan game menggunakan solusi mesin penyajian audio pihak ketiga, yang sering mencakup alat penulisan dan audisi canggih. Microsoft telah bermitra dengan beberapa penyedia solusi ini untuk mengimplementasikan Microsoft Spatial Sound di lingkungan penulisan yang ada. Ini akan sering berarti API yang dibahas di sini diabstraksi dari tampilan aplikasi; mereka dibungkus sebagai plug-in pemrosesan sinyal digital (DSP) yang dapat diinstansiasi aplikasi, dan mana yang dapat digunakan pelaksana audio aplikasi untuk mencampur ke tempat tidur saluran Microsoft Spatial Sound, submix, atau mengirim suara individual ke plug-in instans objek dinamis sesuai keinginan. Konsultasikan dengan penyedia solusi middleware audio Anda untuk tingkat dukungan mereka untuk Microsoft Spatial Sound.

Suara Spasial Microsoft untuk Perender Audio

Banyak perender audio menargetkan titik akhir IAudioClient API Sesi Audio Windows (WASAPI), di mana aplikasi memberi umpan buffer data audio campuran dan format yang sesuai ke sink audio WASAPI; buffer yang dikirimkan kemudian dikonsumsi untuk pencampuran dengan klien lain, pemrosesan tingkat sistem akhir, dan penyajian.

Titik akhir spasial Microsoft Spatial Sound diimplementasikan sebagai ISpatialAudioClient, yang memiliki banyak kesamaan dengan IAudioClient. Ini mendukung objek suara statis yang membentuk tempat tidur saluran, dengan dukungan hingga saluran 8.1.4.4 (8 saluran di sekitar pendengar - Kiri, Kanan, Tengah, Sisi Kiri, Kanan Samping, Kiri Belakang, Kanan Belakang, dan Pusat Belakang; 1 saluran efek frekuensi rendah; 4 saluran di atas pendengar; 4 saluran di bawah pendengar). Dan mendukung objek suara dinamis , yang dapat diposisikan secara segan-segan dalam ruang 3D.

Pola pengkodatan implementasi umum untuk ISpatialAudioClient adalah:

  • Buat objek audio statis dan/atau dinamis.
  • Umpan buffer audio setiap objek setiap bingkai sehingga sistem dapat merendernya.
  • Perbarui posisi 3D objek dinamis sesuai permintaan – sesering (atau jarang) sesuai keinginan aplikasi.

Perhatikan bahwa format output saat ini (speaker atau headphone; Windows Sonic untuk Headphone, Dolby Atmos, atau DTS Headphone:X) diabstraksi dari implementasi di atas - pengembang aplikasi dapat fokus pada suara spasial tanpa perlu melakukan pivot berdasarkan format. Aplikasi yang menginginkan perilakunya berbeda berdasarkan format output dapat mengkueri format yang digunakan, tetapi abstraksi berarti aplikasi tidak diperlukan untuk menangani format ini.

Integrasi Suara Spasial Microsoft dengan Perender Audio

Karena ISpatialAudioClient adalah sink audio yang mengonsumsi data, perender audio memiliki beberapa opsi cara berinteraksi dan mengirimkan data audio ke dalamnya. Ada tiga teknik integrasi yang umum digunakan (dan untuk judul yang menggunakan middleware audio, Anda mungkin melihat plug-in yang setara tersedia berdasarkan opsi ini):

  • 7.1.4 panner dan suara penguasaan: Perender yang sudah mendukung 7.1 titik akhir dapat memilih untuk hanya menambahkan dukungan untuk empat saluran tinggi tambahan yang didukung oleh tempat tidur saluran statis ISpatialAudioClient . Setiap saluran panning yang sebelumnya mereka lakukan (kemungkinan sudah memanfaatkan koordinat x,y, z) dapat diperbarui untuk sekarang menyertakan saluran tinggi ini. Ini sering menawarkan gangguan paling sedikit untuk penyaji dan alur kerja audio aplikasi, sinyal, alur, dan kontrol campuran. Melalui headphone, perhatikan bahwa campuran aplikasi lengkap akan di spasialisasi - sehingga bahkan musik stereo dapat dianggap sebagai "eksternalisasi" dari pendengar.
  • Pertahankan titik akhir yang ada, plus tambahkan bus 7.1.4 (dan panner): Beberapa judul dapat memilih untuk mempertahankan dua titik akhir: titik akhir WASAPI stereo yang ada (untuk konten "langsung ke telinga" yang tidak dimaksudkan untuk di spasialisasi) bersama tempat tidur saluran statis ISpatialAudioClient yang mendukung 7.1.4 (atau bahkan hingga 8.1.4.4). Tentu saja, mengelola interaksi antara dua campuran memberikan tantangan tambahan kepada pembuat konten, meskipun sinkronisasi dipertahankan, karena instans WASAPI dan ISAC aktif pada waktu tertentu memang menggunakan ukuran dan jam buffer yang sama untuk pemrosesan.
  • Gunakan objek suara dinamis untuk suara atau submix tertentu: Menawarkan mungkin posisi yang paling rinci/akurat, tetapi berpotensi menciptakan opasitas campuran, teknik ini melibatkan penggunaan objek suara dinamis ISpatialAudioClient . Perhatikan bahwa metadata ditambah buffer audio dikirimkan ke perender, sehingga suara ini akan buram ke campuran aplikasi lainnya. Selain itu, karena ada sejumlah terbatas objek suara dinamis yang tersedia, perender perlu mempertimbangkan untuk menerapkan teknik prioritas - pemusnahan, lokasi bersama suara, memadukan ke tempat tidur saluran statis, dan sebagainya. Game sering menggunakan teknik ini untuk suara "hero" individu, seperti helikopter yang akan bergerak di atas listener.

Perender juga dapat mencampur dan mencocokkan antara pendekatan ini.

Implikasi Sumber Daya Runtime Suara Spasial Microsoft

Pada Windows dan Xbox, jumlah suara yang tersedia bervariasi berdasarkan format yang digunakan. Format Dolby Atmos mendukung total objek aktif 32 (jadi jika tempat tidur saluran 7.1.4 sedang digunakan, 20 objek suara dinamis tambahan dapat aktif). Windows Sonic untuk Headphone mendukung total 128 objek aktif, dengan saluran Efek Frekuensi Rendah (LFE) tidak benar-benar dihitung sebagai objek -- jadi ketika tempat tidur saluran 8.1.4.4 digunakan, 112 objek suara dinamis dapat aktif.

Untuk aplikasi Platform Windows Universal yang berjalan di konsol game Xbox One, pengodean realtime (untuk Dolby Atmos untuk Home Theater, Dolby Atmos untuk Headphone, DTS:X untuk Home Theater, DTS Headphone:X, dan Windows Sonic untuk Headphone) dilakukan dalam perangkat keras tanpa biaya CPU.

Dimulai dengan pembaruan OS Xbox 2303 dan Game Development Kit (GDK), batas sumber daya pada Xbox diperbarui ke nilai berikut:

Format Objek Statis Maks (Tempat Tidur Saluran) Objek Dinamis Maks
Xbox Series X|S, aplikasi UWP & >=2303 GDK
Objek Dinamis Maks
Xbox Series X|S, XDK & <2303 GDK
Objek Dinamis Maks
Xbox One
Dolby Atmos untuk Home Theater (HDMI) 12 (7.1.4) 20 20 20
DTS:X untuk Home Theater (HDMI) 17 (8.1.4.4) 20 20 16
Dolby Atmos (Headphone) 17 (8.1.4.4) 128 20 16
Headphone DTS:X (Headphone) 17 (8.1.4.4) 200 20 16
Windows Sonic (Headphone) 17 (8.1.4.4) 220 20 15

Dimulai dengan rilis layanan Mei untuk Windows build 22621, batas sumber daya pada Windows diperbarui ke nilai berikut:

Format Objek Statis Maks (Tempat Tidur Saluran) Objek Dinamis Maks
Jendela
Objek Dinamis Maks
HoloLens 2
Teater rumah Dolby Atmos (HDMI) 12 (7.1.4) 20 T/A
DTS:X untuk home theater (HDMI) 17 (8.1.4.4) 32 T/A
Dolby Atmos (Headphone) 17 (8.1.4.4) 128 T/A
Dolby Atmos (Speaker Bawaan ) 17 (8.1.4.4) 128 T/A
Headphone DTS:X (Headphone) 17 (8.1.4.4) 128 T/A
DTS:X Ultra (Speaker Bawaan) 17 (8.1.4.4) 128 T/A
Windows Sonic (Headphone) 17 (8.1.4.4) 128 31

Untuk rilis Windows, Xbox, dan HoloLens sebelumnya, batas sumber daya berikut berlaku.

Format Objek Statis Maks (Tempat Tidur Saluran) Objek Dinamis Maks
Xbox One
Objek Dinamis Maks
Jendela
Objek Dinamis Maks
HoloLens 2
Dolby Atmos untuk teater rumah (HDMI) 12 (7.1.4) 20 20 T/A
DTS:X untuk home theater (HDMI) 17 (8.1.4.4) 16 32 T/A
Dolby Atmos (Headphone) 17 (8.1.4.4) 16 16 T/A
Dolby Atmos (Speaker Bawaan) 17 (8.1.4.4) T/A 16 T/A
Headphone DTS:X (Headphone) 17 (8.1.4.4) 16 32 T/A
DTS Ultra (Speaker Bawaan) 17 (8.1.4.4) T/A 32 T/A
Windows Sonic untuk Headphone 17 (8.1.4.4) 15 112 31

Aplikasi juga harus mempertimbangkan implikasi sumber daya berikut:

  • Bandwidth penyimpanan/disk: Konten linier yang telah ditulis sebelumnya ke 7.1.4 biasanya akan lebih besar dari 7,1 konten linier (meskipun codec persepsi sudah sering memanfaatkan korelasi saluran untuk membuat ini jauh lebih kecil dari 50% saluran data audio yang sebenarnya)
  • Biaya pemrosesan sinyal digital lainnya: Beberapa efek global sebelumnya sekarang dapat menjadi instans per objek suara dinamis. Selain itu, beberapa pembuat konten mungkin ingin memperbarui beberapa efek DSP untuk mendukung saluran tambahan atau menggunakannya secara unik.

Isyarat Spasial Suara dan Spasialisasi Suara Microsoft

Microsoft Spatial Sound berfokus pada simulasi penempatan suara pada bola ideal di sekitar pendengar. Windows Sonic untuk Headphone, DTS Headphone:X, dan Dolby Atmos mengimplementasikan pemetaan speaker dan virtualisasi ke headphone, tetapi perhatikan bahwa banyak aspek lain dari simulasi spasial suara, yang biasanya sudah diimplementasikan dengan cara yang mendukung pembuat konten, diserahkan ke mesin yang ada. Pembuat konten terus menggunakan alat dan proses game yang ada yang sebelumnya mereka miliki untuk isti asal spasial seperti Doppler, pelemahan dan pemfilteran berbasis jarak, oklusi dan penghalang, dan gema lingkungan.

Sumber Tambahan

Antarmuka Suara Spasial

Antarmuka Deskripsi
ISpatialAudioClient Memungkinkan klien membuat aliran audio yang memancarkan audio dari posisi dalam ruang 3D.
ISpatialAudioObject Mewakili objek yang menyediakan data audio yang akan dirender dari posisi dalam ruang 3D, relatif terhadap pengguna.
ISpatialAudioObjectRenderStream Menyediakan metode untuk mengontrol aliran render objek audio spasial, termasuk memulai, menghentikan, dan mengatur ulang aliran.
ISpatialAudioObjectRenderStreamNotify Menyediakan pemberitahuan bagi klien audio spasial untuk merespons perubahan status ISpatialAudioObjectRenderStream.

 

Catatan

Saat menggunakan antarmuka ISpatialAudioClient pada judul Xbox One Development Kit (XDK), Anda harus terlebih dahulu memanggil EnableSpatialAudio sebelum memanggil IMMDeviceEnumerator::EnumAudioEndpoints atau IMMDeviceEnumerator::GetDefaultAudioEndpoint. Kegagalan untuk melakukannya akan mengakibatkan kesalahan E_NOINTERFACE dikembalikan dari panggilan ke Aktifkan. EnableSpatialAudio hanya tersedia untuk judul XDK, dan tidak perlu dipanggil untuk aplikasi Platform Windows Universal yang berjalan di Xbox One, atau untuk perangkat non-Xbox One.

 

Struktur Suara Spasial

Struktur Deskripsi
SpatialAudioObjectRenderStreamActivationParams Mewakili parameter aktivasi untuk aliran render audio spasial.
SpatialAudioClientActivationParams Mewakili parameter aktivasi opsional untuk aliran render audio spasial.

 

Enumerasi Suara Spasial

Enumeration Deskripsi
AudioObjectType Menentukan jenis ISpatialAudioObject.