出ました
PeerClock Metronome v1.0、本日 App Store で公開です。同じ Wi-Fi につないだ iPhone と iPad で、メトロノームを ±2ms 以内に同期させるアプリ。サーバーもマスター機もインターネットも要りません。部屋にある端末だけで動きます。
なぜ作ったか
イヤモニで合奏したことがある人なら、たぶん同じ経験をしているはずです。みんなクリックを聞いている。でもそのクリック、実は同じクリックではない。数ミリ秒ズレているだけで、合っているはずの演奏が緩く感じられる。しかも、誰のせいなのかが特定できないのが厄介でした。
欲しかったのは、すべての端末が「いま」を共通の基準として持つメトロノームです。1拍以内とかではなく、±2ms 以内で。これは人間が「ズレ」として聞き分けられるラインの遥か下なので、クリックも画面の点滅も指揮の動きも、どの端末を見ていても同じ瞬間に揃います。
設計の特徴
マスター/スレーブではなく、ピア対等
「メイン機」というものがありません。どの iPhone・iPad も対等な立場で参加します。途中で自分の端末を持って離れても、新しい人に途中から渡しても、1台のアプリを強制終了しても、残りの端末はそのまま同期して動き続けます。再選出も再ペアリングも再起動もいりません。
±2ms の同期、サーバーなし
同期はすべてローカル Wi-Fi 上で完結します。中身は NTP 風の 4 タイムスタンプ交換を1サイクルあたり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 の端末2台以上で開いて、どれか1台で Start を押す。それで全部です。
不具合や、まだ実装していない機能の要望は hirose@hakaru.net まで。全部読みます。