하모닉스(Harmonix) 플러그인은 패치워크(Patchwork) 및 포트나이트 페스티벌 제작에 사용된 기능과 메타사운드 노드, 컴포넌트를 제공합니다. 이러한 툴은 MIDI 시퀀싱, 오디오 분석 및 음악 합성을 활용하므로 사용자는 자신만의 음악 중심 경험을 만들 수 있습니다.
하모닉스 플러그인을 활성화하는 방법은 다음과 같습니다.
- 편집(Edit) > 플러그인(Plugins) 을 선택하여 플러그인 패널을 엽니다.
- 플러그인 패널에서 검색창을 사용하여 Harmonix 플러그인을 찾습니다.
- 해당하는 체크박스를 클릭합니다.
- 언리얼 에디터를 재시작합니다.
일반 기능
MIDI 파일 임포트하기
MIDI 파일을 콘텐츠 브라우저(Content Browser) 에 드래그 앤 드롭하여 프로젝트에 임포트할 수 있습니다.
퓨전 패치 에셋
퓨전 패치(Fusion Patches)는 다양한 MIDI 음표와 속도를 사운드 웨이브(Sound Wave) 에셋에 매핑하는 에셋입니다. 퓨전 패치는 퓨전 샘플러 메타사운드 노드의 악기 샘플러 기능을 구동합니다.
퓨전 패치 에셋을 생성하는 방법은 다음과 같습니다.
- 콘텐츠 브라우저 에서 매핑하려는 각 사운드 웨이브를 선택합니다.
- 선택한 사운드 웨이브 중 하나를 우클릭합니다.
- 컨텍스트 메뉴에서 퓨전 패치 생성(Create Fusion Patch) 을 선택합니다.
- 새 퓨전 패치 옵션(New Fusion Patch Options) 창에서 원하는 옵션을 설정합니다.
- 확인(OK) 을 클릭합니다.
Engine\Plugins\Runtime\Harmonix\Content\Examples\Patches 에 예시 퓨전 샘플러 패치 에셋이 있습니다. 콘텐츠 브라우저 세팅에서 엔진 콘텐츠 표시(Show Engine Content) 및 플러그인 콘텐츠 표시(Show Plugin Content) 를 활성화하면 콘텐츠 브라우저에서 이러한 예시 에셋을 찾을 수 있습니다.
피크 테이머
오디오 반응형 비주얼 또는 게임플레이를 제작할 때는 오디오 에너지 레벨이나 기타 사운드 관련 분석값에서 [0.0, 1.0] 범위 내의 스무딩된 값을 얻는 것이 유용할 때가 많습니다. 메타사운드 내에서 Compressor 노드나 Envelope Follower 노드를 사용하여 이러한 작업을 수행할 수도 있지만, 오디오 스레드에서 수행하려면 비용이 많이 소모될 수 있습니다. 피크 테이머(Peak Tamer)는 게임 스레드에서 작동하여 메타사운드 소스 출력과 기타 값을 스무딩하고 압축합니다.
피크 테이머 타입에는 다음 두 가지가 있습니다.
Harmonix::AudioReactivity::FPeakTamerUHarmonixPeakTamer
두 타입 모두 기능면에서는 비슷하지만, UHarmonixPeakTamer 는 블루프린트에서 사용할 수 있습니다. Configure 메서드를 통해 FHarmonixPeakTamerSettings 을 사용하여 피크 테이머의 스무딩 및 압축 세팅을 환경설정할 수 있습니다.
메타사운드 노드
하모닉스 플러그인에는 MIDI 생성, 필터링 및 조작에 쓰는 메타사운드 노드 컬렉션이 포함되어 있습니다. 이러한 노드는 노드 선택 컨텍스트 메뉴의 함수(Functions) > 하모닉스(Harmonix) 에 있습니다.
각 노드와 노드의 핀에 대한 자세한 내용은 마우스를 올리면 표시되는 툴팁을 확인하세요. 아래에서 일부 노드에 대한 더 자세한 내용을 확인할 수 있습니다.
Fusion Sampler
Fusion Sampler 노드는 지정된 퓨전 샘플러 패치(Fusion Sampler Patch)를 사용하여 입력 MIDI 스트림을 렌더링함으로써 악기 샘플러 기능을 합니다. 이 패치는 MIDI 음표를 키존에 매핑하여 입력 스트림의 MIDI 음표에 따라 오디오 샘플이 재생되도록 합니다.
Fusion Sampler 노드는 멀티스레드 렌더링을 지원합니다. Fusion Sampler 노드 하단에 있는 확장 화살표를 클릭하여 입력 핀을 찾습니다.
멀티스레딩을 지원하려면 Fusion Sampler 노드의 오디오 출력과 렌더 동기화 출력을 Fusion Synchronizer 노드에 연결한 후 그래프의 다른 곳에서 해당 노드의 오디오 출력을 레퍼런스해야 합니다.
Step Sequence Player
Step Sequence Player 노드는 MIDI 클럭(MIDI Clock), 음악 트랜스포트(Music Transport) 및 MIDI 스텝 시퀀스(MIDI Step Sequence) 에셋을 사용하여 MIDI 이벤트 스트림을 생성합니다. MIDI 스텝 시퀀스는 행이 음표를 나타내고 열이 시간 단위를 나타내는 2D 셀 그리드입니다.
Step Sequence Player 노드를 재생하는 동안 MIDI 스텝 시퀀스 에셋을 수정할 수 있습니다.
Clock-Synced Delay
Clock-Synced Delay 노드는 지정된 MIDI 클럭과 동기화하여 입력 오디오 신호에 딜레이 이펙트를 적용합니다. 이 노드는 음악적으로 타이밍된 오디오 이펙트를 생성한다는 점에서 디폴트 Delay MetaSound 노드와는 다릅니다.
컴포넌트
하모닉스 플러그인은 MetaSoundMusic 카테고리에서 다음과 같이 블루프린트에서 액세스할 수 있는 컴포넌트를 제공합니다.
- 음악 클럭(Music Clock)
- 음악 템포미터(Music Tempometer)
음악 클럭
음악 클럭(Music Clock) 컴포넌트는 C++와 블루프린트에서 음악적 타이밍과 동기화를 구동하여 리드미컬한 게임플레이 시스템과 애니메이션 등을 지원합니다.
음악 클럭은 주로 메타사운드 그래프에서 비동기식으로 렌더링되는 음악 시간에 게임플레이 이벤트와 그래픽 렌더링을 동기화하는 데 사용되지만, 기본 템포 및 타임 시그니처와도 동기화할 수 있습니다.
메타사운드로 구동되는 경우, 시계의 시간 관련 가져오기 메서드는 다음 시간 컨텍스트 중 하나를 제공합니다.
AudioRenderTime- 오디오가 렌더링되는 스무딩된 위치를 제공합니다. 현재 노래 시간에 기반하여 음악 이벤트를 큐에 등록할 때 유용합니다. 이 시간은 렌더링된 음악이 플레이어의 귀에 전달될 때까지의 시간을 고려하지 않습니다.ExperienceTime- 올바르게 캘리브레이션된 경우, 플레이어가 무얼 듣고 보는지 알려줍니다. 플레이어 입력을 평가할 때 유용합니다.VideoRenderTime- 올바르게 캘리브레이션된 경우, 지금 당장 음악과 동기화되어 무엇이 드로잉되어야 하는지 알려줍니다. 애니메이션, UI 및 기타 비주얼을 음악과 동기화하는 데 유용합니다.
음악 클럭은 재생 중인 메타사운드와 별도로 전송됩니다. 이는 기본 음악을 계속 재생하는 동안 클럭에 동기화된 게임 시스템을 일시정지하는 데 유용합니다. 예를 들어, 플레이어가 게임 UI와 상호작용하는 동안 클럭을 일시정지했다가 상호작용이 완료된 다음 클럭을 계속 진행할 수 있습니다. 그런 경우, 계속 진행하면 클럭이 메타사운드에서 렌더링한 현재 시각에 다시 맞춰집니다.
음악 템포미터
음악 템포미터(Music Tempometer) 컴포넌트는 그 액터에 음악 클럭 컴포넌트의 재생 프로퍼티를 제공하며, 선택적으로 머티리얼 파라미터 컬렉션(Material Parameter Collection)을 업데이트합니다.