템포 카운터란?
템포 카운터(Tempo Counter)는 원하는 BPM(분당 박자 수)을 입력하면 그 속도에 맞춰 정확한 타이밍으로 비프음을 재생해주는 운동용 메트로놈 도구입니다. 브라우저의 오디오 재생 스케줄링 기능을 직접 활용해서 박자가 점점 밀리는 드리프트 현상 없이 처음부터 끝까지 정확하게 맞습니다. 하강 동작과 상승 동작마다 서로 다른 음으로 소리가 나기 때문에 화면을 보지 않고 소리만 듣고도 박자를 맞출 수 있고, 두 박자가 끝날 때마다 렙 수가 자동으로 올라갑니다. 모든 운동이 같은 속도에 맞는 건 아니기 때문에, 푸시업·싯업·스쿼트처럼 하강·상승이 뚜렷한 운동 종류를 선택하면 그 운동에 무리 없는 기본 BPM이 자동으로 채워집니다. 많은 무료 메트로놈·박자 앱이 setInterval로 박자를 재생하는데, 이 방식은 몇 분만 지나도 박자가 눈에 띄게 밀립니다. 이 도구는 처음부터 오디오 스케줄링(AudioContext) 기반으로 만들어져서 그런 밀림이 없습니다.
사용 방법
운동 종류에서 하려는 운동을 선택하면 그 운동에 맞는 기본 BPM이 자동으로 입력됩니다. 원하면 BPM 값을 직접 수정할 수도 있고, 목록에 없는 운동이라면 "직접 설정"을 선택해 원하는 속도로 맞추면 됩니다. "시작" 버튼을 누르면 그 속도로 박자 소리가 재생되기 시작합니다. 하강 구간에서는 낮은 음, 상승 구간에서는 높은 음이 나며, 두 박자(하강+상승)가 끝날 때마다 렙 카운터가 하나씩 올라갑니다. 운동을 마쳤으면 "정지" 버튼을 눌러 멈추면 됩니다.
이럴 때 유용해요
- 웨이트 트레이닝에서 일정한 템포로 동작 속도를 유지하고 싶을 때
- 스쿼트나 푸시업처럼 하강·상승이 뚜렷한 운동의 박자를 맞추고 싶을 때
- 정해진 템포로 렙 수를 정확하게 세면서 운동하고 싶을 때
- 화면을 보지 않고 소리만으로 운동 박자를 확인하고 싶을 때
AudioContext 스케줄링이 setInterval보다 정확한 이유
일반적인 setInterval() 함수로 박자를 만들면 자바스크립트 엔진의 다른 작업(렌더링, 가비지 컬렉션 등)에 밀려 몇 밀리초씩 지연되는 게 누적되어, 몇 분만 지나도 박자가 눈에 띄게 밀리는 '드리프트' 현상이 생깁니다. 이 도구는 브라우저의 오디오 처리 스케줄(AudioContext의 currentTime)을 기준으로 다음 여러 박자를 미리 예약해두는 방식(look-ahead scheduling)을 씁니다. 오디오 스케줄은 자바스크립트의 다른 작업과 별개의 정밀한 타이머로 동작하기 때문에, 아무리 오래 재생해도 박자가 밀리지 않습니다.
운동 템포, 이렇게 활용해 보세요
- 일반적으로 근력 운동의 하강(에센트릭) 구간은 상승보다 천천히, 즉 하강에 2~3초, 상승에 1초 정도를 두는 템포가 많이 권장돼요
- 초보자는 낮은 BPM(느린 템포)으로 자세를 먼저 익히고, 익숙해지면 점차 BPM을 올려보는 방식을 추천해요
- 목록에 없는 운동이라도 '직접 설정'으로 원하는 BPM을 자유롭게 입력할 수 있어요
- 렙 수를 세는 걸 잊어버려도, 화면의 렙 카운터가 자동으로 누적되니 마지막 숫자만 확인하면 돼요
자주 묻는 질문
- 박자가 뒤로 갈수록 밀리지 않나요?
- 네, 밀리지 않습니다. 브라우저의 오디오 스케줄링 기능(AudioContext)으로 다음 박자들을 미리 정확한 시각에 예약해두는 방식이라, 일반적인 타이머보다 훨씬 정밀하게 박자가 유지됩니다.
- 렙 수는 어떻게 계산되나요?
- 하강 박자 하나와 상승 박자 하나, 총 두 박자가 끝날 때마다 렙 수가 1씩 올라갑니다.
- BPM 범위는 어떻게 되나요?
- 20~240 BPM 사이에서 설정할 수 있습니다.
- 운동 종류를 선택하면 BPM이 고정되나요?
- 아니요. 운동 종류를 선택하면 그 운동에 맞는 기본 BPM이 채워질 뿐이며, 이후에도 BPM 입력란에서 자유롭게 값을 수정할 수 있습니다.
- 이어폰이나 블루투스 스피커를 써도 박자가 정확한가요?
- 네, 블루투스 기기는 약간의 지연(레이턴시)이 있을 수 있지만, 이건 소리가 나가는 경로의 지연이라 박자 자체의 간격에는 영향을 주지 않습니다. 다만 블루투스 지연이 신경 쓰인다면 유선 이어폰을 쓰면 더 즉각적으로 들립니다.
- 운동 종류를 선택하지 않고 바로 시작할 수 있나요?
- 네, '직접 설정'을 선택하거나 아무 종류를 선택한 뒤 BPM 값만 원하는 대로 바꾸면 됩니다.
- 브라우저 탭을 백그라운드에 두면 소리가 멈추나요?
- 아니요, Web Audio API는 백그라운드에서도 계속 재생되도록 설계되어 있어 다른 작업을 하면서도 소리로 박자를 계속 들을 수 있습니다.