XAudio2 클라이언트는 음성 채널에서 각 대상 음성의 채널로의 매핑을 완전히 제어할 수 있습니다. IXAudio2Voice::SetOutputMatrix 메서드를 사용하여 매핑을 제어합니다. 그러나 경우에 따라 XAudio2는 기본 송신 매트릭스를 자동으로 설정하여 이 작업을 간소화합니다. 음성의 오디오 채널과 연결된 채널 마스크(있는 경우)를 사용하여 이 작업을 수행합니다. 채널 마스크는 X3DAudio.h 및 다른 곳에서 정의된 SPEAKER_xxx 비트 마스크의 조합입니다. XAudio2에서는 채널 마스크가 0이거나 채널 수와 동일한 비트 수를 설정해야 합니다.
다음 표에서는 XAudio2에서 지원하는 형식에 대한 채널 마스크 요구 사항 및 기본값을 보여 줍니다.
| 형식 | 채널 마스크 요구 사항 | 기본 마스크 | 해당 구조체 멤버 |
|---|---|---|---|
| PCM | 파일에 채널 마스크가 포함될 수 있음 | 채널 마스크가 0이거나 없는 경우 | WAVEFORMATEXTENSIBLE.dwChannelMask 또는 none(WAVEFORMATEX) |
| ADPCM | 파일에 채널 마스크가 없습니다. | 기본 채널 마스크는 항상 사용됩니다. | 없음 (ADPCMWAVEFORMAT) |
서브믹스 및 마스터 음성의 경우, 채널 마스크 또는 채널 마스크가 0이 없는 원본 음성의 경우 XAudio2는 다음 표에 따라 기본 스피커 위치를 가정합니다.
| 채널 | 암시적 채널 위치 |
|---|---|
| 1 | 두 스피커에서 항상 FrontLeft와 FrontRight로 전체 크기로 연결됩니다 (모노 사운드의 특수한 경우). |
| 2 | FrontLeft, FrontRight(기본 스테레오 구성) |
| 3 | 프론트왼쪽, 프론트오른쪽, 저주파수(2.1 구성) |
| 4 | 앞쪽왼쪽, 앞쪽오른쪽, 뒤쪽왼쪽, 뒤쪽오른쪽 (4채널 음향) |
| 5 | 앞좌측, 앞우측, 앞중앙, 측좌, 측우 (5.0 구성) |
| 6 | FrontLeft, FrontRight, FrontCenter, LowFrequency, SideLeft, SideRight (5.1 구성) (다음 설명 참조) |
| 7 | 앞좌, 앞우, 앞중앙, 저주파, 측좌, 측우, 뒷중앙(6.1 구성) |
| 8 | 프론트 왼쪽, 프론트 오른쪽, 프론트 중앙, 저주파수, 뒤쪽 왼쪽, 뒤쪽 오른쪽, 옆쪽 왼쪽, 옆쪽 오른쪽 (7.1 구성) |
| 9개 이상 | 암시적 위치 없음(일대일 매핑) |
오디오 그래프의 지정된 음성 쌍에 원본 또는 대상 음성과 연결된 스피커 위치가 없는 경우(한 음성에 8개 이상의 채널이 있음) 원본 음성에 IXAudio2Voice::SetOutputMatrix 메서드를 사용하여 명시적으로 송신 매트릭스 집합이 설정될 때까지 음성을 재생할 수 없습니다. IXAudio2SourceVoice::Start 메서드는 이 작업을 수행할 때까지 실패합니다.
원본 음성 및 대상 음성의 화자 위치 수가 다르고 IXAudio2Voice::SetOutputMatrix 원본 음성에서 호출되지 않은 경우 XAudio2는 각 원본 채널을 사용 가능한 가장 가까운 대상 스피커(또는 스피커)로 보내며, 의도한 화자와 얼마나 가까운지에 비례하여 전송합니다. 기본 동작이 다른 두 가지 특별한 경우가 있습니다.
- 원본 오디오가 모노이고 SPEAKER_FRONT_CENTER에 위치하거나 정의된 위치가 없는 경우, 출력 오디오에 SPEAKER_FRONT_LEFT와 SPEAKER_FRONT_RIGHT가 있으면 항상 그 두 위치로 전송됩니다. 그들이 존재하지 않는 경우, 그것은 정상적인 경우로 돌아갑니다.
- 원본과 대상이 모두 6개 채널이고 표준 5.1 화자 설정(왼쪽+오른쪽+센터+Sub+BackL+BackR 또는 Left+Right+Center+Sub+SideL+SideR) 중 하나에 배치된 경우 채널은 1대 1로 매핑됩니다. 즉, SideLeft/Right 및 BackLeft/Right는 동일하게 처리됩니다. 이러한 설정에 대한 역사적 혼란이 있었기 때문입니다. 따라서 추측된 의도는 항상 일대일로 매핑하려는 것입니다.
관련 항목