XAudio2 오디오 효과

오디오 효과는 들어오는 오디오 데이터를 가져와서 전달하기 전에 데이터에 대해 일부 작업을 수행하는 개체입니다. 효과를 사용하여 오디오 스트림에 반향을 추가하고 최대 볼륨 수준을 모니터링하는 등 다양한 작업을 수행할 수 있습니다.

효과 체인

모든 XAudio2 음성은 오디오 효과 체인을 호스트할 수 있습니다. XAUDIO2_EFFECT_DESCRIPTOR 구조체 배열을 사용하여 효과 체인을 지정할 수 있습니다. 각 설명자는 클라이언트에서 제공하는 효과 개체에 대한 포인터를 포함합니다. 이러한 개체는 APO(오디오 처리 개체) 인터페이스를 구현해야 합니다. APO 모델에 대한 자세한 내용은 XAPO 개요 를 참조하세요.

XAudio2 엔진이 실행되는 동안 클라이언트에서 효과 체인을 동적으로 수정할 수 있고, 효과를 개별적으로 사용하거나 사용하지 않도록 설정할 수 있으며, 오디오를 중단하지 않고 효과 매개 변수를 변경할 수 있습니다. 효과 그래프의 모든 측면이 변경되면 XAudio2는 불필요한 처리를 방지하기 위해 그래프를 다시 최적화합니다. IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffectIXAudio2Voice::SetEffectParameters를 참조하세요.

효과가 XAudio2 음성에 연결되면 XAudio2는 효과를 제어하며 클라이언트는 더 이상 호출하지 않아야 합니다. 이를 보장하는 가장 간단한 방법은 효과에 대한 모든 포인터를 해제하는 것입니다.

지정된 XAudio2 음성 효과 체인의 효과는 해당 음성의 처리 샘플 속도로 부동 소수점 오디오를 사용하고 생성해야 합니다. 변경할 수 있는 오디오 형식의 유일한 측면은 채널 수입니다(예: 반향 효과는 모노 데이터를 5.1로 변환할 수 있음). 클라이언트는 XAUDIO2_EFFECT_DESCRIPTOR 사용할 수 있습니다. 각 효과가 생성해야 하는 채널 수를 지정하는 OutputChannels 필드입니다. 효과 체인이 이러한 요구 사항을 충족할 수 없거나 효과가 다음 효과에서 처리할 수 없는 여러 채널을 생성하는 경우 실패합니다. 효과 체인이 이러한 요구 사항을 충족하지 못하게 하는 IXAudio2Voice::EnableEffect 또는 IXAudio2Voice::D isableEffect 호출은 실패합니다.

XAudio2에서 사용되는 APO 인터페이스는 파괴적이어야 합니다. 즉, 출력 버퍼에서 찾은 모든 데이터를 항상 덮어씁니다. 그렇지 않으면 XAudio2가 이러한 버퍼가 이전에 무음으로 초기화되었음을 보장하지 않으므로 결과 오디오가 올바르지 않을 수 있습니다.

XAudio2 기본 제공 효과

다음 표에는 XAudio2에서 제공하는 기본 제공 오디오 효과 집합과 해당 생성 방법이 나와 있습니다.

영향 생성 방법
반향 XAudio2CreateReverb
볼륨 미터 XAudio2CreateVolumeMeter

 

오디오 효과의 instance 만들고 사용하는 예제는 방법: 효과 체인 만들기를 참조하세요.

XAudio2의 사용자 지정 효과

XAPO API는 XAudio2에서 사용할 수 있는 사용자 지정 오디오 효과를 만들기 위한 프레임워크를 제공합니다. XAPO를 사용하여 사용자 지정 효과를 만드는 예제는 방법: XAPO 만들기를 참조하세요.

XAPO 효과 라이브러리(XAPOFX)

XAPOFX는 XAPO 의 추가 라이브러리와 이를 만들기 위한 일반적인 메커니즘을 제공합니다. XAudio2에서 XAPOFX를 사용하는 예제는 방법: XAudio2에서 XAPOFX 사용을 참조하세요.

오디오 효과

XAudio2 프로그래밍 지침