BPM은 Beats Per Minute(1분 당 비트 수)의 약자로 음악의 빠른 정도를 측정하기 위해 필요한 단위입니다.
60 BPM 은 1분에 비트가 60개 이므로 1 비트 당 1초의 시간이 배정됨을 알 수 있습니다.
1비트의 시간으로 BPM을 역계산 할 수 있습니다.
계산식은 다음과 같습니다.(아래 식에서 (s) 는 초, second)
BPM = 60(s) / 1비트의 시간(s)
프로그래밍에서는 보통 밀리세컨드(millisecond, ms)를 사용합니다.
위 식을 밀리세컨드로 변환해서 계산하면 다음과 같습니다.
BPM = 60000(ms) / 1비트의 시간(ms)
프로그램에서 탭(Tab) 으로 비트를 세고 BPM을 구하려면 어떻게 해야 될까요?
우선 첫번째 탭의 시간과 두번째 탭의 시간이 필요합니다.
주의할 점: 시간은 반드시 밀리세컨드 단위까지 있어야 합니다.
그리고 두 시간의 차이로 1비트의 시간을 구하면 됩니다. 참 쉽죠?
1비트의 시간(ms) = 두번째 탭의 시간 - 첫번째 탭의 시간
BPM = 60000(ms) / 1비트의 시간(ms)
(위 2줄짜리 식을 1줄로 바꿔도 상관 없습니다.)
4분의 4박자의 1마디 동안의 BPM을 구하려면 어떻게 해야 할 까요?
그러려면 총 5개의 탭 시간이 필요합니다.
4비트의 시간(ms) = 다섯번째 탭의 시간 - 첫번째 탭의 시간
1비트의 시간(ms) = 4비트의 시간(ms) / 4
BPM = 60000(ms) / 1비트의 시간(ms)
(위 3줄짜리 식을 1줄로 바꿔도 상관 없습니다.)
프로그램을 만들 때에는 버튼 하나를 만들어서 탭할 때 마다 시간을 저장하고 조건에 따라 로직을 계산할 수 있도록 하면 되겠네요.
'프로그래밍 > 알고리즘' 카테고리의 다른 글
로또 번호 추출하기 (0) | 2018.06.04 |
---|