나왔습니다
PeerClock Metronome v1.0, 오늘 App Store에 올라왔습니다. 같은 Wi-Fi에 연결된 iPhone과 iPad를 ±2ms 이내로 동기화시키는 메트로놈입니다. 서버도, 마스터 기기도, 인터넷도 필요 없습니다. 방 안에 있는 기기들만 있으면 돌아갑니다.
왜 만들었나
모두가 인이어를 끼고 합주를 해 본 적 있다면 익숙한 문제일 겁니다. 각자 클릭을 듣고 있는데, 사실 그 클릭들이 완전히 같은 클릭이 아닙니다. 기기 사이에 몇 밀리초만 어긋나도 타이트해야 할 합주가 느슨하게 들리고, 그게 누구 탓인지 짚어내기도 어렵죠.
제가 원했던 건 모든 기기가 「지금」을 같은 기준으로 공유하는 메트로놈이었습니다. 한 박자 안이 아니라, ±2ms 안에서요. 사람이 어긋남으로 구분할 수 있는 한계보다 훨씬 아래라서, 어느 기기를 보든 클릭, 화면 깜박임, 지휘 선이 같은 순간에 떨어집니다.
설계의 특징
마스터/슬레이브가 아니라 피어 동등
「메인」 기기 같은 건 없습니다. 모든 iPhone과 iPad가 동등한 입장으로 참여합니다. 도중에 자기 기기를 들고 나가도, 새 연주자에게 도중에 건네줘도, 한 대의 앱을 강제 종료해도, 나머지는 그대로 동기화된 채 박자를 이어갑니다. 재선출, 재페어링, 재시작 같은 거 없습니다.
±2ms 동기화, 서버 없음
동기화는 전적으로 로컬 Wi-Fi 위에서 동작합니다. 안쪽은 NTP 식 4-타임스탬프 교환을 사이클당 40번 측정하고, 노이즈가 큰 절반은 버리는 방식입니다. 어떤 데이터도 방 밖으로 나가지 않습니다. 계정도 클라우드도 없고, 제가 신경 써야 할 분석 도구도 없습니다.
자동 탐색
각 기기에서 앱만 열면 Bonjour로 몇 초 안에 서로를 찾습니다. IP 주소를 입력할 필요도, QR 코드도, 페어링 화면도 없습니다.
실제로 따라갈 수 있는 지휘 선
선택한 박자에 맞춰 전통적인 지휘 도형을 그리는 애니메이션 선이 화면에 표시됩니다. 2/4는 다운-업, 3/4는 삼각형, 4/4는 십자, 이런 식이죠. 시각판 클릭입니다. 헤드폰을 끼고 있는 드러머와 끼지 않은 보컬이 함께 있는 현장에서는 생각보다 훨씬 도움이 됐습니다.
지원하는 박자
4/4, 3/4, 4/8, 3/8, 6/8, 9/8, 12/8.
실시간 BPM 반영
어느 한 기기에서 템포를 바꾸면 다른 기기들이 그 자리에서 따라옵니다. 「지금 따라잡고 있구나」 하는 어색한 순간이 들리지 않습니다.
이런 분들에게
- 여러 대의 인이어 모니터로 합주 연습을 하는 밴드와 앙상블
- 드럼라인, 타악기 섹션, 합창단처럼 시각적 클릭을 함께 봐야 하는 현장
- 모든 학생에게 같은 박자를 전해야 하는 음악 선생님의 그룹 레슨
- 본 공연에서 케이블을 더 늘리지 않고 다른 기기로 백업 클릭을 두고 싶은 라이브 연주자
PeerClock 위에 만들었습니다
이건 제가 PeerClock 위에 가장 먼저 출시한 앱입니다. PeerClock은 Apple 기기 사이의 피어 동등 P2P 클럭 동기화를 위해 제가 직접 쓴 오픈소스 Swift 라이브러리이고, 코드는 GitHub에 있습니다. 메트로놈이 아닌 다른 용도로 써도 괜찮습니다.
요구 사양
- iOS 17.0 이상
- 같은 로컬 Wi-Fi에 연결된 iPhone 또는 iPad
써 보기
다운로드하고, 같은 Wi-Fi의 기기 두 대 이상에서 열고, 한 대에서 Start를 누르세요. 그게 전부입니다.
안 되는 게 있거나 아직 없는 기능이 필요하면 hirose@hakaru.net으로 보내 주세요. 다 읽습니다.