진행중인 리듬게임 프로젝트의 에디터 구현 작업을 한창 하던 중, 문득 눈으로만 노트 위치를 확인해서 오프셋을 맞추는 것보다 소리로 노트가 판정선에 닿는 타이밍을 알려준다면 더 수월하지 않을까 라는 생각을 했다. 나는 즉시 실행으로 옮겼지만, 결과물은 시원찮았다. 가장 눈에 띄였던건 소리 자체의 타이밍이 맞지 않는다는 것이었다. 이는 추후에 판정선의 위치 자체의 문제, 음원 파일의 문제라는 것을 깨닫고 수정해서 다시 구현해두었다.
타이밍 문제에 버금가는 또 다른 문제도 있었는데 이펙트로 사용하는 음원이 재생될 때마다 틱틱 거리는 소리가 들렸던 것이다. 도저히 원인을 찾을 수가 없었다. 자체적으로 음원에 페이드아웃 효과를 적용시켜 재생해보았지만 결과는 똑같았다.
영상을 보면 더 확실히 이 현상을 느낄 수 있다. 노래소리에 묻혀 잘 안들릴 수 있지만 분명히 틱틱거리는 소리가 들리고, 굉장히 거슬린다. 이 현상을 없애기 위해서 프로젝트 세팅의 DSF 버퍼 사이즈를 Best Latency로 바꾸기도 하고 해당 음원을 클립으로 가지는 Audio Source의 이펙트를 모두 바이패스 해보기도 하고 별짓을 다해봤지만 해결될 기미는 전혀 보이지 않았다...
그렇게 열심히 해결방법을 모색하던 중 유니티 커뮤니티 토론에서 같은 현상을 겪는 사람의 글을 발견했다.
https://discussions.unity.com/t/what-causes-the-audio-clicking-how-do-i-get-a-clean-sound/59715
What causes the audio clicking & how do I get a clean sound?
I have two sounds that I’m triggering about twice a second, one for each player, for an old-arcade-style movement noise (wakka wakka wakka bloit bloit bloit…) using PlayClipAtPoint. They’re just uncompressed AIFFs and there’s no other sound going o
discussions.unity.com
본문의 제목을 보면 알 수 있듯이 이 현상을 Audio Clicking 이라고 말하는듯 하고, 필자도 그렇게 지칭하기로 했다. 그리고 놀랍게도 아주 간단하게 해당 현상을 없애는 것이 가능했다. 음원의 Load Type을 Streaming으로 바꾸면 되는 것이다!

Load Type을 Streaming으로 바꿔준 후 클리킹 현상은 일어나지 않았고 원래 계획대로 키음을 다시 구현하는 것에 성공했다.
사실 문제를 고치기는 했지만 왜 이런 현상이 발생했고, 왜 해결되었는지 아직 정확하게는 파악하지 못했다. 첨부한 토론 페이지에서는 그럴듯한 주장이 나왔는데, 재생중인 음원을 중간에 임의로 멈추고 곧바로 실행하면서 문제가 발생한다는 것이 그 주장이다. 사실 DAW를 만지면서 노래를 만들어보면 알겠지만 이런 틱틱거리는 소리를 없애기 위해 Attack이나 Realese 값을 조절하기도 한다. 이런 비슷한 맥락에서 문제가 발생한게 아닐까 싶기는 하다.
하지만 그렇다고 한들 클리킹 현상이 단순 Load Type 변경으로만 해결된다는 것은 아직 잘 납득이 가지 않는다. 원래부터 유니티의 오디오 시스템은 고질적인 딜레이 문제가 고쳐지지 않는 등 신뢰도가 그리 높은 편이 아니라는 것은 알고 있었지만.. 혹은 아직 내가 배움이 모잘라서 정확한 이유를 진단하지 못하는 것일 수 있겠다.
'공부 > 유니티' 카테고리의 다른 글
| transform.Find 메소드 사용시 주의점 (0) | 2023.08.30 |
|---|