Skip to main content

SetShapeFiltVolCommand

SHAPE FLTVOL 명령을 초기화합니다.

Syntax

Parameters

command   _Inout_
Type: SHAPE_FLOWGRAPH_COMMAND*
초기화할 SHAPE_FLOWGRAPH_COMMAND 명령입니다. contextId   
Type: UINT32
이 명령이 참조할 Filter/Volume 컨텍스트 ID(인덱스)입니다. inputMixBuffer   
Type: UINT32
입력 믹스 버퍼 ID입니다. outputMixBuffer   
Type: UINT32
출력 믹스 버퍼 ID입니다.

Return value

Type: HRESULT 함수가 성공하면 S_OK를 반환합니다. 하나 이상의 인수가 유효하지 않으면 E_INVALIDARG를 반환합니다.

Remarks

Filter/Volume(FLTVOL) 블록은 사운드의 폐색(occlusion), 즉 물체 주위나 물체를 통과해 소리가 전달되는 현상을 모델링하고, 사운드가 도달하는 방향을 모델링하기 위해 여러 스피커에 사운드 에너지를 분배하는 데 사용됩니다. FLTVOL 블록은 믹스 버퍼로부터 단일 채널의 입력 데이터를 받아 필터링 및 볼륨 스케일링을 적용한 후 출력을 믹스 버퍼에 씁니다. 일반적으로 여러 FLTVOL 컨트롤을 함께 사용하여 서라운드 사운드 패닝과 같은 1입력-다중출력 패닝을 생성합니다. 패너는 일반적으로 사운드를 받아 n-스피커 패닝을 수행하고, 하나 이상의 리버브 효과를 추가하는 데 사용됩니다. 상태 변수 필터를 추가하면 타이틀에서 향상된 거리감 효과는 물론 I3DL2 스타일의 폐색 및 장애물(obstruction) 효과를 쉽게 만들 수 있습니다. 상태 변수 필터는 그 특성상 공진을 발생시켜 중간 값이 1.0(또는 -1.0)을 초과할 수 있습니다. 중간 값의 포화로 인한 문제를 완화하기 위해 FLTVOL 블록은 프로그래밍 가능한 헤드룸 스케일링을 제공하며, 이는 입력 신호에 적용되었다가 출력 시 보정됩니다. 스케일링은 데이터를 산술적으로 오른쪽 시프트하여 이루어집니다. 컨텍스트의 headroom 필드는 FLTVOL 처리 전에 입력 신호가 받는 오른쪽 시프트의 비트 수(0, 1, 2, 3)를 지정합니다. 따라서 headroom 값을 3으로 지정하면 상태 변수 필터는 내부적으로 발생하는 공진 및 오버플로우에 대비해 추가로 3비트(18dB)의 헤드룸을 확보할 수 있습니다. 물론 입력 데이터를 오른쪽으로 시프트하면 필연적으로 하위 정밀도가 감소합니다. 입력 오디오 신호의 최하위 headroom 비트는 영원히 손실됩니다. 따라서 headroom 비트는 일반적으로 상태 변수 필터에서 내부 포화가 발생한 것으로 판단되는 경우에만 0이 아닌 값으로 지정해야 합니다. 이는 FLTVOL 컨텍스트의 Internal Overflow 비트 값을 확인하여 판단할 수 있습니다. 원본 소스 데이터가 16비트인 경우(예: 원본 소스 데이터가 XBOX Media Audio(XMA)인 경우) 하위 비트가 어차피 0으로 패딩되기 때문에 사운드 상 눈에 띄는 변화 없이 headroom 비트를 일반적으로 최댓값(3)으로 설정할 수 있습니다. 유연한 상태 변수 필터 구현은 또한 흥미로운 오디오 효과를 만들거나 변화를 주기 위해 보이스에 공진 필터링을 적용할 수 있게 해줍니다. 필터 매개변수와 볼륨 속성은 진입 및 종료 설정 지점 사이의 부드러운 전환을 제공하기 위해 샘플 단위로 점진적으로 조정됩니다. FLTVOL 블록은 Chamberlin 필터로 구현되어 있습니다. 이 필터는 가변 Q(대역폭) 컨트롤과 함께 하이 패스, 로우 패스, 밴드 패스의 세 가지 모드를 제공합니다. Chamberlin 필터의 매개변수는 다음과 같이 계산됩니다.
fq 매개변수는 Scalable Hardware Audio Processing Engine(SHAPE) 블록 외부의 소프트웨어에 의해 계산됩니다. 계수가 업데이트되면 한 오디오 프레임에 걸쳐 새 값으로 램프(ramp)됩니다. 컨트롤 비트는 FLTVOL 블록의 최종 출력으로 어떤 출력(밴드 리젝트, 하이 패스, 밴드 패스 또는 로우 패스)이 사용되는지 결정하는 데 사용됩니다. 각 채널 또는 스트림의 컨텍스트 데이터는 시스템 메모리에 저장됩니다. 성능은 48kHz 스트림 2560개 동시 처리로 제한되어 SHAPE가 오디오 프레임당 최대 2560개의 FLTVOL 컨텍스트를 처리할 수 있지만, 메모리에 지정 가능한 컨텍스트 수는 스트림 재사용 시나리오를 단순화하기 위해 이보다 더 많습니다. 필터링 동작은 XAudio2의 동작과 동일하도록 설계되었습니다.

Requirements

Header: shapeflowgraph.h Supported platforms: XBOX One 제품군 콘솔 및 XBOX Series 콘솔

See also

ACP 개요 SHAPE 개요 shapeflowgraph
마지막 수정일 2026년 8월 24일