Sound Mix와 EQ
Sound Mix를 활용한 동적 믹싱, 더킹(Ducking), EQ 설정
Sound Mix 기초
런타임에 Sound Class 파라미터를 동적으로 변경하는 시스템
Sound Mix(USoundMix)는 런타임에 하나 이상의 Sound Class의 볼륨, 피치, EQ를 동적으로 조절하는 에셋입니다. Sound Mix는 Push/Pop 방식으로 스택처럼 동작하며, 여러 Mix가 동시에 활성화될 수 있습니다.
Sound Mix 주요 프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|---|---|
| Sound Class Effects | Array | 각 Sound Class에 적용할 Volume, Pitch 오버라이드 |
| EQ Settings | FAudioEQEffect | 전역 EQ 설정 (Low/Mid/High 주파수별 게인) |
| Fade In Time | float | Mix 활성화 시 페이드 인 시간 |
| Fade Out Time | float | Mix 비활성화 시 페이드 아웃 시간 |
| Duration | float | 자동 비활성화까지의 시간 (-1 = 무한) |
| bApplyEQ | bool | EQ 설정 적용 여부 |
Push/Pop 동작 원리
// Sound Mix Push (활성화)
UGameplayStatics::PushSoundMixModifier(
WorldContext, CombatSoundMix);
// Sound Mix Pop (비활성화)
UGameplayStatics::PopSoundMixModifier(
WorldContext, CombatSoundMix);
// Sound Mix Clear (모든 인스턴스 제거)
UGameplayStatics::ClearSoundMixModifiers(WorldContext);
더킹 (Ducking) 구현
특정 사운드 재생 시 다른 사운드의 볼륨을 자동으로 낮추기
더킹(Ducking)은 중요한 사운드(대사 등) 재생 시 배경음악이나 효과음의 볼륨을 자동으로 낮추는 기법입니다. UE5에서는 Sound Mix의 Push/Pop으로 구현합니다.
대사 더킹 Sound Mix 설정
| Sound Class | Volume Adjust | Pitch Adjust | 효과 |
|---|---|---|---|
| Music | 0.3 | 1.0 | 음악을 30%로 줄임 |
| Ambient | 0.5 | 1.0 | 환경음을 50%로 줄임 |
| SFX | 0.7 | 1.0 | 효과음을 70%로 줄임 |
| Dialogue | 1.0 | 1.0 | 대사는 유지 |
// 대사 시작 시 더킹 Mix Push
void ADialogueManager::StartDialogue(USoundBase* DialogueSound)
{
// 더킹 Mix 활성화 (Fade In: 0.3초)
UGameplayStatics::PushSoundMixModifier(
this, DialogueDuckingMix);
// 대사 재생
DialogueAudioComp->SetSound(DialogueSound);
DialogueAudioComp->Play();
// 재생 완료 시 더킹 해제
DialogueAudioComp->OnAudioFinished.AddDynamic(
this, &ADialogueManager::OnDialogueFinished);
}
void ADialogueManager::OnDialogueFinished()
{
// 더킹 Mix 비활성화 (Fade Out: 0.5초)
UGameplayStatics::PopSoundMixModifier(
this, DialogueDuckingMix);
}
Sound Cue나 MetaSound의 Sound Class에서 bPassiveSoundMixModifier 옵션을 활성화하면, 해당 Sound Class의 사운드가 재생될 때 지정된 Sound Mix가 자동으로 Push됩니다. 코드 없이도 더킹을 구현할 수 있습니다.
EQ 설정
주파수 대역별 게인 조절로 오디오 밸런스 잡기
Sound Mix의 EQ Settings를 통해 전역적인 주파수 밸런스를 조절할 수 있습니다. 4밴드 파라메트릭 EQ를 제공하며, 상황(수중, 실내, 폭발 후 등)에 따라 다른 EQ 프리셋을 적용할 수 있습니다.
EQ 밴드 구성
| 밴드 | 기본 주파수 | 역할 | 게임 활용 예시 |
|---|---|---|---|
| Low | 100 Hz | 저음 (베이스, 폭발 여파) | 수중: Low +6dB, 실내: Low -3dB |
| Mid-Low | 500 Hz | 중저음 (따뜻함, 바디감) | 전화기 효과: Mid-Low -6dB |
| Mid-High | 2000 Hz | 중고음 (존재감, 명료도) | 전화기 효과: 유지 |
| High | 6000 Hz | 고음 (공기감, 선명도) | 수중: High -12dB, 벽 뒤: High -6dB |
상황별 EQ 프리셋 예시
수중 (Underwater)
Low: +4dB | Mid-Low: +2dB | Mid-High: -6dB | High: -12dB
고역이 크게 감쇠되고 저역이 부스트되어 물속 느낌을 줌
폭발 후 이명 (Post-Explosion)
Low: -8dB | Mid-Low: -4dB | Mid-High: -2dB | High: +6dB
고역 강조 + 저역 감쇠로 귀울림 효과
무전기/전화기 (Radio)
Low: -10dB | Mid-Low: -4dB | Mid-High: +4dB | High: -8dB
좁은 대역폭으로 무전기 느낌
상황 기반 Sound Mix 전환
게임 상태에 따라 Sound Mix를 동적으로 전환하는 패턴
// 게임 상태에 따라 Sound Mix 전환하는 Audio Manager
void UAudioManager::OnGameStateChanged(
EGameState NewState)
{
// 이전 상태의 Mix 제거
if (CurrentActiveMix)
{
UGameplayStatics::PopSoundMixModifier(
this, CurrentActiveMix);
}
// 새 상태에 맞는 Mix 활성화
switch (NewState)
{
case EGameState::Exploration:
CurrentActiveMix = ExplorationMix;
break;
case EGameState::Combat:
CurrentActiveMix = CombatMix;
break;
case EGameState::Stealth:
CurrentActiveMix = StealthMix;
break;
case EGameState::Cutscene:
CurrentActiveMix = CutsceneMix;
break;
}
if (CurrentActiveMix)
{
UGameplayStatics::PushSoundMixModifier(
this, CurrentActiveMix);
}
}
Push한 횟수만큼 Pop해야 Mix가 완전히 제거됩니다. Push/Pop 불균형이 생기면 의도치 않은 볼륨 변화가 지속됩니다. 상태 전환 시 ClearSoundMixClassOverride로 클린업하는 것이 안전합니다.
핵심 요약
- Sound Mix는 Sound Class의 볼륨/피치/EQ를 런타임에 동적으로 변경하는 시스템이다
- Push/Pop 스택 방식으로 여러 Mix를 동시 활성화할 수 있다
- 더킹(Ducking)은 대사 재생 시 배경음 볼륨을 자동으로 낮추는 기법이다
- EQ 프리셋으로 수중, 폭발 후, 무전기 등 상황별 사운드를 연출한다
- Push/Pop 균형을 유지하지 않으면 볼륨 이상이 발생할 수 있으므로 주의한다
도전 과제
배운 내용을 직접 실습해보세요
USoundMix 에셋을 3개 만드세요: (1) Default Mix - 기본 밸런스, (2) Combat Mix - SFX 볼륨 UP + Music 볼륨 UP, (3) Dialogue Mix - Voice 볼륨 UP + SFX/Music 볼륨 DOWN. PushSoundMixModifier/PopSoundMixModifier로 전환하세요.
Submix Effect EQ 프리셋을 만들고 SFX Submix에 적용하세요. 물속 환경을 시뮬레이션하는 Low-Pass EQ를 구현하고, 물에 진입/이탈 시 EQ를 동적으로 활성화/비활성화하세요.
Audio Volume과 Sound Mix를 연동하여 환경에 따라 자동으로 오디오 믹싱이 변하는 시스템을 구현하세요. 실내/실외, 동굴, 물속 등 환경별 EQ, Reverb, Volume 프리셋을 만들고 부드럽게 전환하세요.