목차
RoomVerb와 Matrix Reverb는 매개 변수적 알고리즘이지만 AK Convolution Reverb는 미리 녹음된 IR(Impulse Response, 리버브를 생성해내는 공간의 임펄스 반응)을 사용합니다.
임펄스 반응 (IR): 박수를 치면 (임펄스) 공간에서 소리가 울립니다 (반응). |
AK Convolution Reverb는 공간을 정확하게 시뮬레이션할 뿐만 아니라 게임 환경 음향에 적합하도록 IR을 변경할 수 있는 다양한 설정도 제공합니다.
Wwise 프로젝트나 Profiler의 Capture Log를 열었을 때 “... uses the audio Effect plugin 'AK Convolution Reverb', which is not installed”와 같은 메시지를 받았을 경우 현재 Wwise 설치 버전에 AK Convolution Reverb가 설치되지 않았음을 뜻합니다. 플러그인을 추가하려면 먼저 Wwise를 닫으세요. 그런 다음 런처를 열어 Wwise 페이지로 가서 해당 Wwise 버전의 Settings (스패너 모양)에서 Modify…를 선택하세요. Next를 클릭해서 CHOOSE PLUG-INS 페이지로 이동하세요. 여기에서 AK Convolution Reverb 플러그인을 선택하고 Modify를 클릭하여 Wwise에 추가할 수 있습니다. |
이제 AK Convolution Reverb를 Desert 보조 버스에 추가해봅시다.
-
Project Explorer에서 Master-Mixer Hierarchy > Master Audio Bus > World > AUX > Region_Desert를 펼치고 Desert Auxiliary Bus를 선택하세요.
-
Effects 탭에서 Add Effect (+) 를 선택하고 Wwise Convolution Reverb > Reverbs > WAG_Desert를 클릭하세요.
AK Convolution Reverb 라이선스가 없을 경우 알림 메시지가 뜰 것입니다. 하지만 걱정하지 마세요! 문제 없이 다음 단계를 계속하실 수 있습니다. Player_Pickup Switch Container의 Auxiliary Bus를 사용하여 Convolution Reverb를 시험해봅시다.
-
Projet Explorer에서 Actor-Mixer Hierarchy > Default Work Unit > World > Player > Player를 펼치고 Player_Pickup Switch Container를 선택하세요.
-
Master-Mixer Hierarchy의 Desert보조 버스를 첫 번째 줄로 드래그하여 기존의 보조 버스를 대체합시다.
보조 버스가 하나만 할당되었는지 다시 확인하세요.
-
Play를 클릭하여 Convolution Reverb가 Player_Pickup으로 적용된 것을 들어보세요.
이제 Desert 보조 버스로 돌아가서 최적화해봅시다.
-
Desert 보조 버스 Object Tab에서 Effects 탭을 열고 AK Convolution Reverb Effect를 선택하세요. Effect 설정은 Object Tab 하단에 있는 Secondary Editor에 나타납니다.
Effects Editor에 Wwise Convolution Reverb의 다양한 설정이 보입니다. 여기에서 최적화에 사용할 임펄스 반응 설정을 집중적으로 살펴봅시다.
Information and statistics(정보와 통계) 창 바로 아래에 직접 예상 메모리 값이 보입니다. Lower engine memory(엔진 내부 메모리)는 런타임 때의 메모리 사용량을 말하는 반면 (예: 리버브 꼬리의 일시적 저장) SoundBank memory(사운드뱅크 메모리)는 메모리에 올라간 임펄스 반응 파일의 크기를 말합니다.
최적화 전에 Stretch를 항상 정의해야 합니다. 이 속성은 임펄스 반응을 늘이며, Stretch 값이 클수록 공간이 더 큼을 의미합니다.
이제 Convolution Reverb에 필요한 최적화를 실행해봅시다. 먼저 시간의 경과에 따른 Low pass 필터를 적용해서 Impulse Response 메모리 사용을 상당히 줄여봅시다.
-
Properties 그룹 상자에서 IRLPF를 선택하고 Automate를 활성화하세요.
이제 Time 창에 파란선이 보입니다. 이 선은 시간의 경과에 따라 Impulse Response가 로우패스(저역 통과) 되어야 하는 양을 정의합니다. 보통 Impulse Response 끝에는 저주파가 생깁니다. 그렇기 때문에 가장 오른쪽 기준점을 최소 주파수로 설정하여 고주파가 점점 필터링되도록 해봅시다.
시간에 따른 곡선 설계는 오토메이션/자동화라고 부릅니다.
-
가장 오른쪽에 있는 기준점을 선택하고 Y를 20으로 설정하세요.
이제 새로운 기준점을 추가하여 Low pass를 각 최소 주파수에 설정해봅시다.
-
곡선을 더블 클릭한 다음 기준점을 1.5(X)와 20(Y)으로 설정하세요.
또한 특정 곡선 타입으로 설정하여 기준점 간의 전환이 더 원활하게 만들 수 있습니다.
-
곡선의 가장 왼쪽을 우클릭하고 Logarithmic (Base 1.41)을 선택하세요.
SoundBank 메모리(SoundBank 안에서 IR의 크기) 사용량만 눈에 띄게 감소하고 엔진 내부 메모리(IR을 처리하는 데 필요한 런타임 메모리)는 감소하지 않은 것이 보이시나요? 그 이유는 시간에 따른 저주파의 볼륨만 감소하고 IR은 여전히 같은 길이로 남아 있기 때문입니다.
IR의 길이를 감소하기 위해서는 End 커서를 조정할 수 있습니다. Information and statistics 창에 RT60 값이 보이실 거예요. 이 값은 신호가 -60dB 아래로 디케이(decay)할 경우를 표시하기 때문에 이 값을 사용해서 End 커서를 설정할 수 있습니다.
-
RT60 입력란에 적힌대로 End 커서를 1.0로 드래그하세요.
IR 설정을 조절하면 RT60 값이 다시 변경될 수 있습니다. 알맞은 임펄스 반응을 설계하면 IR Threshold와 Smooth 속성을 사용하여 주파수 반응을 최적화할 수 있습니다.
여기에서 설명하는 IR Threshold 및 Smooth 속성 외에도 다음 속성을 사용할 수 있습니다.
-
HW Acceleration: 일부 플랫폼은 하드웨어 리소스를 사용해서 컨볼루션 처리를 가속화할 수 있습니다. 이 옵션을 활성화하면 CPU 사용량을 줄일 수 있습니다. 계속 진행하기 전에 선택한 플랫폼에서 하드웨어 가속에 대해 발생 가능한 부작용이나 추가 요구 사항을 확인하세요.
-
Input Threshold: 입력된 고역대의 사운드가 이 스레숄드보다 낮으면 이를 삭제합니다. 해당 성능 차이는 다른 요소에 비해 작기 때문에 대부분의 경우 변경할 필요가 없습니다.
-
Block Size: 컨볼루션 효과를 위해 처리되는 블록의 크기를 결정합니다. 크기가 증가하면 CPU 사용량이 감소하고 대기 시간이 늘어납니다.
이 기능에 대한 자세한 내용은 AK Convolution Reverb를 참고하세요.
주파수 영역의 IR은 보통 시간이 지나면서 힘을 어느 정도 잃게 됩니다. 아래 주파수 영역에서의 IR 스펙트럼이 보이실 거예요.
IR Threshold 속성을 쓰면 검은색 영역이 IR에 얼마큼 인코딩되어야 할지를 정의할 수 있습니다. 위에 예시에서 보신 것처럼 -70dB 정도가 되면 모든 힘이 사라지게 됩니다.
그렇기 때문에 안전하게 IR Threshold를 급격히 줄이고 인코딩된 IR에서 필요한 신호만 보존할 수 있습니다. IR Threshold가 에일리어싱(aliasing, 우둘투둘한 계단식 곡선)을 만들어낼 경우 Smooth 속성을 사용해서 곡선을 매끄럽게 할 수 있습니다. 곡선이 매끄러울수록 최적화하는 정도가 감소합니다. 이제 IR Threshold를 -73dB로 줄이고 약간 매끄럽게 해봅시다.
-
-
Threshold를 -73으로 설정하세요.
-
Smooth를 18로 설정하세요.
모든 음원은 SoundBank에 패키징되면서 참조된 Event를 사용하지만 임펄스는 그렇지 않습니다. 그렇기 때문에 모든 임펄스 반응은 SoundBank에 수동으로 추가되어야 합니다. 이제 임펄스 반응이 사용되는 All_In_One SoundBank에 임펄스 반응을 추가해봅시다.
-
Layouts 메뉴에서 SoundBank를 선택하세요.
-
Project Explorer의 ShareSets 탭에서 Effects > Default Work Unit > Reverbs를 펼치고 WAG_Desert를 선택하세요.
-
이제 WAG_Desert ShareSet를 All_In_One SoundBank로 드래그하세요.
마지막으로 이전에 Player_Pickup에 설정한 User-Defined Auxiliary Send를 선택 해제해야 합니다.
-
Layouts 메뉴에서 Designer를 선택하세요.
-
Projet Explorer에서 Actor-Mixer Hierarchy > Default Work Unit > World > Player > Player를 펼치고 Player_Pickup Switch Container를 선택하세요.
-
User-Defined Auxiliary Sends 그룹 상자에서 Override parent를 비활성화하세요.
이제 Wwise Convolution Reverb를 활성화하고 최적화하는 법을 배웠습니다. 이제 나머지 Auxiliary Bus가 WAG에서 어떻게 적용되는지 검토해보세요.