Wwise에서의 앰비소닉: 개요
앰비소닉 파이프라인의 핵심 기능은 버스의 채널 구성을 1차, 2차, 3차, 4차, 5차 앰비소닉으로 설정하는 기능입니다. 이 때문에 앰비소닉 버스로 보낸 비(非)앰비소닉 신호는 자동적으로 앰비소닉으로 인코딩되며, 반대로 비앰비소닉 버스로 보낸 앰비소닉 신호는 미리 설정해 둔 자리에 배치되도록 자동적으로 디코딩됩니다. 최종적으로 앰비소닉 버스로 보낸 앰비소닉 신호는 바뀌지 않은 채로 통과하거나 (Direct Assignment) 게임 오브젝트와 리스너의 상대적 위치와 방향에 따라 회전되거나 단축됩니다 (3D Spatialization). 뿐만 아니라,
- B포멧 에셋을 FuMa 포맷이나 (3차까지) AmbiX 포맷으로 (5차까지) 불러와서 재생할 수 있고,
- 효과(Effect) 플러그인을 사용하여 디코딩 방식을 사용자화할 수 있으며,
- Google Resonance나 Auro Headphone과 같은 Effect 플러그인을 사용하여 앰비소닉을 바이노럴로 변환할 수도 있고,
- 앰비소닉 베드를 앰비소닉을 사용할 수 있는 오디오 장치로 전달할 수도 있을 뿐만 아니라,
- Wwise 녹음기(Wwise Recorder)로 앰비소닉 버스를 디스크에 녹음하거나 다시 불러올 수도 있는데다
- 여러분이 자주 쓰시는 Wwise 플러그인을 사용해 다른 파일 형식을 처리하는 것처럼 앰비소닉을 처리할 수도 있습니다.
*단 Stereo Delay 및 Matrix Reverb는 제외.
3D 오디오를 목적으로 한 중간 공간 표현
앰비소닉을 중간 공간 표현으로 사용하기 (VR용) 블로그에서 중간 공간 (혹은 3D) 표현의 개념을 자세히 설명합니다. 요약해서 말하자면 헤드폰으로 올바르게 바이노럴화되거나 스피커로 '다운믹스' (딱히 보다 나은 용어가 없음)하기 위해서 버스 계층 구조에서 보다 높은 레벨에 있는 믹싱 버스가 3D 정보를 전달할 수 있도록 구성되어야 합니다. 특히 일부 플랫폼에서 내장된 3D 오디오 기술을 게임에서 활용하려면 반드시 그렇게 해야 합니다.
Wwise는 오디오 서브믹스에서 세 가지 종류의 중간 3D 표현을 지원합니다.
- Audio Objects: Wwise 2021.1에서 출시된 Object-Based Pipeline(오브젝트 기반 파이프라인) 전에는 이 옵션은 믹싱이 아예 되지 않는다는 것을 뜻합니다. Object-Based 표현은 믹스의 개별적인 사운드 그 자체가 믹싱되는 것이 아니라 바이노럴라이저 (혹은 좀 더 일반적으로 '3D 렌더러')에 의해 소비될 때까지 개별적인 위치적 정보가 보존되도록 수집됩니다. 이 표현에서는 3D 정보가 손실되지 않기 때문에 3D 렌더러가 최적하게 작동합니다. 하지만 사운드가 다운믹스되지 않기 때문에 믹싱 버스에서 몇몇 채널에만 Effect를 적용하면 되는 경우에서도 수백 개에 달하는 모든 사운드에 개별적으로 적용해야 한다는 단점이 있습니다.
- Fixed Objects: 다시 말해 스피커 위치가 알려진 채널 구성을 말합니다. 보통 '높이' 스피커가 (귀 위에) 있어서 위에서 오는 소리를 표현할 수 있는 7.1.4를 선택합니다. 하지만 7.1.4는 아래에서 오는 소리를 올바르게 표현하지 못합니다. 그리고 소리가 스피커와 완전히 정렬되지 않을 경우 인접한 세 스피커에 의해 방향성이 차선적으로 전달됩니다.
- Ambisonics: 앰비소닉은 채널의 개수가 일정하다는 점에서 Fixed Objects와 비슷합니다. 하지만 일부 방향에서는 Fixed Objects에서와 같은 다른 표현보다 공간적 표현이 떨어질 수 있습니다. 회전에 따라서 변하지 않기 때문에 균일하게 흐려집니다. 표현의 선명도는 앰비소닉 차순과 비례합니다.
앰비소닉 버스에서 바이노럴라이저 Effect 구성하기
Master Audio Bus 아래에 Google Resonance나 Auro Headphones와 같은 앰비소닉 바이노럴라이저 Effect를 넣을 버스를 생성하세요. 바이노럴 처리가 필요한 모든 오디오가 이 버스로 라우팅되어야 합니다.
이 버스를 앰비소닉 구성 중 하나로 설정하세요. 이 버스는 중간 공간 표현으로 사용되며 앰비소닉 차순이 높을수록 더 좋습니다. 버스의 구성은 앰비소닉이지만 버스의 Out Config는 바이노럴라이저 Effect에 의해 스테레오가 됩니다.
앰비소닉 vs. Audio Object
앰비소닉은 바이노럴라이저를 포함하여 3D 렌더러에서 활용하기에 적합한 형식입니다. Audio Object와는 반대로 방향성 면에서 정확도가 약간 떨어지지만 고정된 개수의 채널이 서브믹스 Effect와 3D 렌더러 자체에 의해 처리될 수 있도록 보장해줍니다. 공간의 정확도는 선택한 채널의 개수 (4~36개) 와 정비례합니다.
반면에 Object 기반 파이프라인은 방향적 정확도를 절대 포기하지 않습니다. 그렇기 때문에 모든 상황에서 Object의 소중한 3D 정보를 보존해줍니다. 그런 다음 Audio Object와 채널의 개수를 제어할 수 있는 다른 방법은 디자이너가 찾아야 합니다 (예: 보이스 제한).
Audio Object에서 앰비소닉 사용하기
Wwise의 Object 기반 파이프라인은 Audio Object를 앰비소닉을 포함한 여러 채널과 사용할 수 있도록 지원합니다. 그렇기 때문에 두 가지 표현을 함께 사용할 수 있습니다. 예를 들어 Audio Object에 의해 제공되는 방향성의 최적한 렌더링이 필요한 사운드를 유지하기 위해 Audio Object를 사용하고 나머지 사운드에는 앰비소닉을 사용할 수 있습니다. Audio Object 식으로 말하자면, Audio Object로 유지되지 않는 모든 사운드가 베드로 가게 된다는 뜻입니다. 위에서 언급한 몇 가지 이유로 알 수 있듯, 앰비소닉은 베드를 표현하는 데에 적합합니다.
Audio Object 맥락에서 앰비소닉 베드 구성하기
'최상위 계층'의 공간적 표현은 Audio Object를 사용해야 합니다. 하지만 여기서는 하위 계층, 즉 베드에 사용할 앰비소닉 버스를 만들어서 사운드의 앰비소닉 다운믹스를 이곳으로 라우팅합니다. 상위 버스로 직접 라우팅되는 사운드는 오브젝트로 처리됩니다. 앰비소닉 베드도 단일한 다채널 오브젝트로 처리됩니다.
현재 Wwise에서는 Object 바이노럴라이저 Effect가 함께 제공되지 않습니다. 하지만 일부 플랫폼은 Audio Device 수준에서 오브젝트 바이노럴화를 지원합니다. Windows Sonic이 그 중 하나입니다. 이 경우 Master Audio Bus는 Audio Device의 Audio Object 구성을 이어 받으며 직접적인 하위 계층으로 Ambisonic Bed를 만들 수 있습니다.
Object 기반 파이프라인에서 Audio Device의 역할에 대한 더 자세한 내용은 Audio Objects - System Audio Device에서 오디오 엔드포인트까지를 참고하세요.
앰비소닉 표현이 어떻게 머리에 장착된 기기를 기준으로 회전하는거죠?
보통은 게임 엔진이 리스너의 머리에 장착된 기기 (head mounted device, HMD)의 머리 추적 데이터(예: 리스너가 향한 방향)를 SetListenerPosition() API를 통해서 수집해 Wwise에 계속해서 전달해 줍니다. 3D로 설정된 소리들이 게임 오브젝트에 붙고 앰비소닉 버스로 믹스될 때는 리스너의 방향을 기준으로 한 게임 오브젝트의 위치에 따라 인코딩의 각도를 맞추게 됩니다. 그래서 앰비소닉 다운믹스는 머리에 장착한 기기에 맞게 이미 회전된 음원들로 만들어집니다.
또한 B포맷 음원과 함께 3D Spatialization을 사용할 수도 있습니다. 이 경우에 B포맷 음원은 각기 음장으로 간주되어 게임 오브젝트와 리스너의 상대적 방향을 기준으로 회전합니다 (아래 '음장으로서의 앰비소닉' 참조).
시네마틱 VR
앰비소닉은 앰비소닉 영역 내의 회전 행렬의 계산을 통해 최소한의 CPU와 메모리 사용량으로도 회전시킬 수 있습니다. 이 점 때문에 앰비소닉은 VR에 안성맞춤인 형식으로 거듭나게 되었습니다. 예를 들어, 음원이 여러 방향에서 들려오는 완전히 청각적인 신(scene)을 만들었다 쳐봅시다. 음원을 앰비소닉 신호로 인코딩 하고 (Wwise처럼) 앰비소닉 사용이 가능한 디지털 오디오 편집 프로그램(Digital Audio Workstation, DAW)을 사용하여 디스크에 저장하려 한다고 가정하죠. VR 기기에서 재생하는 그 순간, 재생 엔진은 머리 추적 좌표를 읽고 앰비소닉 신호를 반대 방향으로 회전시킨 다음, 헤드폰으로 바이노럴 신호를 디코딩/가상화하여 전해주기만 하면 됩니다.
이전 섹션에서는 상호적인 작용으로 회전이 이루어졌죠. 이번엔 반대로 Wwise를 이용해서 머리 추적으로 하는 회전을 떠나 비상호작용적인 VR (시네마틱) 컨텐츠를 만들어 봅시다. 그러려면 앰비소닉 버스에서 앞서 언급한 바이노럴 가상화 Effect를 Wwise Recorder Effect로 대체하기만 하면 됩니다. 녹음된 파일은 버스와 동일한 차순으로, 호환되는 FuMa나 AmbiX 파일이 됩니다. 이 파일을 360도 영상에 삽입하면 플레이어가 위에 설명된 과정을 통해 음장을 회전시킬 수 있습니다.
환경
위와 같은 원리는 환경 Effect에 사용되는 Auxiliary Bus에도 거의 같은 방식으로 적용할 수 있습니다. 현재, RoomVerb와 Convolution Reverb는 앰비소닉을 네이티브로 지원하고 있지만 MatrixReverb는 지원하고 있지 않음을 알려드립니다. 양면 딜레이(front-back delay)의 사용 여부와 관계없이 스테레오나 4.0 (또는 그 이상) 버스에 환경 효과를 적용하고 앰비소닉 버스로 보내시면 됩니다. 버스의 출력은 2D 사운드에 적용되는 것과 마찬가지로 앰비소닉으로 인코딩될 것입니다. 룸버브 역시 같은 방법으로 사용하셔도 되고 직접적으로 앰비소닉 버스에 쓰셔도 됩니다. 지향성(directional) 채널은 일반적인 다채널 구성과 비슷하게 역상관(decorrelated) 신호로 구성될 것입니다. 차수가 더 높을수록 더 많은 역상관 채널을 형성하며, 이에 따라 더 많은 공정이 필요합니다. 여러분께서 여러 실험을 통해 품질과 성능의 바람직한 균형점을 찾으실 수 있기를 바랍니다.
앰비소닉 패닝 VS 벡터 기반 진폭 패닝
미학적인 이유로 인해 모노 음원을 앰비소닉으로 인코딩하는 경우가 생길 수 있습니다. 기본적으로 Wwise에 구현된 3D 사운드 알고리즘의 패닝은, 에너지 확산의 가변성을 포기하는 대신에 지속적인 전체 에너지를 통해 소리의 정확성을 최대화하는 흔하디 흔한 벡터 기반 진폭 패닝(Vector Base Amplitude Panning, VBAP) 알고리즘을 토대로 합니다. 그 말인즉슨, 에너지의 확산은 가상의 음원과 스피커가 나란해질 때 최소화되며 음원이 스피커의 호(7.1같은 2D 설정에서)나 삼각형(7.1.4같은 3D 설정에서)의 중앙에 있을 때엔 최대화된다는 것이죠. 반면에 앰비소닉은 음원의 위치와 스피커 배치에 상관없이 지속적으로 에너지를 확산시킵니다. 앰비소닉의 확산은 차수와 반비례합니다. 그래서 1차 앰비소닉은 아주 흐릿합니다. 앰비소닉 서브믹스는 다방면 앰비소닉 디코딩 기술을 사용하여 (5.1이나 7.1.4와 같은) 상위 버스의 표준 구성으로 자동 디코딩되기 때문에 다방면 앰비소닉패닝 [1]은 3D 사운드를 앰비소닉 버스로 보낸 다음, 그 버스를 다시 표준 구성을 가진 상위 버스로 라우팅하는 방식으로 Wwise에서 구현할 수 있습니다.
음장으로서의 앰비소닉
녹음되거나 합성화된 앰비소닉 사운드는 환경음을 구현하는 데에 좋습니다. 보통 게임의 중간 공간 표현의 경우 보다 높은 차순의 앰비소닉이 사용되지만 환경음의 경우 낮은 차순으로도 충분합니다. Using Ambisonics for Dynamic Ambiences (동적 환경음으로 앰비소닉 사용하기) 블로그 글은 이에 대해 자세히 설명해줍니다.
음장 축소
3D Spatialization과 함께 음장으로 사용될 경우 다른 다채널 파일과 마찬가지로 앰비소닉이 모노 점음원으로 축소되며 Spread가 기본적으로 0이 됩니다. 음장으로 완전히 둘러싸려면 앰비소닉 사운드에 올바른 Attenuation Shareset를 추가하여 Spread를 100%로 만들어야 합니다.
Using Ambisonics for Dynamic Ambiences에서 설명한 것처럼 100% Spread와 Position + Orientation 3D Spatialization을 사용하면 앰비소닉 음장이 이미터와 리스너 게임 오브젝트의 상대적 방향에 따라 회전해서 음장이 세계에 묶인 것과 같은 느낌을 효율적으로 만들 수 있습니다.
앰비소닉은 리스너 쪽으로 다가오는 파면을 표현하기 때문에 음장을 구성하는 음원은 항상 멀리 떨어져 있습니다. 그렇기 때문에 음장 내부를 보여주는 데에는 이 표현방식을 사용하기가 어렵습니다. 하지만 Spread가 음장 안팎을 드나드는 효과를 표현하는 데에 도움을 줄 수 있습니다. 실제로 Spread가 100%보다 작을 경우, Spread의 효과에서 설명한 것처럼 이미터 오브젝트가 위치한 방향으로 음장을 축소하는 효과가 있습니다. 바로 이 방식으로 Wwise Spatial Audio Room이 공간음과 리버브를 처리합니다 (Room Tones(공간음) 참조).
- 리스너가 공간 안에 있을 경우 Spread가 100%에 가까워지며 공간음과 리버브 버스가 음장의 회전당 공간의 방향으로 연결됩니다.
- 리스너가 바깥에 있을 경우에는, Room의 게임 오브젝트가 가장 가까운 포털에 배치되고 Spread가 50% 미만이 되며, 포털의 개구에 따라 달라지게 됩니다. 따라서 음장은 공간의 방향에 따라 회전하면서 포털의 위치를 향해 축소됩니다. 리스너가 멀어지면 음장이 포털의 위치에서 점음원으로 더욱 축소됩니다.