개요
오디오 모듈레이션(Audio Modulation) 시스템은 블루프린트 및 컴포넌트 시스템으로부터 일반적인 부동 소수점 오디오 파라미터에 대한 제어를 제공합니다. 이 시스템에는 오디오 소스 믹스, 동적 제어 및 오디오 프로퍼티 파라미터화 측면에서 이전 버전의 언리얼 엔진보다 한층 개선되고 보다 직관적이며 동적인 기능 서브세트가 포함되어 있습니다.
이 가이드에서는 게임 오디오에서 사용할 기본 볼륨 기반 컨트롤 버스(Control Bus) 구조체를 빌드하는 방법을 살펴봅니다.
Goals
오디오 모듈레이션 플러그인(Audio Modulation Plugin)으로 게임 오디오에서 사용할 기본 볼륨 기반 컨트롤 버스 구조체를 빌드합니다.
학습 목표
컨트롤 버스와 컨트롤 버스 믹스 오브젝트의 컬렉션을 생성하여 사운드 에셋에 볼륨 믹싱을 적용합니다.
컨트롤 버스를 메타사운드 소스(MetaSound Source) 및 사운드 클래스(Sound Class)에 할당합니다.
믹스 매트릭스 디버거(Mix Matrix Debugger)를 사용하여 컨트롤 버스의 현재 값을 확인합니다.
블루프린트에서 컨트롤 버스를 조정합니다.
1 - 필수 구성
새 프로젝트를 생성하고 게임(Games) 카테고리에서 삼인칭(Third Person) 템플릿을 선택합니다. 프로젝트의 위치와 이름을 입력합니다. 생성(Create)을 클릭합니다.
세팅(Settings) > 플러그인(Plugins)을 클릭하여 플러그인 창을 엽니다.
오디오 모듈레이션 및 메타사운드(MetaSound) 플러그인을 검색해서 활성화합니다. 언리얼 엔진을 재시작합니다.
섹션 결과
이 섹션에서는 새 프로젝트를 생성하고 '오디오 모듈레이션'과 '메타사운드' 플러그인을 활성화했습니다. 이제 컨트롤 버스를 생성할 준비가 되었습니다.
2 - 컨트롤 버스 생성
콘텐츠 브라우저에서 우클릭하고 오디오(Audio) > 모듈레이션(Modulation) > 컨트롤 버스를 선택합니다. 에셋을
CB_Main으로 명명합니다.CB_Main을 열고 파라미터(Parameter) 드롭다운을 클릭합니다. 톱니바퀴 모양의 아이콘을 클릭하여 플러그인 콘텐츠 표시(Show Plugin Content) 체크박스를 활성화합니다. 모듈레이션 플러그인은 언리얼 엔진 플러그인이므로 엔진 콘텐츠 표시(Show Engine Content)를 선택해야 할 수 있습니다.볼륨(Volume) 파라미터를 검색하여 선택합니다. 주파수(Frequency), 팬(Pan), 피치(Pitch) 등의 다른 파라미터도 사용할 수 있습니다.
콘텐츠 브라우저에서 디자이너 및 사용자용 컨트롤 버스를 저장할 폴더를 두 개 생성합니다. 아래 예시에서는 각 폴더를
Buses_Designer와Buses_User로 명명했습니다.CB_Main을 우클릭하고 복제(Duplicate)를 선택합니다. 새 에셋을CB_Ambience으로 명명합니다.이 과정을 두 번 더 반복하여
CB_Foley와CB_Footsteps를 생성합니다. 세 에셋을 모두 선택하고Buses_Designer폴더로 옮깁니다.이전 단계를 반복하여
CB_Dialogue,CB_Music및CB_SFX를 생성합니다. 이를Buses_User폴더로 옮깁니다.
모범 사례: 컨트롤 버스를 사운드에 직접 적용하는 대신 해당 사운드에 적절한 사운드 클래스(예: 'SFX' 사운드 클래스, 'Music' 사운드 클래스 등)를 부여하고, 그 클래스에 컨트롤 버스를 대신 적용합니다.
섹션 결과
이 섹션에서는 프로젝트에 할당된 모든 오디오의 볼륨을 모듈레이트할 메인 컨트롤 버스를 생성했습니다. 또한 사용자 및 디자이너용 컨트롤 버스도 생성했습니다. 이제 메인 컨트롤버스를 프로젝트의 마스터 사운드 클래스에 할당할 준비가 되었습니다.
3 - 사운드 에셋에 컨트롤 버스 할당
세팅(Settings) > 프로젝트 세팅(Project Settings)을 클릭하여 프로젝트 세팅을 엽니다.
엔진(Engine) 섹션으로 스크롤을 내려 오디오(Audio) 카테고리를 선택합니다. 오디오 섹션으로 가서 마스터 기본 사운드 클래스(Master Default Sound Class)를 더블클릭하여 엽니다.
디테일(Details) 패널에서 모듈레이션 섹션으로 이동한 후 볼륨(Volume) 옆의 모듈레이트(Modulate) 체크박스를 활성화합니다.
볼륨 모듈레이터 옆의 +를 클릭하여
CB_Main을 Index[0]에 추가합니다.
CB_Main컨트롤 버스를 프로젝트에 포함된 아무거나 다른 사운드 클래스에 추가해도 모든 사운드가 동일한 컨트롤 버스를 사용하여 믹스됩니다. 사운드 클래스 레퍼런스 계층구조는 모듈레이션과 믹스 구조체에 의해 관찰되지 않습니다. 각 사운드 클래스는 해당 사운드 클래스를 레퍼런스하는 사운드 에셋에 적용될 컨트롤 버스를 모두 나열해야 합니다.
섹션 결과
이 섹션에서는 CB_Main 컨트롤 버스를 마스터 사운드 클래스에 할당했습니다. 이제 샘플 메타사운드 에셋을 생성하여 게임플레이 도중에 믹스를 테스트할 준비가 되었습니다.
4 - 샘플 메타사운드 생성
콘텐츠 브라우저에서 우클릭하고 오디오 > 메타사운드 소스를 선택합니다. 에셋을
MS_Sample로 명명합니다.콘텐츠 브라우저에서
MS_Sample을 더블클릭하여 엽니다.왼쪽의 인터페이스(Interfaces) 패널로 가서 UE.Source.OneShot 옆의 제거(Remove) 아이콘을 클릭하여 제거합니다.
이벤트 그래프(Event Graph)에서 우클릭하고 Wave Player (Mono)를 검색하여 선택합니다.
Input 노드를 Wave Player 노드의 재생 핀에 연결합니다.
Wave Player 노드의 아웃 모노(Out Mono) 핀을 Output 노드에 연결합니다.
웨이브 에셋(Wave Asset) 드롭다운을 클릭하고 사운드 에셋을 선택합니다. 이 예시에서는 EndPlayInEditor가 선택되어 있습니다.
루프(Loop) 체크박스를 활성화합니다.
툴바의 소스(Source)를 클릭하고 디테일 패널로 스크롤을 내립니다.
모듈레이션 카테고리를 펼칩니다.
볼륨 라우팅(Volume Routing) 드롭다운을 클릭하여 유니언(Union)을 선택합니다.
볼륨 옆의 모듈레이트 체크박스를 활성화합니다.
볼륨 모듈레이터 옆의 +를 클릭하여
CB_SFX를 Index[0]에 추가합니다.
MS_Sample을 레벨에 드래그합니다.
섹션 결과
이 섹션에서는 사운드 에셋을 계속해서 재생할 단순 메타사운드를 생성했습니다. 이제 컨트롤 버스 믹스(Control Bus Mix)를 컨트롤 버스에 적용할 준비가 되었습니다.
5 - 믹스 적용
이 섹션에서는 컨트롤 버스 믹스를 생성하여 Buses_User 폴더의 모든 컨트롤 버스에 적용합니다. 이 단계를 따라 하면 Buses_Designer 폴더에서도 모든 컨트롤 버스의 컨트롤 버스 믹스를 생성할 수 있게 됩니다. 믹스에 포함할 수 있는 항목에 대해서는 따로 엄격한 규칙이 있지는 않습니다.
믹스를 여러 개 활성화하여 단일 컨트롤 버스 또는 그룹에 적용할 수 있습니다. 하지만 지정된 믹스의 단일 인스턴스는 한 번에 하나씩만 활성화할 수 있습니다.
콘텐츠 브라우저에서 우클릭하고 오디오 > 모듈레이션 > 컨트롤 버스 믹스를 선택합니다. 에셋을
CM_User로 명명합니다.'CM_User'를 열고 '믹스 스테이지(Mix Stages)' 섹션으로 갑니다.
믹스 스테이지 옆의 +를 클릭하여 새 믹스를 추가합니다.
버스(Bus) 드롭다운을 클릭하고
CB_Dialogue를 선택합니다.
위 단계를 반복하여
CB_Music및CB_SFX를 믹스 스테이지에 추가합니다.재생(Play)을 눌러 런타임으로 들어갑니다.
Shift-F1을 눌러 마우스 컨트롤을 가져옵니다.
CM_User로 가서 믹스 활성화(Activate Mix)를 클릭합니다.CB_SFX값을 변경하여 실시간으로 적용되는 변경사항을 확인합니다.
섹션 결과
이 섹션에서는 CM_User 컨트롤 믹스를 생성하여 프로젝트의 컨트롤 버스에 적용했습니다. 또한 CB_SFX 컨트롤 버스를 사용하여 게임플레이 도중에 믹스를 활성화하고 사운드 볼륨을 변경했습니다.
6 - 믹스 디버그
게임플레이 도중에 ~ 키를 눌러 콘솔 창을 엽니다.
au.Debug.Modulation.Enable.Matrix 1명령을 입력하여 사운드 모듈레이션 디버깅을 활성화합니다.
au.Debug.Modulation.Filter.Buses [substring]및au.Debug.Modulation.Filter.Mixes [substring]명령을 입력하여 화면에 표시되는 컨트롤 버스 및 컨트롤 믹스 목록을 필터링할 수 있습니다.
섹션 결과
이 섹션에서는 사운드 모듈레이션 디버거를 활성화하고 CB_SFX 컨트롤 버스만 표시하도록 매트릭스를 필터링했습니다.
7 - 블루프린트에서 컨트롤 버스 조정
이 섹션에서는 런타임에 블루프린트에서 컨트롤 믹스를 활성화합니다.
레벨 에디터 툴바에서 블루프린트(Blueprint) 버튼을 클릭하고 레벨 블루프린트 열기(Open Level Blueprint)를 선택합니다.
이벤트 그래프(Event Graph)에서 우클릭한 뒤 Event Begin Play를 검색하여 선택합니다.
Event Begin Play 노드에서 드래그하고 Activate Control Bus Mix를 검색하여 선택합니다.
믹스(Mix) 드롭다운을 클릭하고
CM_User를 선택합니다.
Activate Control Bus Mix 노드에서 드래그하고 Delay를 검색하여 선택합니다.
경과시간(Duration)을 3.0으로 설정합니다.
Delay 노드에서 드래그하고 Set Control Bus Mix By Filter를 선택합니다.
믹스(Mix) 드롭다운을 클릭하고
CM_User를 선택합니다.CB_SFX를 어드레스 필터(Address Filter)에 추가합니다.값(Value)은 0.25를 입력합니다.
재생을 눌러
CM_User컨트롤 버스가 활성화되는지,MS_Sample볼륨이 3초 후에 낮춰지는지 검증합니다.
섹션 결과
이 섹션에서는 CM_User 컨트롤 버스를 활성화하고 CB_SFX 컨트롤 버스를 사용하여 오디오 볼륨을 변경했습니다.