Windows, Xbox 및 Hololens 2용 앱 개발자를 위한 공간 사운드

참고 항목

이 설명서는 개발자 대상을 대상으로 합니다. 디바이스에서 공간 사운드를 사용하도록 설정하는 최종 사용자 지원은 Windows 10에서 공간 사운드를 켜는 방법을 참조하세요.

Microsoft Spatial Sound는 Xbox, Windows 및 HoloLens 2에서 공간 사운드 지원을 위한 Microsoft의 플랫폼 수준 솔루션으로, 서라운드 및 고도(수신기 위 또는 아래) 오디오 신호를 모두 사용할 수 있습니다. 공간 소리는 Windows 데스크톱(Win32) 앱과 지원되는 플랫폼의 UWP(유니버설 Windows 플랫폼) 앱에서 활용할 수 있습니다. 공간 사운드 API를 통해 개발자는 3D 공간의 위치에서 오디오를 내보내는 오디오 개체를 만들 수 있습니다. 동적 오디오 개체를 사용하면 시간에 따라 변경될 수 있는 공간의 임의의 위치에서 오디오를 내보낼 수 있습니다. 또한 오디오 개체가 실제 또는 가상화된 스피커를 나타낼 수 있는 17개의 미리 정의된 정적 채널(8.1.4.4) 중 하나에서 소리를 내보내는 것을 지정할 수 있습니다. 실제 출력 형식은 사용자가 선택하며 Microsoft Spatial Sound 구현에서 추상화할 수 있습니다. 오디오는 코드 또는 콘텐츠 변경 없이 기존 스피커, 헤드폰 및 홈 시어터 수신기에 제공됩니다. 이 플랫폼은 HDMI 및 스테레오 헤드폰 출력, 헤드폰용 DTS:X 및 스테레오 헤드폰용 헤드폰용 Windows Sonic 인코딩 모두에 대한 실시간 Dolby Atmos 인코딩을 완벽하게 지원합니다. 마지막으로, Microsoft Spatial Sound 앱은 시스템 혼합 정책을 준수하며 해당 오디오는 공간적으로 인식되지 않는 앱과도 혼합됩니다. Microsoft Spatial Sound 지원도 Media Foundation에 통합됩니다. 미디어 파운데이션을 사용하는 앱은 추가 구현 없이 Dolby Atmos 콘텐츠를 성공적으로 재생할 수 있습니다.

Microsoft Spatial Sound를 사용하는 공간 사운드는 Dolby Atmos를 지원하는 TV, 홈 시어터 및 사운드 바를 지원합니다. 공간 사운드는 소비자가 소유할 수 있는 모든 헤드폰과 함께 사용할 수 있으며, 플랫폼이 헤드폰용 Windows Sonic, Dolby Atmos for Headphones 또는 DTS Headphone:X를 사용하여 렌더링한 오디오를 사용할 수 있습니다.

Microsoft Spatial Sound 사용

개발자든 소비자이든 사용자는 공간화된 소리를 들으려면 장치에서 Microsoft Spatial Sound를 사용하도록 설정해야 합니다.

Windows

Windows PC에서 이 작업은 지정된 사운드 출력 디바이스의 속성 페이지를 통해 수행됩니다. 소리 제어판에서 출력 디바이스를 선택하고 디바이스 속성을 클릭합니다. 페이지의 공간 사운드 섹션에서 디바이스가 공간 사운드를 지원하는 경우 공간 사운드 형식 드롭다운에서 사용 가능한 형식 중 하나를 선택할 수 있습니다.

enable spatial sound in the sound control panel

작업 표시줄에서 볼륨 아이콘을 마우스 오른쪽 단추로 클릭하여 Microsoft Spatial Sound를 사용하도록 설정할 수도 있습니다.

enable spatial sound from the taskbar

Xbox

Xbox에서 Microsoft 공간 사운드 기능은 항상 소비자가 사용할 수 있으며 일반 -> 볼륨 및 오디오 출력 아래의 설정 앱을 통해 사용하도록 설정됩니다.

HDMI 오디오 단추는 AVR(오디오 비디오 수신기) 또는 사운드바 또는 Xbox 콘솔에 직접 연결된 TV에서 지원하는 모든 형식으로 채워집니다. "광학 오디오" 옵션은 이전 Xbox 콘솔에서만 사용할 수 있으며 Xbox 시리즈 X|S 이상에서는 사용할 수 없습니다.

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

HDMI 오디오에서 "Dolby Atmos for Home Theater(HDMI만 해당)" 또는 "DTS:X(홈 시어터 전용)" 옵션을 선택하면 사용자가 Dolby Access 또는 DTS Sound Unbound 앱을 아직 설치하지 않은 경우 다운로드하여 설치하라는 메시지가 표시됩니다.

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

헤드셋 오디오 아래의 헤드셋 형식 드롭다운에서 Dolby Atmos for Headphones, DTS Headphone:X 또는 헤드폰용 Windows Sonic 선택합니다.

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

Microsoft Spatial Sound를 사용할 수 없는 경우(예: 포함된 랩톱 스테레오 스피커로 재생할 때 또는 사용자가 위에서 Microsoft Spatial Sound를 명시적으로 사용하도록 설정하지 않은 경우) ISpatialAudioClient::GetMaxDynamicObjectCount에서 애플리케이션에 반환하는 사용 가능한 동적 개체 수는 0입니다.

HoloLens 2

HoloLens 2에서 Microsoft Spatial Sound는 기본적으로 사용하도록 설정되며 헤드폰용 Windows Sonic 위해 특별히 설계된 하드웨어 DSP 오프로드를 사용합니다.

Microsoft 공간 사운드 및 오디오 미들웨어

많은 앱 및 게임 개발자는 정교한 제작 및 오디션 도구를 포함하는 타사 오디오 렌더링 엔진 솔루션을 사용합니다. Microsoft는 이러한 여러 솔루션 공급자와 협력하여 기존 제작 환경에서 Microsoft Spatial Sound를 구현했습니다. 여기서 설명하는 API가 앱의 보기에서 추상화되는 경우가 많습니다. 앱이 인스턴스화할 수 있는 DSP(디지털 신호 처리) 플러그 인으로 래핑되며, 앱의 오디오 구현자가 Microsoft 공간 사운드 채널 침대, 서브믹스 또는 동적 개체 인스턴스 플러그 인에 개별 음성을 원하는 대로 혼합하는 데 사용할 수 있는 플러그 인으로 래핑됩니다. Microsoft Spatial Sound에 대한 지원 수준은 오디오 미들웨어 솔루션 공급자에게 문의하세요.

오디오 렌더러용 Microsoft 공간 소리

많은 오디오 렌더러는 WASAPI(Windows Audio Session API) IAudioClient 엔드포인트를 대상으로 합니다. 여기서 애플리케이션은 혼합 및 형식 준수 오디오 데이터의 버퍼를 WASAPI 오디오 싱크에 공급합니다. 그런 다음 전달된 버퍼는 다른 클라이언트와 혼합, 최종 시스템 수준 처리 및 렌더링에 사용됩니다.

Microsoft Spatial Sound 공간 엔드포인트는 IAudioClient와 많은 유사점이 있는 ISpatialAudioClient구현됩니다. 최대 8.1.4.4개 채널(수신기 주변의 8개 채널 – 왼쪽, 오른쪽, 가운데, 왼쪽, 오른쪽, 오른쪽 뒤로, 뒤로, 오른쪽 및 뒤로 중심, 1개의 낮은 빈도 효과 채널, 수신기 위의 4개 채널, 수신기 아래의 4개 채널)를 지원하는 채널 침대를 구성하는 정적 사운드 개체를 지원합니다. 또한 3D 공간에 임의로 배치할 수 있는 동적 사운드 개체를 지원합니다.

ISpatialAudioClient에 대한 일반적인 구현 코딩 패턴은 다음과 같습니다.

  • 정적 및/또는 동적 오디오 개체를 만듭니다.
  • 시스템에서 렌더링할 수 있도록 각 개체의 오디오 버퍼에 각 프레임을 공급합니다.
  • 앱이 원하는 빈도(또는 드물게)만큼 요청 시 동적 개체의 3D 위치를 업데이트합니다.

현재 출력 형식(스피커 또는 헤드폰; 헤드폰용 Windows Sonic, Dolby Atmos 또는 DTS Headphone:X)는 위의 구현에서 추상화됩니다. 앱 개발자는 형식에 따라 피벗할 필요 없이 공간 사운드에 집중할 수 있습니다. 출력 형식에 따라 동작을 전환하려는 앱은 사용 중인 형식을 쿼리할 수 있지만 추상화는 앱이 이러한 형식을 처리할 필요가 없음을 의미합니다.

오디오 렌더러와 Microsoft 공간 사운드 통합

ISpatialAudioClient는 데이터를 사용하는 오디오 싱크이므로 오디오 렌더러에는 오디오 데이터와 상호 작용하고 오디오 데이터를 전달하는 방법에 대한 몇 가지 옵션이 있습니다. 일반적으로 사용되는 세 가지 통합 기술이 있습니다(오디오 미들웨어를 사용하는 타이틀의 경우 이러한 옵션에 따라 사용할 수 있는 동일한 플러그 인이 표시됨).

  • 7.1.4 패너 및 마스터 음성: 이미 7.1 엔드포인트를 지원하는 렌더러는 ISpatialAudioClient 정적 채널 베드에서 지원하는 4개의 추가 높이 채널에 대한 지원을 추가하도록 선택할 수 있습니다. 이전에 했던 모든 채널 이동(이미 x,y, z 좌표를 활용했을 가능성이 있음)은 이제 이러한 높이 채널을 포함하도록 업데이트할 수 있습니다. 이는 렌더러 및 앱 오디오 워크플로, 신호, 흐름 및 혼합 제어에 대한 중단을 최소화하는 경우가 많습니다. 헤드폰을 통해 전체 앱 믹스가 공간화되므로 스테레오 음악조차도 수신기에서 "외부화"로 인식될 수 있습니다.
  • 기존 엔드포인트를 유지 관리합니다. 더하여 7.1.4 버스(및 패너)를 추가합니다. 일부 타이틀은 7.1.4(또는 최대 8.1.4.4)를 지원하는 ISpatialAudioClient 정적 채널 베드와 함께 기존 스테레오 WASAPI 엔드포인트(공간화되지 않은 "귀에 직접" 콘텐츠)의 두 엔드포인트를 기본 선택할 수 있습니다. 물론 두 혼합 간의 상호 작용을 관리하면 동기화가 기본 달성되지만 지정된 시간에 활성 상태인 WASAPI 및 ISAC 인스턴스는 모두 처리에 동일한 버퍼 크기와 클록을 사용하므로 콘텐츠 작성자에 추가적인 문제가 발생합니다.
  • 특정 음성 또는 서브믹스에 동적 사운드 개체 사용: 가장 상세하고 정확한 위치를 제공하지만 혼합 불투명도를 만들 수 있습니다. 이 기술에는 ISpatialAudioClient 동적 사운드 개체를 사용하는 것이 포함됩니다. 메타데이터와 오디오 버퍼가 렌더러에 전달되므로 이러한 소리는 앱 믹스의 나머지 부분에 불투명합니다. 또한 사용 가능한 동적 사운드 개체 수가 제한되어 있으므로 렌더러는 컬링, 사운드 공동 위치, 정적 채널 베드에 혼합 등 우선 순위 지정 기술을 구현하는 것을 고려해야 합니다. 게임은 수신기 위로 이동하는 헬리콥터와 같은 개별 "영웅"소리에 이 기술을 자주 사용했습니다.

렌더러는 이러한 접근 방식 간에 혼합하고 일치시킬 수도 있습니다.

Microsoft Spatial Sound Runtime 리소스 영향

Windows 및 Xbox에서 사용 가능한 음성 수는 사용 중인 형식에 따라 달라집니다. Dolby Atmos 형식은 총 32개의 활성 개체를 지원합니다(따라서 7.1.4 채널 침대를 사용하는 경우 20개의 추가 동적 사운드 개체가 활성화될 수 있음). 헤드폰용 Windows Sonic 총 128개의 활성 개체를 지원하며 LFE(저주파 효과) 채널은 실제로 개체로 계산되지 않으므로 8.1.4.4 채널 베드를 사용할 때 112개의 동적 사운드 개체가 활성화될 수 있습니다.

Xbox One 게임 콘솔에서 실행되는 유니버설 Windows 플랫폼 앱의 경우 실시간 인코딩(홈 시어터용 Dolby Atmos, 헤드폰용 Dolby Atmos, 홈 시어터용 DTS:X, DTS Headphone:X 및 헤드폰용 Windows Sonic)은 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 Sonic(Headphones) 17 (8.1.4.4) 220 20 15

Windows 빌드 22621에 대한 5월 서비스 릴리스부터 Windows의 리소스 제한은 다음 값으로 업데이트됩니다.

형식 최대 정적 개체(채널 베드) 최대 동적 개체
Windows
최대 동적 개체
HoloLens 2
Dolby Atmos 홈 시어터(HDMI) 12 (7.1.4) 20 해당 없음
홈 시어터용 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 해당 없음
Windows Sonic(Headphones) 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 해당 없음
돌비 애트모스 (헤드폰) 17 (8.1.4.4) 16 16 해당 없음
Dolby Atmos(기본 제공 스피커) 17 (8.1.4.4) 해당 없음 16 해당 없음
DTS 헤드폰:X(헤드폰) 17 (8.1.4.4) 16 32 해당 없음
DTS Ultra(기본 제공 스피커) 17 (8.1.4.4) 해당 없음 32 해당 없음
헤드폰용 Windows Sonic 17 (8.1.4.4) 15 112 31

또한 앱은 다음과 같은 리소스 영향을 고려해야 합니다.

  • 스토리지/디스크 대역폭: 7.1.4로 미리 작성된 선형 콘텐츠는 일반적으로 7.1 선형 콘텐츠보다 큽니다(지각 코덱은 이미 채널 상관 관계를 활용하여 오디오 데이터의 실제 채널 50% 이상보다 훨씬 작게 만드는 경우가 많음).
  • 기타 디지털 신호 처리 비용: 이전의 일부 글로벌 효과는 이제 동적 사운드 개체별로 인스턴스화될 수 있습니다. 또한 일부 콘텐츠 작성자는 일부 DSP 효과를 업데이트하여 추가 채널을 지원하거나 고유하게 사용할 수 있습니다.

Microsoft 공간 소리 및 소리 공간화 신호

Microsoft Spatial Sound는 수신기 주변의 이상화된 구체에서 소리 위치 지정 시뮬레이션에 중점을 줍니다. 헤드폰용 Windows Sonic, DTS Headphone:X 및 Dolby Atmos는 헤드폰에 스피커 매핑 및 가상화를 구현하지만, 콘텐츠 작성자가 지원하는 방식으로 이미 구현된 사운드 공간 시뮬레이션의 다른 많은 측면은 기존 엔진에 남아 있습니다. 콘텐츠 제작자는 Doppler, 거리 기반 감쇠 및 필터링, 폐색 및 방해, 환경 반향과 같은 공간 신호를 위해 이전에 가지고 있던 기존 게임 도구 및 프로세스를 계속 사용합니다.

추가 리소스

공간 사운드 인터페이스

인터페이스 설명
ISpatialAudioClient 클라이언트가 3D 공간의 위치에서 오디오를 내보내는 오디오 스트림을 만들 수 있습니다.
ISpatialAudioObject 사용자를 기준으로 3D 공간의 위치에서 렌더링할 오디오 데이터를 제공하는 개체를 나타냅니다.
ISpatialAudioObjectRenderStream 스트림 시작, 중지 및 재설정을 포함하여 공간 오디오 개체 렌더링 스트림을 제어하는 메서드를 제공합니다.
ISpatialAudioObjectRenderStreamNotify 공간 오디오 클라이언트가 ISpatialAudioObjectRenderStream의 상태 변경에 응답하도록 알림을 제공합니다.

 

참고 항목

XDK(Xbox One 개발 키트) 타이틀에서 ISpatialAudioClient 인터페이스를 사용하는 경우 IMMDeviceEnumerator::EnumAudioEndpoints 또는 IMMDeviceEnumerator::GetDefaultAudioEndpoint를 호출하기 전에 EnableSpatialAudio를 먼저 호출해야 합니다. 이렇게 하지 않으면 활성화 호출에서 E_NOINTERFACE 오류가 반환됩니다. EnableSpatialAudio는 XDK 타이틀에만 사용할 수 있으며 Xbox One에서 실행되는 유니버설 Windows 플랫폼 앱이나 Xbox One 이외의 장치에 대해서는 호출할 필요가 없습니다.

 

공간 사운드 구조

구조 설명
SpatialAudioObjectRenderStreamActivationParams 공간 오디오 렌더링 스트림에 대한 활성화 매개 변수를 나타냅니다.
SpatialAudioClientActivationParams 공간 오디오 렌더링 스트림에 대한 선택적 활성화 매개 변수를 나타냅니다.

 

공간 소리 열거형

열거형 설명
AudioObjectType ISpatialAudioObject의 형식을 지정합니다.