Skip to content

Beats Per Minute

Beat Per Min 의 준말. 즉 분당 비트수로써 1분당 1/4박자의 갯수이다.

About

음악에서 템포를 나타내는 단위. 즉 분당 몇 비트의 템포로 연주되는가 이며 당연히 비트가 높을수록 분당 더 많은 비트가 들어가기 때문에 템포가 빨라진다. 다만 '비트'의 기준을 어떻게 잡느냐에 따라 BPM이 2n, 1/2n배씩 변동될 수 있다. 헤르츠와 정의가 같기 때문에, 잘 쓰이지는 않지만 상호변환이 가능하다. 1 Hz = 60 BPM이다.

참고로 60BPM은 1분과 같으며 60BPM, 4박자는 1박자에 1초를 의미하기도 한다. 이를 이용하여 메트로놈 프로그램을 만들 수 있다. 리듬게임 만들기 참 쉽죠?

현대 음악에서 BPM은 특정한 장르의 특징을 나타내는 지표이기도 하다. 특히 EDM 및 댄스 음악에서 그런 성향이 강하다.

계산 방법

/// Default Bit Per Minutes. (60bpm => 60beat/60second == 1beat/1second)
public static readonly int BPM_UNIT = 60;

public int Divisions { get; private set; } // 4분음표를 몇개로 분할 수 있는가? 의 단위
public int TotalDuration { get; private set; } // 전체 기간 Divisions 값을 참고해야 한다.

public float TotalDurationPerDivisions => (float)TotalDuration / (float)Divisions;
public float TotalBeats => TotalDurationPerDivisions; // 악보의 전체 비트 수. (즉, 4분음표 의 개수)

// ...

var delta = 1.0f; // 직전 업데이트에서 현재 업데이트 까지 경과 시간 (초)
var bpm = 120; // 현재 출력하고자 하는 "bpm" 변수. (만약 120BPM 이면 1초에 두 박자, 즉 1초에 1/4음표 2개 이다)

var beatPerSecond = (float)bpm / (float)60; // 초당 비트 수
var totalSeconds = TotalBeats / beatPerSecond; // 악보의 전체 '초' 수
var deltaPercentage = delta / totalSeconds; // 직전 업데이트에서 현재 업데이트 까지 경과한 퍼센테이지

ProgressPercentage += deltaPercentage; // 현재 진행률 (퍼센테이지)

See also

Favorite site