PeerClock Metronome v1.0 上架:Apple 裝置的 P2P 同步節拍器

上架了

PeerClock Metronome v1.0 今天上 App Store 了。它是一個會在同一個 Wi-Fi 上把多台 iPhone 與 iPad 同步到 ±2ms 以內的節拍器。中間沒有伺服器、沒有主控裝置,也不需要網際網路。房間裡那幾台手機就夠了。

在 App Store 下載 →


為什麼做這個

如果你跟一個全員戴入耳監聽的樂團排過,大概知道這個情境。每個樂手都聽得到節拍,但這些節拍其實不是同一個節拍。裝置之間差幾毫秒,原本應該很緊的合奏就鬆掉,更糟的是沒人看得出到底是誰沒對齊。

我想要的是一個讓所有裝置共用同一個「現在」的節拍器。不是一拍以內,不是一個音以內,是 ±2ms 以內。這已經遠低於人耳能分辨成兩聲的距離了,所以不論你看的是哪一台裝置,節拍、畫面閃動、指揮線都落在同一個瞬間。

設計上的特點

點對點,不是主從

沒有「主裝置」這種角色。每一台 iPhone 或 iPad 都用對等的身分加入。你可以中途拿起自己那台走掉,把裝置交給新的演奏者,甚至強制關掉其中一台的 App,剩下的還是會繼續同步打拍。不用重新選舉、不用重新配對、不用重啟。

Wi-Fi 上 ±2ms,沒有伺服器

同步完全跑在你本地的 Wi-Fi 上。底層是受 NTP 啟發的 4 時間戳記交換,每個週期測 40 次,吵雜的那一半丟掉。沒有任何資料離開現場。沒有帳號、沒有雲端,也沒有我得操心的分析工具。

自動探索

在每一台裝置打開 App,它們會在幾秒內透過 Bonjour 找到彼此。不用輸入 IP,不用 QR Code,也沒有配對畫面。

真的能跟得上的指揮線

每一種拍號都有一條小小的動畫線條,照傳統指揮圖樣畫出來:2/4 是上下,3/4 是三角形,4/4 是十字,以此類推。等於是視覺版的節拍。在「鼓手戴著耳機,主唱沒戴」這種現場,效果比我原本預期的還明顯。

支援的拍號

4/4、3/4、4/8、3/8、6/8、9/8、12/8。

即時 BPM 調整

在任何一台手機上動速度,其他手機立刻跟上。不會出現那種「現在它在追上來」的尷尬瞬間。


誰會用得上

  • 用多支入耳監聽排練的樂團與合奏團體
  • 需要共用視覺節拍的鼓號樂隊、打擊樂聲部、合唱團
  • 需要讓所有學生聽到同一個拍子的音樂老師團體課
  • 不想多拉一條線、又想在第二台裝置上有備援節拍的現場演出者

建構於 PeerClock 之上

這是我在 PeerClock 上推出的第一個 App。PeerClock 是我寫的開源 Swift 函式庫,用來在 Apple 裝置之間做對等的 P2P 時鐘同步,原始碼放在 GitHub。拿去做不是節拍器的東西也沒問題。

系統需求

  • iOS 17.0 或更新版本
  • 同一個本地 Wi-Fi 上的 iPhone 或 iPad

怎麼開始

下載、在同一個 Wi-Fi 的兩台以上裝置打開、其中一台按下 Start。整個流程就這樣。

在 App Store 下載 →

遇到 Bug、或想要還沒做出來的功能,寫信給我:hirose@hakaru.net。每一封都會看。