오디오 링크 는 언리얼 오디오 엔진을 다른 오디오 엔진 등 외부 소프트웨어와 연결하는 API입니다. 오디오 링크는 하드웨어 추상화를 통해 하드웨어를 직접 액세스하지 않아도 되도록 해주며, 언리얼 오디오 엔진과 여기에 연결된 소프트웨어의 기능을 모두 제공합니다.
오디오 링크에서 전송 가능한 데이터
오디오 링크는 다음과 같은 세 가지 링크 타입을 통해 데이터를 전송합니다.
- 소스 - 사전에 어테뉴에이션된 소스의 펄스 코드 변조(Pulse-Code Modulation, PCM) 데이터를 출력합니다. 지원되는 소스로는 메타사운드, 사운드 큐, 사운드 웨이브 등이 있습니다.
- 서브믹스 - 특정 서브믹스의 PCM 데이터를 출력합니다.
- 오디오 컴포넌트 - 오디오 컴포넌트에서 사용되는 사전에 어테뉴에이션된 소스에서 PCM 데이터를 출력합니다. 독립형 소스와 다르게 취급되며 다른 API를 사용합니다.
오디오 링크 활성화 방법
구현 툴이 기능을 제공하는 방식에 따라 구성을 커스터마이징해야 합니다. 일반적으로 구현 툴은 언리얼 엔진 스타트업 단계에서 오디오 링크를 활성화하는 오디오 링크 팩토리(AudioLink Factory) 를 등록합니다.
언리얼 에디터에서 각 링크 타입에는 전송을 활성화하는 오디오 링크로 전송(Send to AudioLink) 플래그와 선택적으로 디폴트 세팅을 오버라이드하는 오디오 링크 세팅(AudioLink Settings) 파라미터가 있습니다. 이러한 옵션은 오디오 링크가 비활성화되어도 유지되므로 아무것도 손실되지 않습니다.
소스 전송 활성화하기
오디오 링크 프로퍼티는 소스와 연결된 사운드 어테뉴에이션(Sound Attenuation) 에셋을 통해 액세스할 수 있습니다. 소스의 디테일(Details) 패널에서 어테뉴에이션(Attenuation) > 어테뉴에이션 세팅(Attenuation Settings) 으로 이동하여 관련된 에셋을 찾거나 생성합니다.
오디오 링크로 전송 활성화(Enable Send to AudioLink) 플래그 및 오디오 링크 세팅 오버라이드(AudioLink Settings Override) 프로퍼티를 사운드 어테뉴에이션 에셋의 디테일 패널에 있는 어테뉴에이션(오디오 링크)(Attenuation(AudioLink)) 에서 설정할 수 있습니다.
이름과 달리 사운드 어테뉴에이션 에셋은 소스 프로퍼티의 컬렉션으로 기능하며 어테뉴에이션만을 위한 것은 아닙니다.
서브믹스 전송 활성화
오디오 링크로 전송 활성화 플래그 및 오디오 링크 세팅 오버라이드 프로퍼티를 서브믹스의 디테일 패널에 있는 오디오 링크(AudioLink) 에서 설정할 수 있습니다.
동일한 서브믹스와 소스를 결합하면 스택이 생성되어 믹싱된 오디오의 소리가 커질 수 있습니다.
오디오 컴포넌트 전송 활성화
오디오 컴포넌트 지원은 오디오 링크에 포함되어 있지만 소스에 디자인상 컴포넌트가 없고, 스케일에 고도로 최적화되어 있고, 엔진 레벨 지원을 제공하기 때문에 불필요한 경우가 많습니다. 하지만 레이캐스팅 공간화 등 오디오 컴포넌트를 사용해야 하는 경우도 있습니다.
오디오 컴포넌트 전송에는 구현에 따라 커스텀 접근법이 필요합니다. 하지만 블루프린트 인터페이스는 표준화되어 있습니다. 다음의 API에 대한 액세스를 제공하려면 AudioLinkBlueprintInterface 를 구현합니다.
- SetLinkSound 함수에서 NewSound 를 메타사운드, 사운드 웨이브, 사운드 큐 등
USoundBase오브젝트로 설정할 수 있습니다. - 다른 '재생' 호출과 함께 컴포넌트에 포함할 수 있도록 PlayLink 함수를 명명했습니다. 필요한 경우, PlayLink 함수를 리디렉션할 수 있습니다.
오디오 링크 비활성화 방법
au.audiolink.enabled 콘솔 변수로 오디오 링크를 비활성화할 수 있습니다.
제한 사항
- 두 개 이상의 오디오 엔진을 실행하면 추가 오버헤드 비용이 발생합니다. 언리얼 오디오 엔진은 고도로 최적화되어 있지만 프로젝트에서 사용해보고 평가할 것을 권장합니다.
- 하드웨어 공유 제한 때문에 하드웨어 디코더는 UE 내에서 실행되는 소스를 지원하지 않습니다. 하지만 UE는 Bing Audio, Ogg Vorbis 등 효율적인 소프트웨어 디코더를 지원합니다.
- 오디오 링크는 현재 최대 8개 채널의 소스까지만 지원합니다.
- 앰비소닉 소스 또는 오브젝트 기반 포맷은 현재 지원되지 않습니다.
문제 해결
- 로그에 보다 자세한 정보를 출력하려면 콘솔 명령
log LogAudioLink All을 사용합니다. - 오디오 링크 팩토리를 UE에 등록해야 합니다. 올바르게 작동하고 있는지 여부가 로그 메시지에 표시됩니다.
- 소스 또는 서브믹스에서 오디오 링크로 전송 플래그를 활성화했는지 확인합니다.
- 동일한 신호 체인을 포함하는 소스와 서브믹스를 페어링할 때는 주의해야 합니다. 데이터 중복이 발생하여 시끄럽고 원하지 않는 오디오 스택이 발생할 수 있습니다.
- '에디터에서 플레이(PIE)'를 포함한 각 에디터 및 게임 창은 각각의 언리얼 오디오 엔진 인스턴스를 갖습니다. 이는 매우 강력한 개념이지만 인스턴스 수명에 대한 혼란을 유발할 수 있습니다. 예를 들어 에디터 서브믹스는 스타트업 시 인스턴스화됩니다. 서브믹스 인스턴스화는 조기에 발생하지만 플로에서 이른 시점에 인스턴스화되지 않으면 오디오 링크 팩토리가 서브믹스를 놓칠 수 있습니다. 따라서 구현을 적절하게 미세조정하는 것이 중요합니다.