메타사운드 는 오디오 디자이너가 사운드 소스를 생성하기 위해 디지털 신호 처리(Digital Signal Processing, DSP) 그래프를 완벽하게 제어할 수 있게 해 주는 하이 퍼포먼스 오디오 시스템입니다.
이 가이드에서는 폭발 사운드 이펙트와 주변의 바람 소리를 표현하기 위해 두 가지 게임플레이 기반 메타사운드 소스 를 생성하는 방법을 살펴봅니다.
전제 조건
이 가이드에 따라 첫 번째 메타사운드를 생성하려면 먼저 시작용 콘텐츠(Starter Content) 를 사용하여 새로운 일인칭 템플릿 프로젝트를 생성해야 합니다.
1 - 폭발 메타사운드 생성
소총이 발사될 때 사운드가 발생하지만 발사체 자체는 사운드가 없습니다. 여기에서는 메타사운드를 사용하여 발사체에 사용할 폭발 사운드 이펙트를 생성해봅니다.
1A - 메타사운드 소스 생성
이것은 3D 공간 내에서 사운드 소스로 사용되므로, 사운드 어테뉴에이션 에셋 을 어태치하여 메타사운드 소스를 생성하는 작업을 시작합니다.
-
메타사운드 소스를 생성합니다.
-
콘텐츠 브라우저 에서 추가(Add) 버튼을 클릭합니다.
-
오디오(Audio) > 메타사운드 소스(MetaSound Source) 를 선택합니다.
-
새로 생성한 에셋의 이름을 MSS_Bomb과 같이 짓습니다.
-
-
메타사운드를 더블클릭하여 메타사운드 에디터(MetaSound Editor) 를 엽니다.
-
리스너의 위치에 따라 메타사운드가 공간화되고 어테뉴에이션되도록 어테뉴에이션 세팅(Attenuation Settings) 을 설정합니다.
-
메타사운드 에디터 툴바에서 소스(Source) 버튼을 클릭합니다.
-
디테일(Details) 패널에서 어테뉴에이션(Attenuation) > 어테뉴에이션 세팅 옆의 드롭다운을 클릭합니다.
-
'새 에셋 생성(Create New Asset)'에서 사운드 어테뉴에이션(Sound Attenuation) 을 선택합니다.
-
새로 생성한 에셋의 이름을 SA_Bomb과 같이 짓고 저장합니다.
-
1B - 메타사운드 그래프 빌드
이미지를 클릭하면 전체 크기로 표시됩니다.
메타사운드 소스의 사운드 방식을 제어하는 메타사운드 그래프(MetaSound Graph) 를 빌드합니다. 아래 지침에 따라 위에 표시된 그래프를 생성합니다.
-
On Play Input 노드를 찾아서 핀을 빈 공간으로 드래그합니다. 노드 검색에 'Wave Player (Mono)'를 입력하여 연결된 노드를 생성합니다. 그래프에서 노드를 드래그하여 이동할 수 있습니다.
-
Wave Player (Mono) 노드에서 다음을 수행합니다.
-
웨이브 에셋(Wave Asset) 드롭다운을 클릭하여 Fire_Sparks01 사운드 웨이브를 선택합니다.
-
Loop(루프) 를 활성화합니다.
-
Out 모노(Out Mono) 핀에서 드래그하여 Mono Mixer (2) 를 생성합니다.
-
중지(Stop) 핀에서 드래그하여 다른 Wave Player (Mono) 를 생성합니다.
-
-
새 Wave Player (Mono) 노드에서 다음을 수행합니다.
-
완료 시(On Finished) 핀을 On Finished Output 노드에 연결합니다.
-
Out 모노 핀을 Mono Mixer (2) 의 In 1 핀에 연결합니다.
-
재생(Play) 핀에서 드래그하여 Random Get (WaveAsset:Array) 노드를 생성합니다.
-
웨이브 에셋 핀을 Random Get (WaveAsset:Array) 노드의 값(Value) 핀에 연결합니다.
-
-
Random Get (WaveAsset:Array) 노드에서 다음을 수행합니다.
-
다음(Next) 핀에서 드래그하여 그래프 입력으로 승격(Promote to Graph Input) 을 선택합니다. 그러면 이름이 Next인 트리거 입력 노드가 생성됩니다.
-
In 배열(In Array) 핀에서 드래그하여 그래프 변수로 승격(Promote to Graph Variable) 을 선택합니다. 그러면 In Array라는 이름의 WaveAsset:Array 변수 노드가 생성됩니다.
-
-
Mono Mixer (2) 에서 다음을 수행합니다.
-
게인 1(Lin)((Gain 1 (Lin)) 에 2.0을 입력합니다.
-
Out 핀을 Out Mono Output 노드에 연결합니다.
-
1C - 폭발 웨이브 플레이어 입력 조정
Next 트리거를 조정하고 In 배열 변수를 조정합니다.
-
이름이 Next인 트리거 입력 노드를 선택합니다.
-
디테일 패널에서 일반(General) > 입력(Input) 에 'Explode'를 입력하여 이름을 변경합니다. 이 이름은 블루프린트에서 실행하도록 설정할 트리거의 이름이 됩니다.
-
이름이 In Array인 WaveAsset:Array 변수 노드를 선택합니다.
-
디테일 패널에서 일반 > 변수(Variable) 에 'ExplosionArray'를 입력하여 이름을 변경합니다.
-
디폴트 값(Default Value) > 디폴트(Default) 에 대해 추가(Add)(+) 버튼을 두 번 클릭합니다. 이러한 인덱스에는 랜덤으로 선택할 사운드 웨이브 레퍼런스가 저장됩니다.
-
인덱스0 드롭다운을 클릭하고 Explosion01 사운드 웨이브를 선택합니다.
-
인덱스1 드롭다운을 클릭하고 Explosion02 사운드 웨이브를 선택합니다.
1D - 메타사운드 재생
메타사운드를 이제 재생할 수 있습니다.
-
메타사운드 에디터 툴바에서 재생(Play) 버튼을 클릭하여 메타사운드를 재생합니다. 메타사운드가 완료되기 전에 ExplosionArray 의 랜덤 폭발 사운드가 재생되는 지점에서 Explode 트리거가 실행될 때까지 스파크 사운드가 루프됩니다. 메타사운드가 재생되는 동안 트리거 입력 노드의 오른쪽 상단에 있는 아래쪽 화살표 모양의 실행(Execute) 버튼을 클릭하여 Explode 트리거의 실행을 시뮬레이션할 수 있습니다.
-
메타사운드 소스를 저장하고 메타사운드 에디터를 닫습니다.
2 - 블루프린트에 폭발 로직 추가
폭발 사운드를 디자인한 후 투사체의 블루프린트를 사용하여 런타임 로직을 구성합니다.
2A - 투사체 블루프린트 열기
사전 빌드된 투사체 블루프린트를 엽니다.
-
콘텐츠 브라우저 에서
All/Content/FirstPerson/Blueprints로 이동합니다. -
BP_FirstPersonProjectile 을 더블클릭하여 블루프린트 에디터(Blueprint Editor) 에서 엽니다.
2B - 블루프린트 그래프 빌드
투사체 수명을 기반으로 폭발 메타사운드를 제어하기 위해 기존 블루프린트 그래프 에 추가합니다.
-
빈 공간을 우클릭하고 Event BeginPlay 노드를 생성합니다.
-
Event BeginPlay 노드에서 드래그하여 Spawn Sound Attached 노드를 생성합니다.
-
Spawn Sound Attached 노드에서 다음을 수행합니다.
-
사운드(Sound) 드롭다운을 클릭하여 폭발 메타사운드를 선택합니다.
-
컴포넌트에 어태치(Attach to Component) 핀에서 드래그하여 Get Sphere 노드를 생성합니다.
-
반환 값(Return Value) 핀에서 드래그하여 Execute Trigger Parameter 노드를 생성합니다.
-
Alt 키를 누른 상태로 실행 출력(Exec Output) (>) 핀을 클릭하여 Spawn Sound Attached 와 Execute Trigger Parameter 노드 사이의 연결을 제거합니다.
-
-
Execute Trigger Parameter 노드에서 다음을 수행합니다.
-
In 이름(In Name) 에 'Explode'를 입력합니다.
-
실행 입력(Exec Input) (>) 핀에서 드래그하여 Event Destroyed 노드를 생성합니다.
-
-
변경사항을 블루프린트에 저장하고 블루프린트 에디터를 닫습니다.
2C - 레벨 테스트
이제 블루프린트를 테스트할 수 있습니다.
레벨 에디터(Level Editor) 툴바에서 플레이(Play) 버튼을 클릭하고 이동해서 소총을 집어 들고 왼쪽 클릭으로 발사를 시작해서 작업 내용을 확인합니다.
투사체가 공간화되고 다이내믹한 사운드를 생성합니다. 파란색 박스와 접촉하거나 짧은 시간이 지난 후 투사체가 폭발할 때까지 스파크 사운드가 루프됩니다.
3 - 바람 메타사운드 생성
씬에 현장감을 더하기 위해 주변의 바람에 사용할 메타사운드를 생성합니다.
3A- 메타사운드 소스 생성
메타사운드 소스 에셋을 하나 더 생성합니다. 이 사운드는 3D 공간 내에서 공간화되지 않으므로, 사운드 어테뉴에이션 에셋을 어태치할 필요가 없습니다.
-
메타사운드 소스를 생성합니다.
-
콘텐츠 브라우저 에서 추가 버튼을 클릭합니다.
-
오디오 > 메타사운드 소스 를 선택합니다.
-
MSS_Wind와 같이 이름을 짓습니다.
-
-
메타사운드를 더블클릭하여 메타사운드 에디터를 엽니다.
3B - 메타사운드 디테일 조정
그래프를 빌드하기 전에 퍼시스턴트 스테레오 오디오를 지원하도록 메타사운드의 디폴트 프로퍼티를 조정합니다.
-
'인터페이스(Interfaces)' 패널에서 UE.Source.OneShot 인터페이스 항목 옆에 있는 휴지통 모양의 제거(Remove) 버튼을 클릭합니다. 그러면 주변 환경 또는 음악 등의 퍼시스턴트 사운드에 사용되지 않는 On Finished Output 노드가 제거됩니다.
-
메타사운드 에디터 툴바에서 메타사운드(MetaSound) 버튼을 클릭합니다.
-
디테일 패널에서 메타사운드 > 출력 포맷(Output Format) 드롭다운을 클릭하고 스테레오(Stereo) 를 선택합니다. 그러면 Out Mono Output 노드가 Out Left 및 Out Right Output 노드로 대체됩니다.
3C - 메타사운드 그래프 빌드
이미지를 클릭하면 전체 크기로 표시됩니다.
메타사운드 소스의 사운드 방식을 제어하는 메타사운드 그래프 를 빌드합니다. 아래 지침에 따라 위에 표시된 그래프를 생성합니다.
-
On Play Input 노드를 선택하고 Delete 키를 사용하여 삭제합니다. 이 그래프에서는 필요하지 않습니다.
-
Out Left 핀에서 드래그하여 Stereo Mixer) (2) 노드를 생성합니다.
-
Out Right 핀을 Stereo Mixer (2) 노드의 Out R 핀에 연결합니다.
-
빈 공간을 우클릭하고 Noise 노드를 생성합니다.
-
Noise 노드의 오디오 핀에서 드래그하여 One-Pole Low Pass Filter 노드를 생성합니다.
-
선택 박스를 드래그하여 Noise 및 One-Pole Low Pass Filter 노드를 선택합니다.
-
선택한 노드를 우클릭하고 복제(Duplicate) 를 선택합니다.
-
새 Noise 노드에서 시드(Seed) 에 1을 입력합니다. 그러면 노이즈 생성 시 변화가 생깁니다.
-
One-Pole Low Pass Filter 노드 중 하나에서 Out 핀을 Stereo Mixer (2) 노드의 In 0 L 핀에 연결합니다.
-
다른 One-Pole Low Pass Filter 노드에서 Out 핀을 Stereo Mixer (2) 노드의 In 0 R 핀에 연결합니다.
-
빈 공간을 우클릭하고 LFO 노드를 생성합니다.
-
LFO 노드에서 다음을 수행합니다.
-
주파수(Frequency) 에 0.1을 입력합니다.
-
최솟값(Min Value) 에 20.0을 입력합니다.
-
최댓값(Max Value) 에 80.0을 입력합니다.
-
Out 핀을 One-Pole Low Pass Filter 노드의 두 컷오프 주파수(Cutoff Frequency) 핀에 모두 연결합니다.
-
-
Stereo Mixer (2) 노드에서 게인 0(Lin)(Gain 0 (Lin)) 핀에서 드래그하여 InterpTo 노드를 생성합니다.
-
InterpTo 노드에서 다음을 수행합니다.
-
보간 시간(Interp Time) 에 0.3을 입력합니다.
-
타깃(Target) 핀에서 드래그하여 Add (Float) 노드를 생성합니다.
-
-
Add (Float) 노드에서 다음을 수행합니다.
-
하단 가수(Bottom Addend) 에 2.0을 입력합니다.
-
상단 가수(Top Addend) 핀에서 드래그하여 Multiply (Float) 노드를 생성합니다.
-
-
Multiply (Float) 노드에서 다음을 수행합니다.
-
하단 피제수(Bottom Multiplicand) 에 3.0을 입력합니다.
-
상단 피제수 핀에서 드래그하여 그래프 입력으로 승격 을 선택합니다. 그러면 이름이 PrimaryOperand인 Float Input 노드가 생성됩니다.
-
-
PrimaryOperand Float Input 노드를 선택합니다.
-
디테일 패널에서 일반 > 입력 에 'PawnSpeed'를 입력하여 이름을 변경합니다.
3D - 메타사운드 재생
메타사운드를 이제 재생할 수 있습니다.
-
메타사운드 에디터 툴바에서 재생 버튼을 클릭하여 메타사운드를 재생합니다. 중지 버튼을 클릭할 때까지 다이내믹한 바람 같은 사운드가 스테레오로 재생됩니다. 신호 게인은 PawnSpeed Float Input 노드의 영향을 받습니다. 해당 노드에서 입력 위젯(다이얼)(Input Widget (Dial)) 을 클릭하고 위아래로 드래그하여 PawnSpeed 값을 시뮬레이션할 수 있습니다.
-
메타사운드 소스를 저장하고 메타사운드 에디터를 닫습니다.
4 - 블루프린트에 바람 로직 추가
바람 사운드를 디자인한 후 레벨 블루프린트 를 사용하여 런타임 로직을 구성합니다.
4A - 레벨 블루프린트 열기
레벨 블루프린트를 열려면 레벨 에디터 툴바에서 블루프린트 버튼을 클릭하고 레벨 블루프린트 열기(Open Level Blueprint) 를 선택합니다.
4B - 블루프린트 그래프 빌드
이미지를 클릭하면 전체 크기로 표시됩니다.
블루프린트 그래프를 빌드하여 플레이어 무브먼트를 기반으로 바람 메타사운드를 제어합니다.
-
빈 공간을 우클릭하고 Event BeginPlay 노드를 생성합니다.
-
Event BeginPlay 노드를 드래그하여 Spawn Sound 2D 노드를 생성합니다.
-
Spawn Sound 2D 노드에서 다음을 수행합니다.
-
사운드 드롭다운을 클릭하여 바람 메타사운드를 선택합니다.
-
반환 값 을 드래그하여 Set Float Parameter 노드를 생성합니다.
-
Alt 키를 누른 상태로 실행 출력(>) 핀을 클릭하여 Spawn Sound 2D 와 Set Float Parameter 노드 사이의 연결을 제거합니다.
-
-
Set Float Parameter 노드에서 다음을 수행합니다.
-
입력 이름 에 'PawnSpeed'를 입력합니다.
-
실행 입력(>) 핀에서 드래그하여 Event Tick 노드를 생성합니다.
-
-
빈 공간을 우클릭하고 Get Player Pawn 노드를 생성합니다.
-
Get Player Pawn 노드의 반환 값 핀에서 드래그하여 Get Velocity 노드를 생성합니다.
-
Get Velocity 노드의 반환 값 핀에서 드래그하여 Vector Length 노드를 생성합니다.
-
Vector Length 노드의 반환 값 핀에서 드래그하여 Map Range Clamped 노드를 생성합니다.
-
Map Range Clamped 노드에서 다음을 수행합니다.
-
In 범위 A(In Range A) 에 200.0을 입력합니다.
-
In 범위 B(In Range B) 에 1000.0을 입력합니다.
-
Out 범위 B(Out Range B) 에 1.0을 입력합니다.
-
반환 값 핀을 Set Float Parameter 노드의 In 플로트(In Float) 핀에 연결합니다.
-
-
변경사항을 블루프린트에 저장하고 블루프린트 에디터를 닫습니다.
4C - 레벨 테스트
이제 블루프린트를 테스트할 수 있습니다.
레벨 에디터 툴바에서 재생 버튼을 클릭하고 주위를 이동하면서 작업 내용을 확인합니다.
가만히 있으면 바람 사운드가 낮은 볼륨으로 재생되고 빠르게 이동하면 볼륨이 커집니다.
5 - 직접 해보기!
이제 두 가지 기본 메타사운드를 생성하는 작업이 완료되었으므로, 이 프로젝트를 더 확장할 수 있습니다. 다음은 사용자가 직접 탐색해볼 수 있는 몇 가지 제안 사항입니다.
-
몇 가지 추가 노드를 사용하여 메타사운드를 변경합니다. 노드 라이브러리 및 기타 메타사운드 기능에 대한 자세한 내용은 메타사운드 레퍼런스 가이드를 참고하세요.
-
디폴트 소총 발사 사운드를 메타사운드로 변경합니다. 발사 속도, 발사 거리 또는 기타 변수에 따라 사운드를 다이내믹하게 변경합니다.
-
걷기, 점프, 아이템 줍기와 같은 플레이어 액션에 메타사운드를 추가합니다.
-
이 가이드에서 만든 간단한 바람 구현을 향상합니다. 패닝 및 환경 응답과 같은 추가 기능을 지원하는 고급 구현 예시는 라이라 샘플 게임 프로젝트를 참고하세요.