메모
이 설명서는 개발자 대상을 대상으로 합니다. 디바이스에서 공간 사운드를 사용하도록 설정하는 최종 사용자 지원은 Windows 10 공간 사운드를 켜는 방법을 참조하세요.
Microsoft Spatial Sound는 Xbox, Windows 및 HoloLens 2에서 공간 사운드 지원을 위한 Microsoft 플랫폼 수준 솔루션으로, 서라운드 및 고도(수신기 위 또는 아래) 오디오 신호를 모두 사용할 수 있습니다. 공간 소리는 지원되는 플랫폼의 UWP(유니버설 Windows 플랫폼) 앱뿐만 아니라 Windows 데스크톱(Win32) 앱에서 활용할 수 있습니다. 공간 사운드 API를 통해 개발자는 3D 공간의 위치에서 오디오를 내보내는 오디오 개체를 만들 수 있습니다. 동적 오디오 개체를 사용하면 시간에 따라 변경될 수 있는 공간의 임의의 위치에서 오디오를 내보낼 수 있습니다. 또한 오디오 개체가 실제 또는 가상화된 스피커를 나타낼 수 있는 17개의 미리 정의된 정적 채널(8.1.4.4) 중 하나에서 소리를 내보내는 것을 지정할 수 있습니다. 실제 출력 형식은 사용자가 선택하며 Microsoft 공간 사운드 구현에서 추상화할 수 있습니다. 오디오는 코드 또는 콘텐츠 변경 없이 기존 스피커, 헤드폰 및 홈 시어터 수신기에 제공됩니다. 이 플랫폼은 HDMI 및 스테레오 헤드폰 출력, 헤드폰용 DTS:X 및 스테레오 헤드폰용 Windows 소닉 인코딩 모두에 대한 실시간 Dolby Atmos 인코딩을 완벽하게 지원합니다. 마지막으로, Microsoft 공간 사운드 앱은 시스템 혼합 정책을 준수하며, 해당 오디오는 공간적으로 인식되지 않는 앱과도 혼합됩니다. Microsoft 공간 사운드 지원도 Media Foundation에 통합됩니다. 미디어 파운데이션을 사용하는 앱은 추가 구현 없이 Dolby Atmos 콘텐츠를 성공적으로 재생할 수 있습니다.
Microsoft Spatial Sound의 공간 사운드는 Dolby Atmos를 지원하는 TV, 홈 시어터 및 사운드 바에서 사용할 수 있습니다. 공간 사운드는 소비자가 소유한 모든 헤드폰과 함께 사용할 수 있으며, 플랫폼에서 헤드폰용 Windows Sonic, Dolby Atmos for Headphones, 또는 DTS Headphone:X를 사용하여 오디오를 렌더링합니다.
Microsoft 공간 사운드 활성화
개발자든 소비자이든 사용자는 공간화된 소리를 들으려면 디바이스에서 Microsoft 공간 사운드를 사용하도록 설정해야 합니다.
Windows
Windows PC에서 이 작업은 지정된 사운드 출력 디바이스의 속성 페이지를 통해 수행됩니다. 소리 제어판에서 출력 디바이스를 선택하고 디바이스 속성을 클릭합니다. 페이지의 공간 사운드 섹션에서 디바이스가 공간 사운드를 지원하는 경우 공간 사운드 형식 드롭다운에서 사용 가능한 형식 중 하나를 선택할 수 있습니다.
공간 사운드를 사용하도록 설정합니다.
작업 표시줄에서 Volume 아이콘을 마우스 오른쪽 단추로 클릭하여 Microsoft 공간 소리를 사용하도록 설정할 수도 있습니다.
작업 표시줄에서 공간 소리를 사용하도록 설정하기
Xbox
Xbox Microsoft 공간 소리 기능은 항상 소비자에게 제공되며 제공 -> 볼륨 및 오디오 출력 아래의 Windows 설정을 통해 사용하도록 설정됩니다.
HDMI 오디오 단추는 AVR(오디오 비디오 수신기) 또는 사운드바 또는 Xbox 콘솔에 직접 연결된 TV에서 지원하는 모든 형식으로 채워집니다. "광학 오디오" 옵션은 이전 Xbox 콘솔에서만 사용할 수 있으며 Xbox Series X|S 이상에서는 사용할 수 없습니다.
HDMI 오디오에서 "Dolby Atmos for Home Theater(HDMI만 해당)" 또는 "DTS:X(홈 시어터 전용)" 옵션을 선택하면 사용자가 Dolby Access 또는 DTS Sound Unbound 앱을 아직 설치하지 않은 경우 다운로드하여 설치하라는 메시지가 표시됩니다.
헤드폰 오디오 아래의 헤드셋 형식 드롭다운에서 헤드폰용 Dolby Atmos, DTS Headphone:X 또는 Windows Sonic을 선택하세요.
Microsoft 공간 소리를 사용할 수 없는 경우(예: 포함된 랩톱 스테레오 스피커로 재생하거나 사용자가 Microsoft 공간 사운드를 명시적으로 사용하도록 설정하지 않은 경우ISpatialAudioClient::GetMaxDynamicObjectCount 애플리케이션에서 반환되는 사용 가능한 동적 개체 수는 0입니다.
HoloLens 2
HoloLens 2에서 Microsoft 공간 사운드는 기본적으로 사용하도록 설정되어 있으며 헤드폰용 Windows 소닉용으로 특별히 설계된 하드웨어 DSP 오프로드를 사용합니다.
공간 사운드 및 오디오 미들웨어 Microsoft
많은 앱 및 게임 개발자는 정교한 제작 및 오디션 도구를 포함하는 타사 오디오 렌더링 엔진 솔루션을 사용합니다. Microsoft 기존 제작 환경에서 Microsoft Spatial Sound를 구현하기 위해 이러한 솔루션 공급자 중 몇 가지와 파트너십을 맺고 있습니다. 여기서 설명하는 API는 종종 앱의 관점에서 추상화되어 있습니다. 이런 API는 앱이 인스턴스화할 수 있는 DSP(디지털 신호 처리) 플러그인으로 래핑되며, 앱의 오디오 구현자가 이를 사용하여 Microsoft 공간 사운드 채널 베드에 믹싱하거나, 서브믹스에 연결하거나, 원하는 대로 개별 음성을 동적 객체 인스턴스 플러그인에 보낼 수 있도록 합니다. Microsoft 공간 사운드에 대한 지원 수준은 오디오 미들웨어 솔루션 공급자에게 문의하세요.
Microsoft 오디오 렌더러용 공간 음향
많은 오디오 렌더러는 WINDOWS WASAPI(오디오 세션 API) IAudioClient 엔드포인트를 대상으로 합니다. 여기서 애플리케이션은 혼합 및 형식 준수 오디오 데이터의 버퍼를 WASAPI 오디오 싱크에 공급하고, 전달된 버퍼는 다른 클라이언트와 혼합, 최종 시스템 수준 처리 및 렌더링에 사용됩니다.
Microsoft 공간 사운드 공간 엔드포인트는 ISpatialAudioClient로 구현되며 IAudioClient 유사점이 많습니다. 채널 침대를 형성하는 정적 사운드 개체를 지원하며, 최대 8.1.4.4개 채널(청자 주위의 8개 채널 – 좌측, 우측, 가운데, 측면 좌측, 측면 우측, 뒤 좌측, 뒤 우측 및 뒤 가운데; 1개의 저주파 효과 채널; 청자 위의 4개 채널; 청자 아래의 4개 채널)을 지원합니다. 또한 3D 공간에 임의로 배치할 수 있는 동적 사운드 개체를 지원합니다.
ISpatialAudioClient 대한 일반적인 구현 코딩 패턴은 다음과 같습니다.
- 정적 및/또는 동적 오디오 개체를 만듭니다.
- 시스템에서 렌더링할 수 있도록 각 개체의 오디오 버퍼에 각 프레임을 공급합니다.
- 앱이 원하는 빈도(또는 드물게)만큼 요청 시 동적 개체의 3D 위치를 업데이트합니다.
현재 출력 형식(스피커 또는 헤드폰; Windows Sonic for Headphones, Dolby Atmos 또는 DTS Headphone:X)는 위의 구현에서 추상화됩니다. 앱 개발자는 형식에 따라 피벗할 필요 없이 공간 사운드에 집중할 수 있습니다. 출력 형식에 따라 동작을 전환하려는 앱은 사용 중인 형식을 쿼리할 수 있지만 추상화는 앱이 이러한 형식을 처리할 필요가 없음을 의미합니다.
Microsoft의 오디오 렌더러와 공간 사운드 통합
ISpatialAudioClient 데이터를 사용하는 오디오 싱크이므로 오디오 렌더러에는 오디오 데이터와 상호 작용하고 오디오 데이터를 전달하는 방법에 대한 몇 가지 옵션이 있습니다. 일반적으로 사용되는 세 가지 통합 기술이 있습니다(오디오 미들웨어를 사용하는 타이틀의 경우 이러한 옵션에 따라 사용할 수 있는 동일한 플러그 인이 표시됨).
- 7.1.4 팬너 및 마스터 음성: 이미 7.1 엔드포인트를 지원하는 렌더러는 ISpatialAudioClient 정적 채널 베드에서 지원하는 4개의 추가 높이 채널에 대한 지원을 추가하도록 선택할 수 있습니다. 이전에 했던 모든 채널 이동(이미 x,y, z 좌표를 활용했을 가능성이 있음)은 이제 이러한 높이 채널을 포함하도록 업데이트할 수 있습니다. 이는 렌더러 및 앱 오디오 워크플로, 신호, 흐름 및 혼합 제어에 대한 중단을 최소화하는 경우가 많습니다. 헤드폰을 통해 전체 앱 믹스가 공간화되므로 스테레오 음악조차도 수신기에서 "외부화"로 인식될 수 있습니다.
- 기존 엔드포인트를 유지하고 7.1.4 버스(및 팬너)을 추가합니다. 일부 타이틀의 경우, 기존 스테레오 WASAPI 엔드포인트("귀에 직접" 콘텐츠용)와 함께 7.1.4(또는 최대 8.1.4.4)를 지원하는 ISpatialAudioClient 정적 채널 침대를 사용하여 두 개의 엔드포인트를 유지하도록 선택할 수 있습니다. 물론 두 혼합 간의 상호 작용을 관리하면 동기화가 유지되지만 지정된 시간에 활성 상태인 WASAPI 및 ISAC 인스턴스는 모두 처리에 동일한 버퍼 크기와 클록을 사용하므로 콘텐츠 작성자에 추가적인 문제가 발생합니다.
- 특정 음성 또는 서브믹스동적 사운드 개체 사용: 가장 상세하고 정확한 위치 지정을 제공하지만 혼합 불투명도를 만들 수 있습니다. 이 기술에는 동적 사운드 개체를 ISpatialAudioClient를 사용하는 것이 포함됩니다. 메타데이터와 오디오 버퍼가 렌더러에 전달되므로 이러한 소리는 앱 믹스의 나머지 부분에 불투명합니다. 또한 사용 가능한 동적 사운드 개체 수가 제한되어 있으므로 렌더러는 컬링, 사운드 공동 위치, 정적 채널 베드에 혼합 등 우선 순위 지정 기술을 구현하는 것을 고려해야 합니다. 게임은 수신기 위로 이동하는 헬리콥터와 같은 개별 "영웅"소리에 이 기술을 자주 사용했습니다.
렌더러는 이러한 접근 방식 간에 혼합하고 일치시킬 수도 있습니다.
Microsoft 공간 사운드 런타임 리소스 함의
Windows 및 Xbox 사용 가능한 음성 수는 사용 중인 형식에 따라 달라집니다. Dolby Atmos 형식은 총 32개의 활성 개체를 지원합니다(따라서 7.1.4 채널 침대를 사용하는 경우 20개의 추가 동적 사운드 개체가 활성화될 수 있음). Windows Sonic for Headphones는 총 128개의 활성 개체를 지원하며, LFE(저주파 효과) 채널은 실제로 개체로 계산되지 않으므로 8.1.4.4 채널 침대를 사용할 때 112개의 동적 사운드 개체가 활성화될 수 있습니다.
Xbox One 게임 콘솔에서 실행되는 유니버설 Windows 플랫폼 앱의 경우 실시간 인코딩(홈 시어터용 Dolby Atmos, 헤드폰용 Dolby Atmos, 홈 시어터용 DTS:X, DTS Headphone:X 및 헤드폰용 Windows 소닉)은 CPU 비용 없이 하드웨어에서 수행됩니다.
2303 Xbox OS 업데이트 및 GDK(게임 개발 키트)부터 Xbox 리소스 제한이 다음 값으로 업데이트됩니다.
| 형식 | 최대 정적 개체(채널 베드) | 최대 동적 개체 Xbox Series X|S, UWP 앱 및 >=2303 GDK |
최대 동적 개체 Xbox Series X|S, XDK 및 <2303 GDK |
최대 동적 개체 Xbox One |
|---|---|---|---|---|
| 홈 시어터용 Dolby Atmos(HDMI) | 12 (7.1.4) | 20 | 20 | 20 |
| 홈 시어터용 DTS:X(HDMI) | 17 (8.1.4.4) | 20 | 20 | 16 |
| 돌비 애트모스 (헤드폰) | 17 (8.1.4.4) | 128 | 20 | 16 |
| DTS 헤드폰:X(헤드폰) | 17 (8.1.4.4) | 200 | 20 | 16 |
| Windows 소닉(헤드폰) | 17 (8.1.4.4) | 220 | 20 | 15 |
빌드 22621을 Windows 5월 서비스 릴리스부터 Windows 리소스 제한이 다음 값으로 업데이트됩니다.
| 형식 | 최대 정적 객체(채널 베드) | 최대 동적 개체 Windows |
최대 동적 개체 HoloLens 2 |
|---|---|---|---|
| Dolby Atmos 홈 시어터(HDMI) | 12 (7.1.4) | 20 | N/A |
| 홈 시어터용 DTS:X(HDMI) | 17 (8.1.4.4) | 32 | 해당 없음 |
| 돌비 애트모스 (헤드폰) | 17 (8.1.4.4) | 128 | 해당 없음 |
| Dolby Atmos(기본 제공 스피커) | 17 (8.1.4.4) | 128 | 해당 없음 |
| DTS 헤드폰:X(헤드폰) | 17 (8.1.4.4) | 128 | 해당 없음 |
| DTS:X Ultra(기본 제공 스피커) | 17 (8.1.4.4) | 128 | N/A |
| Windows 소닉(헤드폰) | 17 (8.1.4.4) | 128 | 31 |
이전 Windows, Xbox 및 HoloLens 릴리스의 경우 다음 리소스 제한이 적용됩니다.
| 형식 | 최대 정적 개체(채널 베드) | 최대 동적 개체 Xbox One |
최대 동적 개체 Windows |
최대 동적 오브젝트 HoloLens 2 |
|---|---|---|---|---|
| 홈 시어터용 Dolby Atmos(HDMI) | 12 (7.1.4) | 20 | 20 | 해당 없음 |
| 홈 시어터용 DTS:X(HDMI) | 17 (8.1.4.4) | 16 | 32 | N/A |
| 돌비 애트모스 (헤드폰) | 17 (8.1.4.4) | 16 | 16 | 해당 없음 (N/A) |
| Dolby Atmos(기본 제공 스피커) | 17 (8.1.4.4) | 해당 없음 | 16 | 해당 없음 (N/A) |
| DTS 헤드폰:X(헤드폰) | 17 (8.1.4.4) | 16 | 32 | 해당 없음 |
| DTS Ultra(기본 제공 스피커) | 17 (8.1.4.4) | N/A | 32 | 해당 없음 |
| 헤드폰용 Windows 소닉 | 17 (8.1.4.4) | 15 | 112 | 31 |
또한 앱은 다음과 같은 리소스 영향을 고려해야 합니다.
- 스토리지/디스크 대역폭: 7.1.4로 미리 제작된 선형 콘텐츠는 일반적으로 7.1 선형 콘텐츠보다 데이터 양이 더 큽니다 (하지만 인식 코덱은 이미 채널 간 상관관계를 활용하여 추가되는 오디오 데이터가 실제 채널 수의 50%만큼 더 많지 않도록 상당히 줄입니다).
- 기타 디지털 신호 처리 비용: 이전의 일부 글로벌 효과는 이제 동적 사운드 개체별로 인스턴스화될 수 있습니다. 또한 일부 콘텐츠 작성자는 일부 DSP 효과를 업데이트하여 추가 채널을 지원하거나 고유하게 사용할 수 있습니다.
Microsoft 공간 음향 및 사운드 공간화 신호
Microsoft 공간 소리는 수신기 주변의 이상화된 구체에서 사운드 위치 지정 시뮬레이션에 초점을 맞췄습니다. Windows Sonic for Headphones, DTS Headphone:X 및 Dolby Atmos는 헤드폰에 스피커 매핑 및 가상화를 구현하지만, 콘텐츠 작성자 지원 방식으로 이미 구현된 사운드 공간 시뮬레이션의 다른 많은 측면은 기존 엔진에 남아 있습니다. 콘텐츠 제작자는 Doppler, 거리 기반 감쇠 및 필터링, 폐색 및 방해, 환경 반향과 같은 공간 신호를 위해 이전에 가지고 있던 기존 게임 도구 및 프로세스를 계속 사용합니다.
추가 리소스
- Microsoft 공간 사운드 샘플 GitHub 저장소
- Dolby는 앱 개발 기술 자료 및 Dolby Access 지원을 포함하여 Dolby Atmos 및 Dolby Access 앱과 관련된 다양한 지원 리소스를 제공합니다.
공간 사운드 인터페이스
| 인터페이스 | 설명 |
|---|---|
| ISpatialAudioClient | 클라이언트가 3D 공간의 위치에서 오디오를 내보내는 오디오 스트림을 만들 수 있습니다. |
| ISpatialAudioObject | 사용자 기준으로 3D 공간의 특정 위치에서 렌더링할 오디오 데이터를 제공하는 객체를 나타냅니다. |
| ISpatialAudioObjectRenderStream | 스트림 시작, 중지 및 재설정을 포함하여 공간 오디오 개체 렌더링 스트림을 제어하는 메서드를 제공합니다. |
| ISpatialAudioObjectRenderStreamNotify | 공간 오디오 클라이언트가 ISpatialAudioObjectRenderStream의 상태 변경에 응답하도록 알림을 제공합니다. |
메모
Xbox One 개발 키트(XDK) 타이틀에서 ISpatialAudioClient 인터페이스를 사용하는 경우 먼저 EnableSpatialAudio를 호출한 후 IMMDeviceEnumerator::EnumAudioEndpoints 또는 IMMDeviceEnumerator::GetDefaultAudioEndpoint를 호출해야 합니다. 이렇게 하지 않으면 활성화 호출에서 E_NOINTERFACE 오류가 반환됩니다. EnableSpatialAudio는 XDK 타이틀에만 사용할 수 있으며, Xbox One 실행되는 유니버설 Windows 플랫폼 앱이나 Xbox One 이외의 디바이스에는 호출할 필요가 없습니다.
공간 사운드 구조
| 구조 | 설명 |
|---|---|
| SpatialAudioObjectRenderStreamActivationParams | 공간 오디오 렌더링 스트림에 대한 활성화 매개 변수를 나타냅니다. |
| SpatialAudioClientActivationParams | 공간 오디오 렌더링 스트림에 대한 선택적 활성화 매개 변수를 나타냅니다. |
공간 음향 열거형
| 열거 | 설명 |
|---|---|
| AudioObjectType | ISpatialAudioObject의 형식을 지정합니다. |