개요
오디오 모듈레이션(Audio Modulation) 시스템은 블루프린트 및 컴포넌트 시스템에서 일반적인 부동 소수점 오디오 파라미터를 제어할 수 있게 해줍니다. 이 시스템에는 오디오 소스 믹스, 동적 제어 및 오디오 프로퍼티 파라미터화 측면에서 이전 버전의 언리얼 엔진보다 한층 향상되고 보다 직관적이며 동적인 기능 서브세트가 포함되어 있습니다.
이 가이드에서는 게임 오디오에서 사용할 기본 볼륨 기반 컨트롤 버스(Control Bus) 구조체를 빌드하는 방법을 살펴봅니다.
목표
오디오 모듈레이션 플러그인(Audio Modulation Plugin) 으로 게임 오디오에서 사용할 기본 볼륨 기반 컨트롤 버스 구조체를 빌드합니다.
학습 목표
-
컨트롤 버스 및 컨트롤 버스 믹스 오브젝트 컬렉션을 생성하여 사운드 에셋에 볼륨 믹싱을 적용합니다.
-
컨트롤 버스를 메타사운드 소스(MetaSound Source) 및 사운드 클래스(Sound Class) 에 할당합니다.
-
믹스 매트릭스 디버거(Mix Matrix Debugger) 를 사용하여 컨트롤 버스의 현재 값을 확인합니다.
-
블루프린트에서 컨트롤 버스를 조정합니다.
1 - 필수 구성
-
새 프로젝트를 생성하여 게임(Games) 카테고리를 선택하고 삼인칭(Third Person) 템플릿을 선택합니다. 프로젝트의 위치와 이름을 입력한 후 생성(Create) 을 클릭합니다.
-
세팅(Setting) > 플러그인(Plugins) 을 클릭하여 플러그인(Plugins) 창을 엽니다.
-
오디오 모듈레이션 및 메타사운드(MetaSound) 플러그인을 찾아 활성화 합니다. 언리얼 엔진을 재시작합니다.
섹션 결과
이 섹션에서는 새 프로젝트를 생성하고 '오디오 모듈레이션'과 '메타사운드' 플러그인을 활성화했습니다. 이제 컨트롤 버스를 생성할 준비가 되었습니다.
2 - 컨트롤 버스 생성
-
콘텐츠 브라우저 에서 우클릭하고 오디오(Audio) > 모듈레이션(Modulation) > 컨트롤 버스 를 선택합니다. 에셋 이름은
CB_Main으로 짓습니다.
-
CB_Main을 열고 파라미터(Parameter) 드롭다운을 클릭합니다. 톱니바퀴 모양의 아이콘을 클릭하여 플러그인 콘텐츠 표시(Show Plugin Content) 체크박스를 활성화합니다. '모듈레이션' 플러그인은 언리얼 엔진 플러그인이므로 엔진 콘텐츠 표시(Show Engine Content) 를 선택해도 됩니다.
-
볼륨(Volume) 파라미터를 검색하여 선택합니다.
콘텐츠 브라우저에서 우클릭하고 컨텍스트 메뉴에서 오디오 > 모듈레이션 > 모듈레이션 파라미터(Modulation Parameter) 를 선택하여 커스텀 파라미터를 생성할 수 있습니다. 그런 다음 목록에서 'SoundModulationParameterVolume' 클래스를 선택합니다.
-
콘텐츠 브라우저 에서 디자이너 및 사용자용 컨트롤 버스를 저장할 폴더를 두 개 생성합니다. 아래 예시에서는 각 폴더의 이름을
Buses_Designer와Buses_User로 지었습니다.
-
CB_Main을 우클릭하고 복제(Duplicate) 를 선택합니다. 새 에셋의 이름을CB_Ambience로 짓습니다.
-
이 과정을 두 번 더 반복하여
CB_Foley와CB_Footsteps를 생성합니다. 세 에셋을 모두 선택하고Buses_Designer폴더로 옮깁니다.
-
이전 단계를 반복하여
CB_Dialogue,CB_Music및CB_SFX를 생성합니다.Buses_User폴더로 옮깁니다.
섹션 결과
이 섹션에서는 프로젝트에 할당된 모든 오디오의 볼륨을 모듈레이트할 메인 컨트롤 버스를 생성했습니다. 또한 사용자 및 디자이너용 컨트롤 버스도 생성했습니다. 이제 메인 컨트롤버스를 프로젝트의 마스터 사운드 클래스에 할당할 준비가 되었습니다.
3 - 사운드 에셋에 컨트롤 버스 할당
-
세팅 > 프로젝트 세팅(Project Settings) 을 클릭하여 프로젝트 세팅 을 엽니다.
-
엔진(Engine) 섹션으로 스크롤을 내려 오디오(Audio) 카테고리를 선택합니다. 오디오 섹션으로 가서 마스터 기본 사운드 클래스(Master Default Sound Class) 를 더블클릭하여 엽니다.
-
디테일(Details) 패널에서 모듈레이션 섹션으로 이동한 후 볼륨 옆의 모듈레이트(Modulate) 체크박스를 활성화합니다.
- 볼륨 모듈레이터(Volume Modulators) 옆의 + 를 클릭하여
CB_Main을 Index[0] 에 추가합니다.
CB_Main컨트롤 버스를 프로젝트에 포함된 아무 사운드 클래스에 추가해도 모든 사운드가 동일한 컨트롤버스를 사용하여 믹스됩니다. 사운드 클래스 레퍼런스 계층구조는 모듈레이션과 믹스 구조체에 의해 관찰되지 않습니다. 각 사운드 클래스는 해당 사운드 클래스를 레퍼런스하는 사운드 에셋에 적용될 컨트롤 버스를 모두 나열해야 합니다. - 볼륨 모듈레이터(Volume Modulators) 옆의 + 를 클릭하여
섹션 결과
이 섹션에서는 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 - 블루프린트에서 컨트롤 버스 조정
이 섹션에서는 런타임에 블루프린트에서 컨트롤 믹스를 활성화합니다.
-
레벨 에디터(Level Editor) 툴바에서 블루프린트(Blueprint) 버튼을 클릭하고 레벨 블루프린트 열기(Open Level Blueprint) 를 선택합니다.
-
이벤트 그래프 에서 우클릭하고 Event BeginPlay 를 검색하여 선택합니다.
-
Event BeginPlay 노드에서 드래그하고 Activate Control Bus Mix 를 검색하여 선택합니다.
- 믹스 드롭다운을 클릭하고
CM_User를 선택합니다.
- 믹스 드롭다운을 클릭하고
-
Activate Control Bus Mix 노드에서 드래그하고 Delay 를 검색하여 선택합니다.
- 경과시간(Duration) 을 3.0 으로 설정합니다.
-
Delay 노드에서 드래그하고 Set Control Bus Mix By Filter 를 선택합니다.
-
믹스 드롭다운을 클릭하고
CM_User를 선택합니다. -
CB_SFX를 어드레스 필터(Address Filter) 에 추가합니다. -
값(Value) 은 0.25 를 입력합니다.
-
-
재생 을 눌러
CM_User컨트롤 버스 가 활성화되는지,MS_Sample볼륨이 3초 후에 낮춰지는지 확인합니다.
섹션 결과
이 섹션에서는 CM_User 컨트롤 버스를 활성화하고 CB_SFX 컨트롤 버스를 사용하여 오디오 볼륨을 변경했습니다.