오디오 공감각

오디오 공감각 플러그인이 블루프린트 스크립팅에서 사용될 수 있는 오디오 메타데이터를 어떻게 만드는지 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

오디오 공감각(Audio Synesthesia) 플러그인은 블루프린트 게임플레이 스크립팅에서 사용하기 위해 추출된 오디오 메타데이터를 자동으로 노출합니다. 이 기능은 디자이너가 사운드와 긴밀하게 관련된 애니메이션, 이펙트 및 기타 엘리먼트를 구동하는 데 도움이 됩니다.

시작하기

이 기능을 사용하려면 오디오 공감각 플러그인이 활성화되어 있어야 합니다. 편집(Edit) > 오디오(Audio) > 입력 디바이스(Input Devices) 로 가서 오디오 공감각 옵션을 체크하여 활성화합니다. 알림이 표시되면 언리얼 엔진을 재시작합니다.

새 오디오 공감각 에셋을 추가하면 언리얼 엔진은 해당 에셋에 대한 오디오 분석기(Audio Analyzer) 를 자동으로 생성합니다. 추가할 수 있는 에셋 타입은 세 가지입니다.

  • 오디오 공감각 NRT(Audio Synesthesia NRT): `USoundWave`의 비실시간, 즉 **NRT(Non-Real-Time)** 분석을 지원하는 분석기입니다.

  • 오디오 공감각 NRT세팅(Audio Synesthesia NRT Settings): 디폴트 값에서 세팅을 변경하는 데 사용할 수 있는 오디오 공감각 NRT의 세팅입니다.

  • 공감각 세팅(Synesthesia Settings): 디폴트 값에서 세팅을 변경하는 데 사용할 수 있는 오디오 공감각 세팅입니다.

새 오디오 에셋 추가

새 에셋을 만들 때는 드롭다운 메뉴가 표시됩니다. 수행할 분석 타입을 선택합니다.

공감각 클래스 선택

기본 개념

AudioSynesthesiaNRT 오브젝트의 역할:

  • 분석 알고리즘 세팅을 분석할 사운드 웨이브에 연결합니다.

  • 분석 결과를 `uasset`으로 유지합니다.

  • 결과에 대한 액세스를 블루프린트 함수에 제공합니다.

AudioSynesthesiaNRT 오브젝트를 사용하는 모든 오디오 분석은 에디터에서 수행됩니다. 분석 결과는 게임플레이 중에 파일에서 읽어 들입니다. 이를 통해 AudioSynesthesiaNRT 오브젝트가 게임에서 생성된 오디오를 분석하지 못하도록 제한하고 런타임에서 비용이 많이 드는 오디오 분석도 수행하지 않도록 방지할 수 있습니다.

세팅이 업데이트 될 때마다 또는 사운드 프로퍼티가 분석기에서 업데이트될 때 분석이 수행됩니다.

분석기의 사용 예시

LoudnessNRT 분석기 생성 및 구성

  1. AudioSynesthesiaNRT 에셋을 추가합니다. AudioSynesthesiaNRT 에셋은 사운드(Sound) > AudioSynesthesiaNRT 에서 찾을 수 있습니다.

  2. 가능한 AudioSynesthesiaNRT 분석기의 드롭다운 메뉴에서 LoudnessNRT 를 선택합니다.

  3. 선택 사항: 드롭다운에서 LoudnessNRTSettings 를 선택하여 사운드 > AudioSynesthesiaNRTSettings 에서 AudioSynesthesiaNRTSettings 오브젝트를 추가합니다.

  4. 임포트된 사운드를 사용하여 LoudnessNRT 사운드 프로퍼티를 업데이트합니다.

LoudnessNRT 세팅 프로퍼티는 이전에 생성된 LoudnessNRTSettings를 사용하여 업데이트됩니다.

블루프린트에서 LoudnessNRT 활용하기

블루프린트에서 LoudnessNRT를 활용하는 방법은 다양합니다. 다음 예시에서는 현재 재생 중인 오디오의 소리 크기에 따라 두 구체의 크기가 변경됩니다.

  1. 새 액터 블루프린트를 생성해 씬에 추가합니다.

  2. 블루프린트를 열고 오디오 컴포넌트 하나와 구체 두 개를 추가합니다. 이 예시에서는 구체의 이름을 각각 LeftSphereRightSphere 로 지었습니다.

    블루프린트 컴포넌트 뷰포트의 블루프린트 컴포넌트

  3. 두 개의 변수 LoudnessAnalyzerDuration 을 추가합니다. Duration은 float , LoudnessAnalyzer는 LoudnessNRT 가 됩니다.

    변수 추가

  4. 'Construction Script'에서 다음을 수행합니다.

    • 오디오 컴포넌트의 사운드를 Loudness Analyzer에서 사용된 사운드로 설정합니다.

    • 사운드의 전체 경과시간을 저장합니다.

이미지를 클릭하면 전체 크기로 표시됩니다.

  1. '이벤트 그래프(Event Graph)'에서 다음을 수행합니다.

    • 오디오 재생 퍼센티지가 업데이트될 때마다 AudioPlaybackPercent 이벤트가 이벤트를 트리거하도록 구성합니다.

    • 오디오 재생을 시작합니다.

    • 사운드 경과시간에 재생 속도를 곱하여 재생을 초 단위로 구합니다.

    • 현재 재생 시간 (초)에서 분석기로부터 정규화된 소리 크기 값을 얻습니다.

    • 소리 크기 값을 기반으로 구체의 스케일을 설정합니다.

이미지를 클릭하면 전체 크기로 표시됩니다.

NRT 분석기

LoudnessNRT

LoudnessNRT 분석기는 오디오에서 들리는 소리 크기를 측정합니다. 오디오의 진폭과 관련이 있고 시간 경과에 따라 변경되는 수치를 제공한다는 점에서는 엔벨로프 팔로워나 데시벨 미터와도 비슷합니다. 하지만 인간이 소리를 인식하고 특정 주파수에 더 민감하거나 덜 민감하다는 점을 고려한다는 점에서 단순 진폭 측정과는 차이가 있습니다. 예를 들어 호루라기 소리는 진폭이 꽤 낮지만 비교적 큰 소리로 들립니다. 반면에 가장 낮은 베이스 음의 경우 진폭은 굉장히 높지만 많은 사람들은 이 소리를 적당히 큰 정도로만 인지합니다. LoudnessNRT는 이러한 점을 모두 고려하여 호루라기 소리는 크게, 베이스 음은 중간 정도로 표시합니다.

LoudnessNRTSettings 는 LoudnessNRT 분석기를 환경설정하는 데 사용됩니다. LoudnessNRTSettings에서 가장 일반적으로 조정되는 파라미터는 다음과 같습니다.

  • AnalysisPeriod: 측정 빈도를 제어합니다.

  • MinimumFrequencyMaximumFrequency: 관심 주파수를 제어합니다. 상위 또는 하위 레지스터의 콘텐츠 일부를 완전히 무시할 때 또는 주파수 범위 다수에서의 소리 크기 액티비티를 대조할 때 유용합니다.

  • CurveType: 어떤 인지 커브를 활용해야 할지 구체적으로 제어합니다. 일반적으로는 고급 세팅입니다.

  • NoiseFloorDb 는 무음으로 간주될 진폭을 나타냅니다.

ConstantQNRT

ConstantQNRT 분석기 는 오디오 내 특정 대역의 세기를 측정합니다. 지정된 시간 내 주파수 대역의 소리 크기를 나타낸다는 점에서는 스펙트로그램과 유사하지만, 인지적으로 유의미한 방식으로 대역을 배열한다는 점에서는 차이가 있습니다. ConstantQNRT 분석기를 사용할 때 대역은 피아노의 음표 또는 다중 대역 이퀄라이저가 간격을 두는 방식대로 배열됩니다.

ConstantQNRTSettings 는 ConstantQNRT 분석기를 환경설정하는 데 사용됩니다. ConstantQNRTSettings에서 가장 일반적으로 조정되는 파라미터는 다음과 같습니다.

  • AnalysisPeriod: 측정 빈도를 제어합니다.

  • StartingFrequency , NumBandsNumBandsPerOctave: 주파수 대역 간격, 너비, 위치 및 개수를 제어합니다.

  • DownMixToMono: 오디오 채널을 별도로 처리해야 할지 아니면 처리 전에 단일 오디오 채널로 믹스다운할지 나타냅니다.

OnsetNRT

OnsetNRT 분석기 는 노트 온셋, 퍼커시브 히트(percussive hit), 스피커 플로시브(speaker plosive) 및 익스플로전 등 다양한 소스에서 발생하는 오디오 온셋 이벤트를 탐지합니다. OnsetNRT 분석기는 온셋을 온셋의 타임스탬프 및 강도와 함께 제공합니다.

OnsetNRTSettings 는 OnsetNRT 분석기를 환경설정하는 데 사용됩니다. OnsetNRTSettings에서 가장 일반적으로 조정되는 파라미터는 다음과 같습니다.

  • GranulartiyInSeconds: 온셋 간의 최소 간격을 결정합니다.

  • Sensitivity: 온셋이 탐지되려면 소리가 얼마나 커야 하는지 한계치를 설정합니다.

  • MinimumFrequencyMaximumFrequency: 온셋을 찾을 주파수 범위를 제어합니다. 상위 또는 하위 레지스터의 콘텐츠 일부를 완전히 무시할 때 또는 주파수 범위 다수에서의 소리 온셋 액티비티를 대조할 때 유용합니다.

    • DownMixToMono: 오디오 채널을 별도로 처리해야 할지 아니면 처리 전에 단일 오디오 채널로 믹스다운할지 나타냅니다.