드럼과 관련된 게임이라면,
먼저 BPM 이라는 개념을 이해하셔야 합니다.
BPM(Beats Per Minute)은 분당 1박자를 때리는 횟수를 말하며,
학교 다닐 때 보았던 음악교과서의 제일 윗부분에 보면
콩나물 = 120
이런식으로 되어있는 것을 말합니다.
예를들어서
BPM 이 120 이 되는 곡이라면
이곡에서 1 박자의 시간은
1초를 1,000(ms)의 구간으로 쪼갤경우(timeGetTime 함수의 시간으로 측정할때)
1분은 1,000(ms) * 60(초) = 60,000 (ms) 이 되겠고요,
6,0000 / 120(BPM) = 500(ms) 가 됩니다.
즉 1박자는 500(ms) 이고, ==> 4분음표
반박자(1/2)는 250(ms), ==> 8분음표
반의 반박자는 125(ms) 가 됩니다. ==> 16분음표
이런 계산이라면, 우리가 보는 악보에서 1마디의 연주시간은 2초가 되는 셈이죠.^^
이 원리를 이용하면 막대가 화면의 픽셀과 어떻게 이동해야 하는지를
계산할 수 있게 되는데,
화면 좌표가 정수좌표인 경우,
박자의 구간은 경우에 따라서 실수 구간 나타날 수도 있습니다.(BPM이 실수인 경우도 있으므로..)
좀 더 정확하게 박자를 맞추려면,
좌표계는 실수를 누적시켜서 계산을 하고,
화면에 그릴때는 정수로 truncation을 시키면 좀 더 정확한 박자를
구현할 수 있을겁니다.
그럼, 건투를...
|