Takafumi Horiuchi

고동치는 메트로놈

개요

화면 한가운데의 원이 클릭음과 같은 순간에 같은 세기로 고동친다. 광고도 계정도 설정 화면도 없는 iPhone용 메트로놈을 만들었다.

메트로놈 화면. 검은 화면 중앙의 흰 원 위에 박자를 나타내는 네 점이 있고, 아래에는 120 BPM과 −/+가 나란히 있다. 원은 박자에 맞춰 부풀었다가 돌아온다.
앱과 같은 수식으로 이 화면을 페이지 안에서 움직인다(120 BPM, 한 마디에 4박). 원을 탭하면 멈춘다.

테너 색소폰을 연습할 때 직접 쓰려고 만들었다. 열면 바로 시작할 수 있고, 소리를 듣기 어려운 상황에서도 박자가 눈에 보인다. 기획과 디자인, SwiftUI 구현, 클릭음 합성까지 모두 혼자 했다.

조작 — 바꾸고 싶은 것을 직접 만지기

화면에는 박자를 나타내는 점, 원, 템포 숫자만 있다. 메뉴나 설명문 없이, 바꾸고 싶은 것 자체를 만져 바꾼다.

멈춘 화면. 중앙의 연한 회색 원에 재생 삼각형이 겹쳐 있다. 위에는 네 점, 아래에는 120 BPM과 −/+, 왼쪽 위에는 작은 ⓘ가 있다.
ⓘ
지원 페이지를 연다.
점
탭하면 한 박 늘어난다(1–7박). 손가락으로 쓸어서 늘리거나 줄일 수도 있다.
원
탭하면 시작하거나 멈춘다. 길게 누른 뒤 곡에 맞춰 두드리면 템포를 정할 수 있다.
숫자
드래그해서 빠르게 또는 느리게 한다. 천천히 움직이면 세밀하게 바뀐다. −/+는 1씩 바꾼다.
멈춘 화면. 화면의 글자는 숫자와 ‘BPM’만 남겼다.

고동 — 같은 순간에, 같은 세기로

원은 소리가 출력되는 순간이 아니라 귀에 도착하는 순간에 부푼다. Bluetooth 이어폰에서 생기는 약 0.1–0.3초의 지연도 iOS가 보고하는 출력 지연으로 보정한다. 부푸는 크기는 클릭음의 음량에 비례한다. 첫 박에서는 더 높고 큰 소리와 함께 원도 유난히 크게 부푼다.

한 마디 4박의 클릭음과 원의 크기를 나타낸 그래프. 클릭할 때마다 크기 곡선이 바로 올라가 첫 박에서는 1.25배, 2–4박에서는 1.15배에 도달하고, 1배 아래로 조금 내려갔다가 돌아온다.
한 마디의 클릭음(채운 영역)과 원의 크기(선). 120 BPM, 한 마디에 4박. 원은 소리가 난 뒤 0.02초 만에 가장 크게 부풀고, 젤리처럼 조금 지나치게 줄어들었다가 멈춘다.

박자의 시각은 오디오 스레드가 샘플 단위로 정한다. 오차가 누적되지 않도록 계산해, 한 시간 연속 재생해도 어긋남은 0.5샘플 이내에 머문다.

탭 템포 — 두드리는 동안은 소리 내지 않기

원을 길게 누르면 젤리처럼 떨리기 시작한다. 곡이나 머릿속 템포에 맞춰 두드리면 만진 부분이 움푹 들어갔다가 출렁이며 돌아온다. 템포는 진동으로 전해진다.

원의 위쪽 가장자리를 한 번 두드린 뒤의 윤곽을 시간순으로 보여 주는 여섯 장면. 0.03초에 위쪽이 들어가고 0.08초에 돌아오기 시작한다. 0.17초와 0.3초에는 세로와 가로로 조금 일그러지고 1.3초에 다시 원이 된다.
원의 위쪽 가장자리를 한 번 두드린 뒤의 윤곽. 앱과 같은 수식으로 그렸다. 점선은 완전한 원이다.
개발 중인 앱 화면. 탭 템포 모드의 원은 회색이며, 아래에는 일본어 ‘젤리 조정’ 패널이 열려 있다. ‘탄성(흔들리는 속도) 3.6회/초’, ‘점성(흔들림이 가라앉는 방식) 0.10’ 등의 슬라이더와 설명이 있다.
흔들림은 개발 버전에만 넣은 조정 패널로 정했다. 탄성과 점성 등 10개 값을 슬라이더로 바꾸면서 실제로 원을 두드려 확인했다. ‘푸딩’, ‘와라비모치’, ‘액체에 가까운’ 설정과도 비교한 뒤, 잘 튕겨 오르고 약 0.9초 만에 가라앉는 ‘젤리’를 기본값으로 골랐다.

두드리는 동안에는 의도적으로 소리를 내지 않는다. 두드린 순간 소리로 응답하면 Bluetooth에서는 늦게 들리고 메트로놈 소리와 겹치게 된다. 두드리기를 멈추면 그 템포의 소리가 희미하게 시작되어 6초에 걸쳐 평소 음량에 도달한다.

다섯 번의 탭 뒤에 진동을 나타내는 점이 점점 작아지고, 대신 클릭음의 막대가 거의 들리지 않는 높이에서 6초에 걸쳐 커지는 그림.
120 BPM으로 다섯 번 두드린 뒤 손을 멈췄을 때. 아래부터 탭, 진동(작을수록 약함), 클릭음(높을수록 큼)이다. 음량을 데시벨 기준으로 고르게 올려 희미한 소리가 갑자기 커지지 않게 했다.

소리 — 색소폰에 묻히지 않는 높이를 귀로 고르기

클릭음은 음원 파일 없이 사인파로 합성한다. 비교 청취용 페이지를 만들고, 테너 색소폰을 불면서 iPhone 스피커로 세 차례 비교했다. 처음 주파수의 1.25배인 1875 Hz와 1250 Hz로 정했다. 색소폰이 가장 강하게 울리는 대역보다 높고 귀를 찌르기 쉬운 대역보다 낮다.

100 Hz부터 10 kHz까지의 주파수 축. 낮은 쪽에는 테너 색소폰의 대역이, 2.5–4 kHz에는 귀를 찌르기 쉬운 대역이 있다. 클릭음 1250 Hz와 1875 Hz는 그 사이에 있으며, 처음 소리인 1000 Hz와 1500 Hz는 점선으로 표시된다.
채운 띠는 테너 색소폰의 에너지가 모이는 대역(오른쪽일수록 약함), 빗금은 귀를 찌르기 쉬운 2.5–4 kHz다. 점선은 처음 소리(1000/1500 Hz), 실선은 선택한 소리다. 선의 높이는 음량을 나타낸다.

더 높고 긴 소리나 배음을 더한 후보가 더 잘 들렸다. 그래도 부드럽고 중립적인 전자음의 느낌을 유지할 수 있는 범위에서 골랐다.

덜어내기 — 넣지 않은 것들

선택을 망설이게 하는 것은 두지 않는다. 없어도 성립하는지 하나씩 확인하고 덜어냈다.

광고·추적·계정
처음부터 정한 것. 앱은 스스로 네트워크 통신을 하지 않는다.
설정 화면
모든 일을 한 화면에서 마친다.
음색 선택
강박과 약박 두 소리면 충분하다. 선택지는 망설임을 만든다.
음량 슬라이더
기기의 음량 버튼이면 충분하다.
라이트 모드
검은 화면 하나만 둔다.
8박 이상
12/8박자는 4박, 9/8박자는 3박으로 센다.
박자 세분화(8분·셋잇단·16분)
필수는 아니다. 첫 번째 추가 후보로 남겨 둔다.
템포 숫자 입력
−/+와 드래그면 충분하다.

SwiftUI로 구현했으며 외부 라이브러리는 사용하지 않았다. iOS 17 이상의 iPhone에서 작동한다. 영어 이름은 No Ads Simplest Metronome이다. App Store 출시를 준비 중이다(2026년 9월). 전체 사용법과 개인정보 처리방침은 지원 페이지(영어)에 실었다.