2018/01/02 - [Programming/Unity] - [UNITY/C#/리듬게임] 1. BMS에 관하여.


지난 포스팅에서는 BMS에 대해 알아보았으니 이번 포스팅은 개발 전 BPM에 관하여 써볼까 합니다.


출처 : http://smilejsu.tistory.com/380, http://blog.insane.pe.kr/1384


BPM은 Beat Per Minute의 약자로 분당 비트수로서 1분당 1/4박자의 갯수입니다.


BPM을 60으로 나누어 주면 BPS가 될 것인데, 4로 또 나누는 이유는 한 비트는 4개의 박자로 이루어져 있기 때문에 4로 나누어줍니다(4/4박자). 

한 박자의 길이(1/4beat)는 bpm/60/4이며, 이 값으로 1을 나누어 주면 박자 당 초(spb)가 나옵니다.


- 1분당 BPM별 비트 갯수

 BPM

1/4 박자

1/8박자 

1/16박자 

1/32박자 

 60 BPM

 60 개

 120 개

 240 개

 480 개

 100 BPM

 100 개

 200 개

 400 개

 800 개

 130 BPM

 130 개

 260 개

 520 개

 1040 개

 155 BPM

 155 개

 310 개

 620 개

 1240 개


우리가 만드는 게임에서 BPM과 박자에 따라 비트 갯수가 달라지는데.

1/32박자 (32비트) 게임에서 130 BPM시 1분당 최대 1040 노트가 생성됩니다.


이때 노트 한개당 간격은

60bpm에서 4비트는 1초마다 1비트씩 올라가므로 최대 60개가 생성되는데,

1/8박자는 0.5초, 16박자는 0.25초, 32박자는 0.125초 마다 1비트가 올라갑니다.


155 bpm의 32비트는 최대 생성 노트의 갯수는 1240개이므로 비트 하나당 간격을 계산해 봅시다. 소숫점은 총 8자리까지 사용하며, 이하 소숫점은 반올림하여 계산합니다.

155 / 60 = 2.58333333


0.125 / 2.58333333 = 0.04838710



노트는 0.04838710초마다 나오며 이 값이 맞는지 최대 비트 1240개와 계산을 해봅시다.


0.04838710 * 1240 = 60.000004


60에 근접하게 값이 나오는것을 알 수 있습니다.

더 낮은 자리에서 계산한다면 더욱 정확한 값이 나옵니다.

이 값이 정확하지 않으면 음악 재생 시간이 길면 길수록 비트가 조금씩 밀리고 당겨지는 현상이 나올수 있으므로 주의가 필요합니다.


이상 BPM에 관한 포스팅을 마칩니다.


상기 출처 글을 읽으며 도움이 많이되어 작성하였습니다.

하단에도 링크 남기오니 참고하시면 좋을것 같습니다.

BPM 계산 방식과 배속의 구현 방법


블로그 이미지

덕배님

5년차 S/W 개발자입니다. Android, Unity, JAVA, C, C++, C# 정보를 공유합니다

,