통합 검색어 입력폼

[NDC 18] 12mb의 용량으로 123곡을? 작은 용량으로 '연주'하는 사운드 만들기

조회수 2018. 4. 25. 16:57 수정
번역beta Translated by kaka i
번역중 Now in translation
글자크기 설정 파란원을 좌우로 움직이시면 글자크기가 변경 됩니다.

이 글자크기로 변경됩니다.

(예시) 다양한 분야의 재밌고 유익한 콘텐츠를 카카오 플랫폼 곳곳에서 발견하고, 공감하고, 공유해보세요.

'쿠키런: 오븐브레이크'로 보는 연주하는 사운드의 제작 방법

"<쿠키런: 오븐브레이크>의 사운드 폴더에는 110개의 미디파일과 사운드 폰트 폴더 하나가 존재합니다."

"이 음원들로 총 123곡의 음악과 효과음을 제작할 수 있으며, 모든 음원을 mp3 파일로 변환하면 총 80mb죠."


NDC 2018 첫날 강단에 오른 데브시스터즈 사운드 팀이 아주 적은 용량으로 다수의 음원을 제작할 수 있는 사운드 제작 기법을 소개하는 시간을 가졌다. 그들이 소개한 방식은 '연주' 방식의 사운드 제작 기법. 녹음된 악기 소리를 사용하는 음원 재생 방식이 아닌, 적은 수의 음원 요소만으로 게임 속 상황에 따라 유동적인 사운드를 만들 수 있으며, 적은 용량으로 다수의 음악을 제작할 수 있는 점이 최대 장점이다.


그렇다면 그것들이 실제로 어떻게 사용됐을까? <쿠키런: 오븐브레이크> 속 사례와 시연을 통해 활용 방벙에 대해 짚어보는 시간을 가져봤다.

데브시스터즈 곽길문, 김상욱, 손민수 사운드 디자이너


# 적은 음원과 작은 용량으로 다수의 음악을! 연주하는 사운드 기법 


음악은 '어떤 소리가 언제 어떻게 나는가'가 모여 구성된 것을 말한다. 이 어떤 소리는 음색, 언제는 시점, 어떻게는 음의 세기, 높이, 지속시간이 된다.


이 요소들을 바꿔보면 음색은 악기가 되며 나머지는 숫자와 기호로 표현할 수 있는 악보가 된다. 그런데 만약 어디선가 들려오는 혹은 우리가 들려줄 소리를 악기와 악보로 분리해 관리할 수 있다면 어떻게 될까?


이번에는 악보와 악기의 개념을 컴퓨터로 가져와 보자. 악보는 컴퓨터상에서 시퀀스 파일이라는 형태로 존재하게 하는데 이는 가장 범용적으로 사용되는 미디(Midi) 파일이다. 그리고 악기는 사운드 폰트라는 파일로 불리며 dls, sf2 등 여러 유형이 있다. 악보는 미디 시퀀서, 악기는 사운드 폰트. 이 두 가지 개념을 유념하면서 앞으로의 얘기를 들어보도록 하자.​

지금 보는 화면은 <쿠키런: 오븐 브레이크>의 사운드 폴더다. 이 안에는 110개의 미디 파일이 들어 있으며, 총 용량은 2.1mb다. 이 안에는 15kb의 음악이 다수 들어 있으며, 미디 파일 외에도 2.6mb의 사운드 폰트 폴더 하나도 들어있다. 이것들을 전부 mp3로 변환하면 약 80mb를 차지하게 된다.


이 저장 방법의 경우 음원 재생 방식과 리소스 용량에 필요한 사운드의 수량이 늘어날수록 격차를 보인다. 하지만 이 방식이 최근에 쓰이기 시작한 새로운 방식인 것은 아니다. 아주 예전부터 저장 공간의 한계를 극복하기 위해 사용한 방법으로 오래됐다고 낡거나 쓸모없는 것이 아닌 이 방식이 여전히 적절히 사용될 경우 매우 효과적이라는 것이 이번에 우리가 알려줄 내용이다. 


이 저장 방식은 용량을 줄이는 것 외에도 한 가지 장점이 더 있다. 110개의 미디 파일이 과연 110개의 음악을 정확히 의미하는 걸까? 그렇지 않다. 이 하나의 미디 파일은 어떻게 연주하느냐에 따라 다양하게 변화한다. 



# <쿠키런: 오븐브레이크>에 활용된 연주하는 사운드 


이제부터 그 변화에 대해 하나하나 알아보도록 하자. ​먼저 빠르기의 변화다.​

음원 재생 방식에서는 이런 긴박한 연출을 위해 음악을 빠르게 재생하기 위해선 별도의 음원을 따로 만들어 게임에 넣어야 한다. 예를 들어 리듬 액션 게임에 음악의 속도를 통해 난도를 조절하고 싶은 경우, 난도 별로 음원을 별도로 만들어 넣어야 한다. 


다음은 악기 편성의 변화다. 지금 보게 될 화면은 <쿠키런: 오븐브레이크>의 메인 화면이다. 화면 중앙에 자기가 원하는 쿠키들을 배치하고 꾸밀 수 있는 공간이다. 이 공간을 꾸밀 때과 꾸미지 않을 때 소리의 변화를 들어보도록 하자. ​

다음으로 볼 편성 변화는 스테이지 전환시 음악에 악기를 추가하는 방식이다.​

악기 음원 재생 방식에서 악기 구성에 변화를 주기 위해선 악기별로 분리한 음원을 동시 재생, 그리고 각각의 음원 볼륨을 조절하는 형식으로 대응해야 한다. 


이번에는 빠르기와 악기 편성을 동시에 변화시켜 보자.​

사운드가 꽤 복잡하다. 만약 이걸 악기 음원 재생 방식으로 구현하려면 악기별 그리고 그 분리된 악기들의 빠르기 별 음원을 준비해 조절해야 한다. 과정이 복잡하고 번거로워 잘 사용하지 않는 방식이다.


하지만 연주 방식을 사용한다면 어떨까? 미디파일 110개를 가지고, 재생속도 편성 변화 13건을 추가해서 총 123곡을 용량 추가 없이 그대로 사용할 수 있다. ​

지금까지 살펴봤듯이 연주 방식은 용량 증가 폭이 매우 적고, 실시간 변화가 자유롭다. 그렇다면 연주 방식을 구현하기 위해 어떤 것들을 준비해야 할까? 

 


# 여러 음원 파일을 한 곳으로, 사운드 폰트란?


대표적으로 사운드 폰트가 있다.​ 사운드 폰트란 1994년도에 제작된 것으로 사운드 샘플링을 통해 얻어진 여러 음원 파일들을 한군데에 모아 사운드 뱅크화 시킨 것을 뜻한다. 


악기에 붙어있는 번호는 해당 악기를 호출할 때 사용되는 번호이다. 사운드 폰트는 혼자서 소리를 내지 못한다. 항상 미디 파일과 함께해야 한다. 사운드 폰트와 미디 파일의 관계는 아주 밀접하다. 사운드 폰트 안에는 여러 악기 소리가 들어있고, 미디 파일 안에는 악보가 들어있다.

 

사운트 폰트의 악기 음원들이 미디 파일 속 악보를 연주한다. 그리고 사운드 폰트 속 악기 음원들이 악보를 연주할 때마다 미디 파일들은 계속해서 메시지를 보낸다. 악기의 볼륨을 어떻게 설정할 것인지, 악기가 오른쪽에 있어야 하는지 왼쪽에 있어야 하는지, 악기의 연주의 세기는 얼마나 세고 약하게 해야 하는지 등 연주의 세부적인 부분을 말이다.​

음악은 이 두 가지 파일이 번갈아 가며 작동 해는 과정을 거쳐야만 완성된다. 미디 파일이 사운드 폰트에게 악기 음원을 요청하면 사운드 폰트는 악기 음원을 미디 파일에 보내고, 미디 파일은 해당 음원에 악보를 보낸다. 악보를 받은 음원은 악보를 보고 연주한다. 이 일련의 과정을 거쳐야만 연주되는 음악 소리를 들을 수 있다는 것이다.


이번에는 사운드 폰트를 만드는 과정을 살펴보자. 사운드 폰트를 만들 때 먼저 사운드 컨셉을 정하게 된다. 이 사운드 컨셉에 따라 샘플링할 악기의 대상이 정해진다. 어쿠스틱한 음악을 만들고 싶을 때 전자 악기 음원을 샘플링하게 되면 어쿠스틱한 음악을 만들기 힘들어진다. 사운드 컨셉과 샘플링이 맞아야 적합한 소리를 낼 수 있다.​

하지만 만들려는 장르와 샘플링이 맞지 않을 경우, 적합하지 못한 결과물을 얻게 된다

컨셉이 완료되면 샘플링을 시작한다. 사운드 샘플링은 두 가지 방법이 있다. 첫 번째로는 레코딩 방법이다. 실제 악기를 연주해 녹음하는 방식으로 이 방법을 통해서는 어쿠스틱한 사운드를 얻을 수 있다. 두 번째로는 신디사이징이 있다. 여러 가지 사운드를 합하고 가공해서 원하는 사운드를 만드는 방법으로 전자 악기 사운드를 얻을 때 적합하다. 

 

샘플링을 통해서는 여러 음원 파일을 얻은 후에는 이 파일들을 사운드 폰트 제작툴에 넣어 마무리하게 된다. 그리고 몇 가지 설정을 해 준다. 해당 음원의 악기 이름과 호출 번호를 지정한다. 그리고 음이 길게 이어져야 하는 경우, 높이 구간을 정해주기도 하고, 미디 파일이 보내는 신호에 대해 어떻게 반응할 것인지에 대해 설정한다.

 

이렇게 설정이 마친 후 사운드 폰트 파일인 sf2 파일로 추출하게 되면 사운드 폰트 제작이 완료된다. 사운드 폰트 제작에는 웨이브 스튜디오와 폴리폰이라는 프로그램을 주로 사용한다. 사운드 폰트를 만드는 데 있어 가장 중요한 것은 용량이다. 샘플링된 악기의 수와 샘플링의 길이에 따라 용량이 정해진다. 필요한 악기로만 악기 수를 최소화하고 사운드 샘플을 짧게 만들어주는 것이 용량을 줄이는 방법이다.

 

이제 사운드 폰트가 어떻게 소리를 내는지 한 번 들어보도록 하자. 들어볼 미디 파일에 사용된 사운드 폰트는 실제로 우리가 직접 제작한 사운드 폰트로 <쿠키런: 오븐브레이크> 에서 사용중인 사운드 폰트로 총 71kb의 용량을 차지한다.​

사운드 폰트는 효과음 제작에도 활용된다. 게임 내 적절한 효과음은 유저 몰입도를 상승시킨다. 주의해야 할 부분은 만약 유저가 효과음의 반복 패턴을 인지하게 되면 몰입도가 떨어진다는 것이다. 그렇기 때문에 효과음은 몰입을 유지하면서, 반복을 인지하지 않도록 기본적으로 길게 만들어진다. 보통 8초에서 12초, 길면 30초 이상으로 제작돼 여타 효과음에 비해 엄청난 용량을 사용하게 된다.


일단 환경음 소스를 사운드 폰트에 넣고 그걸 미디로 꺼내서 불러오는 작업을 보도록 하자. 다음은 이해를 돕기 위해 시연을 하나 준비했다. 여기에 쓰인 파일은 33kb 미디파일 하나랑 855kb 사운드폰트 하나로 제작됐다.​

이외에도 RPG에 흔히 쓰이는 불소리나 폭포, 지역별 발자국 소리도 사운트 폰트를 어떻게 구성하느냐에 따라 쉽게 표현할 수 있다. 심지어 10kb 작은 용량의 사운드 하나를 가지고도 다양한 소리를 표현할 수 있다. 시연을 통해 보여주겠다. 작은 화면 아래에 쓰여진 용량은 사운드 폰트를 이용하기 위해 쓰인 bg파일의 용량으로 모든 효과음은 오직 하나의 파일로 제작됐다.

다음은 캐쥬얼 게임 등에서 많이 쓰이는 캐릭터 보이스를 미디로 구현하는 법을 보여주겠다. 미리 준비한 30개의 분절된 효과음을 가지고 피치 변화를 통해 어떻게 다른 캐릭터로 변하는지 확인해보자.​

같은 파일을 가지고 다른 캐릭터를 표현하는 데 전혀 무리가 없다. 이번에도 이해를 돕기 위해 시연을 준비했다.​

<쿠키런: 오븐브레이크> 와사비맛 쿠키의 기억의 섬 오프닝 컷신을 준비했다. 이 컷신을 준비한 이유는 앞서 말했던 효과음 제작 방법을 실제 라이브 서비스에 사용하고 있음을 확인시켜주기 위함이다. 미디로 구현된 부분은 화면 상단에 작은 화면을 구성해 구별해뒀다. 

그렇다면 실제 게임에 제작한 사운드를 도입하기 위해선 어떤 것들이 필요할까? 앞서 설명했던 미디 시퀀스 그리고 사운드 폰트뿐 아니라 한 가지가 더 필요하다. 보통 모바일 게임의 경우 안드로이드 마켓 뿐 아니라 iOS 마켓에도 동시에 출시된다. 이 두 기기는 서로 소리를 출력하는 방식이 달라 시장에 맞게 별도의 사운드 적용 작업을 진행해야 한다.


우리는 각각의 필요한 별도 처리를 최소화하기 위해 사운드 미들웨어 라이브러리를 사용한다. 종류로는 미디파일과 사운드폰트를 우리가 만든 형식 그대로 제작 가능한 FMOD외에도 Wwise, BASS 등이 있다. 


하지만 음원을 전달하는 것과 달리 연주해 달라고 할 때는 별도로 설정해야 하는 부분이 많다. 게임 내 데이터 구조와 관리 방식은 여전히 음원 재생 방식에 머물러 있기 때문에 음악의 볼륨과 속도 등 세부적인 부분은 직접 건드려야 하는 부분이 많다.


게다가 사운드 라이브러리가 변화시킨 결과물은 적용이 완료된 게임 내에서 확인하는 방법밖에 없다. 우리는 게임 내와 동일하게 음원이 적용되면서, 수정 사항을 일관된 양식으로 보낼 수 있는 별도의 프로그램이 필요했다.


이런 사운드 팀의 니즈로 자체 사운드 툴, '시퀀스 매니저'를 개발했다. 이 프로그램에서는 악기별 음향, 구간 반복, 재생 속도, 그리고 시작 지점, 각종 효과를 넣을 수 있다. 또한, 여기서 설정한 값들을 파일로 내보내 게임 데이터에 바로 적용할 수 있도록 했다. 시연을 통해 직접 확인해보자.​

우리가 이 툴을 통해 얻은 것은 다음과 같다. 게임에 적용돼야만 확인할 수 있는 것이 아닌, 게임 내에서 이뤄질 연주 변화를 똑같은 방식으로 먼저 확인할 수 있었다. 이를 통해 시행착오를 최소화할 수 있었고, 연주를 위한 설정값들을 일관된 형태로 게임 데이터에 넣을 수 있었다. 또한, 연주 방식으로 바꾸면서 발생할 수 있는 절차적 부담을 최소화할 수 있었다. 어쩌면 실시간 변화나 새로운 연주 방식을 사용하기 위해 이 툴이 꼭 필요했을지도 모른다.


이번에는 우리가 사용한 것에 다른 게임 엔진과 사운드 미들웨어를 사용해서 실제로 작동하는 프로젝트를 확인해 보도록 하자. 가장 많이 사용되는 엔진 중 하나인 유니티, FMOD 대신 BASS 라이브러리를 사용한 작업물이다.


# 적은 용량으로 다채로운 음향을! 연주하는 사운드의 가능성


정리하자면, 사운드 폰트를 사용하면 많은 사운드가 필요한 경우 용량 절감 효과를 얻을 수 있고, 사운드의 재생 속도 구성 등을 추가 리스트 없이 실시간으로 조절할 수 있다. 하지만 음색의 표현 범위가 사운드 폰트에 의해 결정되기에 다채로운 음색을 표현하는 데 힘들 수 있으며 음원 방식 대비 믹싱이나 마스터링같은 후반 작업에 큰 어려움이 따른다. 


그로 인해 실제 연주나 노랫말, 혹은 어떤 질감 표현이 필요한 경우에는 음원 재생 방식을 혼용하는 것이 보통이다. 그렇다면 앞서 말했던 장점들만 추릴 수는 없을까? 작은 대안을 준비해 봤다.


실시간 변화에는 관심이 없고, 용량 줄이는 것에만 관심이 있다면 어떻게 해야 할까? 모듈 트래커 파일이라는 것이 있다, 미디 파일과 사운드 폰트가 분리된 것과 달리, 자기가 쓰고 싶은 소리만 모아진 하나의 미디 파일을 말한다. 용량 절감 효과는 개별 미디 파일을 두는 것이 낫지만 여전히 음원 재생 대비 매우 적은 용량을 차지한다.


용량을 줄이는 것에는 관심이 없고, 실시간 변화나 다채로운 경험을 제공하려면? 앞서 소개했던 제품을 포함해 사운드 미들웨어 라이브러리 제품들의 대부분은 매우 훌륭한 편이다. 경우의 수를 고려해 원하는 제품을 골라 사용하면 된다. 


연주 방식의 가능성에 대해 그리고 의미에 대해 다시 한번 생각해보자. 우리는 용량을 줄이는 것에 대해서 많은 이야기를 했다. 과연 용량을 줄이는 것이 언제까지 그리고 얼마나 의미 있는 것일까? 하지만 이미 어떤 플랫폼에서는 더 이상 용량에 큰 의미를 두지 않게 됐다. 아마 모바일에서도 그렇게 될 것이라 생각한다. 그렇다면 이런 경우는 어떨까? ​

이 콘텐츠에 대해 어떻게 생각하시나요?