고도 엔진에서 오디오 처리 및 오디오 효과, 2D 공간에서 소리에 공간감 주는 방법 - Whitmem
고도 엔진에서 오디오 처리 및 오디오 효과, 2D 공간에서 소리에 공간감 주는 방법
Game Development
2025-01-29 14:19 게시 03e3c80e7d0493f79c0d

0
0
75
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
2D 공간에서 오디오 공간감 적용 및 감쇠, 사운드 효과 적용하기
공간감이 적용된 오디오를 재생하고 배치하는 방법에 대해서 알아보고, 각 사운드에 울림, 코러스, 왜곡, 이퀄라이저, 변조 등을 적용하는 방법을 알아본다.
주요 객체 생성
우선 기본적으로 게임에서는 단순히 소리를 재생하는 것에 그치지 않고 플레이어의 위치에 따라서 소리가 좌, 우에 들리는 정도가 다르다. 그 부분을 위해서 오디오 플레이어를 재생하는 AudioStreamPlayer2D 와 오디오를 듣는 객체를 나타내는 AudioListener2D 를 월드 공간에 생성해준다.
직관적으로 말해 AudioStreamPlayer2D 는 재생하기를 원하는 음원 파일, 효과 파일을 재생할 수 있고, AudioListener2D는 그 소리를 들어 스피커로 재생해준다고 보면 된다.
즉 활성된 AudioListener2D는 월드 씬 공간에서 한 개 존재할 수 있으며, 이외 AudioStreamPlayer2D을 여러 위치에 배치하여 서로 다른 소리 세기를 들을 수 있다.
한편 그렇다고 해서 월드 공간에 AudioListener2D 를 한 개만 생성할 수 있는 것은 아니다. 활성된 AudioListener2D는 사실상 한 개이지만, AudioListener2D를 여러 개 배치하여 필요에 따라 코드로 활성화되는 AudioListener2D를 변경할 수 있다. AudioListener2D는 듣는 귀이기 때문에, 다른 귀로 변경하면 해당 귀 위치로 해당 씬 안의 모든 오디오 공간감이 변경된다고 볼 수 있다.
AudioListener2D 안을 보면 Current 를 체크하여 사용 모드로 변경할 수 있다.
그리고 AudioStreamPlayer2D 는 오디오를 재생하는 노드이기 때문에, 각종 스트림을 넣을 수 있다. 여기서는 mp3을 재생하는 것이 주요 목표이기 때문에, mp3 파일을 파일 시스템에 불러오고 드래그해서 Stream 공간에 넣어주면 된다.
그러면 정상적으로 스트림이 로드 된 것을 볼 수 있다. 그 외 AudioStreamPlayer2D 에는 다양한 설정이 존재하는데 정리하면 다음과 같다.
Volume dB : 볼륨 데시벨
Pitch Scale : 재생 피치 (높을수록 피치가 올라가고 빨라짐)
Playing : 현재 재생 중인가
AutoPlay : 씬이 시작될 때 자동으로 재생하는 가
Max Distance : AudioListener2D에게 들리는 최대 거리
Attenuation : 감쇠비 - 수치가 높을 수록 거리가 멀어지면 빨리 감쇠
이 외 Bus 라는 옵션은 기본 값이 Master로 되어있는데, 이 부분은 조금 이따 건들어보기로 한다.
아무튼 이렇게 생성을 하고, AutoPlay 를 체크한 뒤 한번 재생해본다. 소리가 잘 들리는 것을 확인할 수 있다. 지금 오디오를 듣는 귀 AudioListener2D 도 좌표가 0,0 에 있고, 오디오를 재생하는 AudioStreamPlayer2D 도 0,0 좌표에 있기 때문에 사실상 소리가 재생되는 위치와 듣는 위치는 다르다.
AudioStreamPlayer2D 를 저 멀리 이동하고 한번 재생하면 해당 위치에 소리가 있는 것 처럼 공간감이 적용되어 소리가 재생되는 것을 확인할 수 있다.
보통 오디오를 듣는 귀 AudioListener2D 는 캐릭터에 배치를 하는 편이기 때문에, 캐릭터 위치에 상대적으로 적용하면 된다.
여기서는 ChracterBody2D에 오디오 리스너 AudioListener2D를 적용하고 소리를 재생하였다. 캐릭터 위치에 따라서 소리 지점이 달라진다.
사운드 효과 적용
아래 디버그 창을 보면 오디오 탭이 존재하는 것을 확인할 수 있다. 기본적으로 Master 버스가 존재하는데, 버스는 쉽게 말해서 오디오가 통과하는 통로라고 보면 된다. 이 엔진의 최종 통과 버스는 Master인데, 이 공간을 통과하는 모든 오디오들에 대해서 원하는 이펙트를 적용할 수 있다.
이 외 버스를 직접 추가할 수도 있는데, 위에 버스 추가 버튼을 눌러 새로운 버스를 추가할 수 있다.
이 엔진에서 기본적으로 버스는 다른 버스로 또 전달할 수 있고, 마스터로 전달할 수 있다. 다만 유의해야 할 사항은 버스는 왼쪽 방향으로만 흐를 수 있는 것으로 보인다. 여기서는 오른쪽 New Bus 는 왼쪽에 존재하는 버스인 Master로만 흐르게 할 수 있다.
버스 3개를 등록했고, 각 버스는 왼쪽으로 향하고 있다.
즉 New Bus 3로 들어온 어떤 소리는, New Bus 2를 거쳐서 New Bus를 거쳐서 Master 버스를 거쳐서 스피커로 향하게 된다. 이 안에 이펙트를 추가하면 해당 이펙트가 순차적으로 적용된다.
여기서는 테스트로 '울림 버스'라는 버스를 만들고, 그 안에 이펙트 Reverb 를 추가했다.
생성된 Reverb 를 클릭 하면, 오른쪽 인스펙터가 바뀌는 것을 볼 수 있다.
Reverb 울림 효과를 설정할 수 있다. 울리는 공간의 크기를 지정하고, 댐핑 (소리가 튕기는 거리는 정도), 흩어지는 정도, 마른 정도, 소리가 얼마나 젖은지(울리는지) 정도를 지정할 수 있다. 결과적으로 '울림 버스'라는 버스에 Reverb 라는 효과를 적용하였다.
한편 다시 AudioStreamPlayer2D 의 인스펙터로 돌아와, 버스를 지정할 수 있다.
이 Master 을 생성한 버스로 변경하면, 이 소리는 '울림 버스'를 시작으로 하여금 소리가 재생된다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.