Dźwięk przestrzenny dla deweloperów aplikacji dla systemów Windows, Xbox i Hololens 2
Nuta
Ta dokumentacja jest przeznaczona dla odbiorców deweloperów. Aby uzyskać pomoc techniczną dotyczącą włączania dźwięku przestrzennego na urządzeniu, zobacz Jak włączyć dźwięk przestrzenny w systemie Windows 10.
Microsoft Spatial Sound jest rozwiązaniem na poziomie platformy firmy Microsoft do obsługi dźwięku przestrzennego na konsolach Xbox, Windows i HoloLens 2, włączając zarówno sygnały dźwiękowe otaczające, jak i podniesienia (powyżej lub poniżej odbiornika). Dźwięk przestrzenny można wykorzystać przez aplikacje klasyczne systemu Windows (Win32), a także aplikacje platformy uniwersalnej systemu Windows (UWP) na obsługiwanych platformach. Interfejsy API dźwięku przestrzennego umożliwiają deweloperom tworzenie obiektów audio emitujących dźwięk z pozycji w przestrzeni 3D. Dynamiczne obiekty audio umożliwiają emitować dźwięk z dowolnego położenia w przestrzeni, co może się zmieniać w czasie. Można również określić, że obiekty dźwiękowe emitują dźwięk z jednego ze wstępnie zdefiniowanych kanałów statycznych (8.1.4.4), które mogą reprezentować rzeczywiste lub zwirtualizowane głośniki. Rzeczywisty format danych wyjściowych jest wybierany przez użytkownika i można go wyodrębnić z implementacji dźwięku przestrzennego firmy Microsoft; dźwięk zostanie przedstawiony istniejącym głośnikom, słuchawkom i odbiornikom kina domowego bez konieczności wprowadzania zmian w kodzie lub zawartości. Platforma w pełni obsługuje kodowanie Dolby Atmos w czasie rzeczywistym dla wyjścia ze słuchawek HDMI i stereo, DTS:X dla słuchawek i Windows Sonic do kodowania słuchawki stereo. Na koniec aplikacje Microsoft Spatial Sound przestrzegają zasad mieszania systemu, a ich dźwięk będzie również mieszany z aplikacjami bez obsługi przestrzennej. Obsługa dźwięku przestrzennego firmy Microsoft jest również zintegrowana z programem Media Foundation; aplikacje korzystające z podstawy multimediów mogą pomyślnie odtwarzać zawartość Dolby Atmos bez dodatkowej implementacji.
Dźwięk przestrzenny z dźwiękiem Microsoft Spatial Sound obsługuje telewizory, kina domowe i paski dźwiękowe, które obsługują dolby Atmos. Dźwięk przestrzenny może być również używany z dowolną parą słuchawek, które użytkownik może posiadać, a dźwięk renderowany przez platformę przy użyciu systemu Windows Sonic dla słuchawek, Dolby Atmos dla słuchawek lub DTS Headphone:X.
Włączanie dźwięku przestrzennego firmy Microsoft
Niezależnie od tego, czy jest to deweloper, czy użytkownik musi włączyć dźwięk Microsoft Spatial Sound na swoim urządzeniu, aby usłyszeć dźwięk przestrzenny.
Windows
Na komputerach z systemem Windows odbywa się to za pośrednictwem strony właściwości danego urządzenia wyjściowego dźwięku. W panelu sterowania dźwięku wybierz urządzenie wyjściowe i kliknij pozycję Właściwości urządzenia. W sekcji dźwięk przestrzenny strony, jeśli urządzenie obsługuje dźwięk przestrzenny, możesz wybrać jeden z dostępnych formatów z listy rozwijanej format dźwięku przestrzennego.
Możesz również włączyć dźwięk przestrzenny Microsoft Spatial, klikając prawym przyciskiem myszy ikonę woluminu na pasku zadań.
Xbox
Na konsoli Xbox funkcje dźwięku przestrzennego firmy Microsoft są zawsze dostępne dla użytkownika i są włączone za pośrednictwem aplikacji Ustawienia w obszarze Ogólne — > głośność & audio.
Przycisk audio HDMI jest wypełniony wszystkimi formatami obsługiwanymi przez odbiornik Audio Video (AVR) lub soundbar lub telewizor podłączony bezpośrednio do konsoli Xbox. Opcja "Audio optycznego" jest dostępna tylko w starszych konsolach Xbox, a nie w konsoli Xbox Series X|S i nowszych.
Należy pamiętać, że wybranie opcji "Dolby Atmos dla kina domowego (tylko HDMI)" lub "DTS:X dla kina domowego (tylko HDMI)" w audio HDMI wyświetli użytkownikowi monit o pobranie i zainstalowanie aplikacji Dolby Access lub DTS Sound Unbound, jeśli jeszcze nie zainstalowano
Wybierz pozycję Dolby Atmos dla słuchawek, słuchawek DTS:X lub Windows Sonic for Headphones z listy rozwijanej w obszarze Audio audio
Jeśli dźwięk Microsoft Spatial Sound nie jest dostępny (na przykład podczas odtwarzania w osadzonych głośnikach stereo laptopa lub jeśli użytkownik nie włączył jawnie dźwięku Microsoft Spatial Sound na powyższe), liczba dostępnych obiektów dynamicznych zwracanych przez ISpatialAudioClient::GetMaxDynamicObjectCount do aplikacji będzie wynosić 0.
HoloLens 2
Na urządzeniu HoloLens 2 dźwięk przestrzenny firmy Microsoft jest domyślnie włączony i korzysta ze sprzętowego odciążania DSP zaprojektowanego specjalnie dla systemu Windows Sonic for Headphones.
Oprogramowanie pośredniczące Microsoft Spatial Sound i Audio
Wielu deweloperów aplikacji i gier korzysta z rozwiązań aparatu renderowania audio innych firm, które często obejmują zaawansowane narzędzia do tworzenia i inspekcji. Firma Microsoft współpracuje z kilkoma z tych dostawców rozwiązań w celu zaimplementowania oprogramowania Microsoft Spatial Sound w istniejących środowiskach tworzenia. Często oznacza to, że omówione tutaj interfejsy API są abstrahowane od widoku aplikacji; Są one opakowane jako wtyczki przetwarzania sygnałów cyfrowych (DSP), które aplikacja może utworzyć wystąpienie, i które implementator audio aplikacji może używać do łączenia się z łóżkiem kanału dźwięku Microsoft Spatial Sound, podmiksem lub wysyłania pojedynczych głosów do wtyczki wystąpienia obiektu dynamicznego zgodnie z potrzebami. Skontaktuj się z dostawcą rozwiązania oprogramowania pośredniczącego audio, aby uzyskać pomoc techniczną dotyczącą dźwięku przestrzennego Firmy Microsoft.
Microsoft Spatial Sound for Audio Renderers
Wiele modułów renderujących audio jest przeznaczonych dla interfejsu API sesji audio systemu Windows (WASAPI) punktu końcowego IAudioClient, gdzie aplikacja przekazuje mieszanych i sformatowanych danych dźwiękowych do ujścia audio WASAPI; dostarczone są następnie używane do mieszania z innymi klientami, końcowym przetwarzaniem na poziomie systemu i renderowaniem.
Punkty końcowe przestrzenne dźwięku przestrzennego firmy Microsoft są implementowane jako ISpatialAudioClient, które mają wiele podobieństw do IAudioClient. Obsługuje on statycznych obiektów dźwiękowych tworzących łóżko kanałowe, z obsługą do 8.1.4.4 kanałów (8 kanałów wokół odbiornika — lewa, prawa, środkowa, po lewej stronie, z prawej strony, z powrotem w prawo i z tyłu; 1 kanał efektów o niskiej częstotliwości; 4 kanały poniżej odbiornika). Obsługuje dynamicznych obiektów dźwiękowych, które mogą być arbitralnie rozmieszczone w przestrzeni 3D.
Ogólny wzorzec kodowania implementacji dla ISpatialAudioClient to:
- Utwórz statyczne i/lub dynamiczne obiekty audio.
- Przekaż bufor audio każdego obiektu w każdej ramce, aby system mógł go renderować.
- Aktualizuj pozycje obiektów dynamicznych 3D na żądanie — tak często (lub rzadko), jak aplikacja chce.
Należy pamiętać, że bieżący format danych wyjściowych (głośniki lub słuchawki; Windows Sonic for Headphones, Dolby Atmos lub DTS Headphone:X) jest abstrahowany od powyższej implementacji — deweloper aplikacji może skupić się na dźwięku przestrzennym bez konieczności przestawiania na podstawie formatu. Aplikacje, które chcą, aby ich zachowanie różniło się na podstawie formatu wyjściowego, może wykonywać zapytania dotyczące używanego formatu, ale abstrakcja oznacza, że aplikacja nie jest wymagana do obsługi tych formatów.
Integracja dźwięku przestrzennego firmy Microsoft z programami renderujących dźwięk
Ponieważ ISpatialAudioClient jest ujściem dźwięku, który zużywa dane, renderator audio ma kilka opcji interakcji z danymi i dostarczania do nich danych dźwiękowych. Istnieją trzy powszechnie używane techniki integracji (a w przypadku tytułów korzystających z oprogramowania pośredniczącego audio mogą być dostępne równoważne wtyczki dostępne na podstawie tych opcji):
- 7.1.4 panners i mastering voice: Programy renderujące, które obsługują już punkty końcowe 7.1, mogą po prostu dodać obsługę czterech dodatkowych kanałów wysokości, które obsługuje ISpatialAudioClient statycznym łóżku kanału. Wszystkie wcześniej przesuwane kanały (prawdopodobnie wykorzystujące współrzędne x,y, z) można zaktualizować, aby teraz uwzględnić te kanały wysokości. Często zapewnia to najmniejszą przerwę w renderowaniu i przepływach pracy dźwięku aplikacji, sygnałach, przepływach i mieszanych kontrolkach. Na słuchawkach należy pamiętać, że pełna mieszanka aplikacji będzie przestrzenna — więc nawet muzyka stereo może być postrzegana jako "zewnętrzna" od odbiornika.
- zachować istniejący punkt końcowy, plus dodać magistralę 7.1.4 (i panners): Niektóre tytuły mogą zdecydować się na utrzymanie dwóch punktów końcowych: ich istniejący punkt końcowy STEREO WASAPI (dla zawartości "bezpośredniej do uszu", która nie ma być przestrzenna) obok ISpatialAudioClient statycznego łóżka kanału obsługującego 7.1.4 (lub nawet do 8.1.4.4). Oczywiście zarządzanie interakcjami między dwoma kombinacjami stanowi dodatkowe wyzwania dla twórców zawartości, chociaż synchronizacja jest utrzymywana, ponieważ zarówno wystąpienia WASAPI, jak i ISAC aktywne w danym czasie używają tego samego rozmiaru buforu i zegara do przetwarzania.
- Użyj dynamicznych obiektów dźwiękowych dla niektórych głosów lub podmiksów: Oferowanie być może najbardziej szczegółowe/dokładne pozycjonowanie, ale potencjalnie tworzenie nieprzezroczystości mieszanej, ta technika polega na użyciu ISpatialAudioClient dynamicznych obiektów dźwiękowych. Należy pamiętać, że metadane i bufor audio są dostarczane do modułu renderowania, więc te dźwięki będą nieprzezroczyste w pozostałej części zestawu aplikacji. Ponadto, ponieważ istnieje ograniczona liczba dostępnych dynamicznych obiektów dźwiękowych, moduł renderujący będzie musiał rozważyć zaimplementowanie technik priorytetyzacji — uścisk, współlokację dźwięku, połączenie ze statycznym łóżkiem kanału itd. Gry często używały tej techniki dla pojedynczych dźwięków "hero", takich jak helikopter, który będzie poruszał się nad odbiornikiem.
Programy renderowane mogą również mieszać i dopasowywać między tymi podejściami.
Implikacje dotyczące zasobów środowiska uruchomieniowego dźwięku microsoft spatial
W systemach Windows i Xbox liczba dostępnych głosów różni się w zależności od używanego formatu. Formaty Dolby Atmos obsługują 32 całkowite aktywne obiekty (więc jeśli łóżko kanału 7.1.4 jest w użyciu, 20 dodatkowych dynamicznych obiektów dźwiękowych może być aktywny). System Windows Sonic for Headphones obsługuje 128 całkowitych aktywnych obiektów, a kanał Efektów niskich częstotliwości (LFE) nie jest w rzeczywistości liczone jako obiekt - więc gdy łóżko kanału 8.1.4.4 jest w użyciu, 112 dynamicznych obiektów dźwiękowych może być aktywny.
W przypadku aplikacji platformy uniwersalnej systemu Windows działających w konsolach gier Xbox One kodowanie w czasie rzeczywistym (dla Dolby Atmos for Home Theater, Dolby Atmos for Słuchawki, DTS:X dla kina domowego, słuchawki DTS:X i Windows Sonic for Headphones) jest wykonywane na sprzęcie bez kosztu procesora CPU.
Począwszy od aktualizacji systemu operacyjnego Xbox 2303 i zestawu Game Development Kit (GDK), limity zasobów na konsoli Xbox są aktualizowane do następujących wartości:
Format | Maksymalna liczba obiektów statycznych (łóżko kanału) | Maksymalna liczba obiektów dynamicznych Xbox Series X|S, aplikacje platformy UWP & >=2303 GDK |
Maksymalna liczba obiektów dynamicznych Xbox Series X|S, XDK & <2303 GDK |
Maksymalna liczba obiektów dynamicznych Xbox One |
---|---|---|---|---|
Dolby Atmos for Home Theater (HDMI) | 12 (7.1.4) | 20 | 20 | 20 |
DTS:X dla kina domowego (HDMI) | 17 (8.1.4.4) | 20 | 20 | 16 |
Dolby Atmos (słuchawki) | 17 (8.1.4.4) | 128 | 20 | 16 |
Słuchawki DTS:X (słuchawki) | 17 (8.1.4.4) | 200 | 20 | 16 |
Windows Sonic (słuchawki) | 17 (8.1.4.4) | 220 | 20 | 15 |
Począwszy od wersji obsługi z maja do kompilacji systemu Windows 22621, limity zasobów w systemie Windows są aktualizowane do następujących wartości:
Format | Maksymalna liczba obiektów statycznych (łóżko kanału) | Maksymalna liczba obiektów dynamicznych Windows |
Maksymalna liczba obiektów dynamicznych HoloLens 2 |
---|---|---|---|
Dolby Atmos home theater (HDMI) | 12 (7.1.4) | 20 | N/A |
DTS:X dla kina domowego (HDMI) | 17 (8.1.4.4) | 32 | N/A |
Dolby Atmos (słuchawki) | 17 (8.1.4.4) | 128 | N/A |
Dolby Atmos (wbudowane głośniki ) | 17 (8.1.4.4) | 128 | N/A |
Słuchawki DTS:X (słuchawki) | 17 (8.1.4.4) | 128 | N/A |
DTS:X Ultra (wbudowane głośniki) | 17 (8.1.4.4) | 128 | N/A |
Windows Sonic (słuchawki) | 17 (8.1.4.4) | 128 | 31 |
W poprzednich wersjach systemów Windows, Xbox i HoloLens obowiązują następujące limity zasobów.
Format | Maksymalna liczba obiektów statycznych (łóżko kanału) | Maksymalna liczba obiektów dynamicznych Xbox One |
Maksymalna liczba obiektów dynamicznych Windows |
Maksymalna liczba obiektów dynamicznych HoloLens 2 |
---|---|---|---|---|
Dolby Atmos do kina domowego (HDMI) | 12 (7.1.4) | 20 | 20 | N/A |
DTS:X dla kina domowego (HDMI) | 17 (8.1.4.4) | 16 | 32 | N/A |
Dolby Atmos (słuchawki) | 17 (8.1.4.4) | 16 | 16 | N/A |
Dolby Atmos (wbudowane głośniki) | 17 (8.1.4.4) | N/A | 16 | N/A |
Słuchawki DTS:X (słuchawki) | 17 (8.1.4.4) | 16 | 32 | N/A |
DTS Ultra (wbudowane głośniki) | 17 (8.1.4.4) | N/A | 32 | N/A |
Windows Sonic dla słuchawek | 17 (8.1.4.4) | 15 | 112 | 31 |
Aplikacje powinny również uwzględniać następujące implikacje dotyczące zasobów:
- przepustowość magazynu/dysku: wstępnie utworzona zawartość liniowa do wersji 7.1.4 będzie zwykle większa niż 7,1 zawartość liniowa (chociaż koderów perceptyjnych często korzystają z korelacji kanału, aby znacznie mniej niż 50% bardziej rzeczywistych kanałów danych audio)
- Inne koszty przetwarzania sygnałów cyfrowych: Niektóre wcześniej efekty globalne mogą teraz stać się wystąpieniami na obiekt dźwięku dynamicznego. Ponadto niektórzy twórcy zawartości mogą chcieć zaktualizować niektóre efekty DSP, aby obsługiwać dodatkowe kanały lub używać ich unikatowo.
Microsoft Spatial Sound and Sound Spatialization Cues
Microsoft Spatial Sound koncentruje się na symulacji pozycjonowania dźwięku w idealizowanej sferze wokół odbiornika. Windows Sonic for Headphones, DTS Headphone:X i Dolby Atmos implementują mapowanie głośników i wirtualizację na słuchawki, ale należy pamiętać, że wiele innych aspektów symulacji przestrzennej dźwięku, już zwykle implementowanych w sposób obsługujący twórcę zawartości, są pozostawione istniejącym aparatom. Twórcy zawartości nadal korzystają z istniejących narzędzi i procesów gry, które wcześniej mieli dla takich wskazówek przestrzennych jak Doppler, tłumienie i filtrowanie na odległość, okluzji i przeszkody oraz odgłos środowiska.
Dodatkowe zasoby
- repozytorium github przykładów dźwięku przestrzennego Microsoft Spatial Sound
- Dolby oferuje wiele zasobów pomocy technicznej związanych z dolby Atmos i aplikacją Dolby Access w https://developer.dolby.com.
Interfejsy dźwiękowe przestrzenne
Interfejs | Opis |
---|---|
ISpatialAudioClient | Umożliwia klientowi tworzenie strumieni audio emitujących dźwięk z pozycji w przestrzeni 3D. |
ISpatialAudioObject | Reprezentuje obiekt, który dostarcza dane audio do renderowania z pozycji w przestrzeni 3D względem użytkownika. |
ISpatialAudioObjectRenderStream | Udostępnia metody kontrolowania strumienia renderowania obiektu audio przestrzennego, w tym uruchamiania, zatrzymywania i resetowania strumienia. |
ISpatialAudioObjectRenderStreamNotify | Dostarcza powiadomienia dla klientów dźwięku przestrzennego w celu reagowania na zmiany w stanie ISpatialAudioObjectRenderStream. |
Nuta
W przypadku korzystania z interfejsów ISpatialAudioClient w tytule zestawu Xbox One Development Kit (XDK) należy najpierw wywołać EnableSpatialAudio przed wywołaniem IMMDeviceEnumerator::EnumAudioEndpoints lub IMMDeviceEnumerator::GetDefaultAudioEndpoint. Niepowodzenie w tym celu spowoduje zwrócenie E_NOINTERFACE błędu z wywołania do aktywacji. EnableSpatialAudio jest dostępna tylko dla tytułów XDK i nie musi być wywoływana dla aplikacji platformy uniwersalnej systemu Windows działających na konsoli Xbox One ani dla żadnych urządzeń innych niż Xbox One.
Struktury dźwięku przestrzennego
Struktura | Opis |
---|---|
SpatialAudioObjectRenderStreamActivationParams | Reprezentuje parametry aktywacji dla strumienia renderowania dźwięku przestrzennego. |
SpatialAudioClientActivationParams | Reprezentuje opcjonalne parametry aktywacji dla strumienia renderowania dźwięku przestrzennego. |
Wyliczenia dźwięku przestrzennego
Wyliczenie | Opis |
---|---|
AudioObjectType | Określa typ obiektu ISpatialAudioObject. |