Takafumi Horiuchi

鼓動するメトロノーム

概要

画面の真ん中の円が、クリック音と同じ瞬間に、同じ強さで鼓動する。広告も、アカウントも、設定画面もない、iPhoneのためのメトロノームを制作した。

鼓動するメトロノームの画面。黒い画面の中央に白い円、その上に拍を表す四つの点、下にテンポの120 BPMと−/+が並ぶ。円は拍に合わせて膨らんでは戻る。
アプリと同じ式で、この画面をページの中で動かしている(120 BPM、4拍子)。円をタップすると止まる。

テナーサックスを練習するときに、自分で使うためにつくった。開けばすぐに鳴らせて、音が聞き取りにくい場面でも拍が目に見える。企画からデザイン、SwiftUIでの実装、クリック音の合成までを一人で行った。

操作 —— 変えたいものに、そのまま触れる

画面にあるのは、拍の点、円、テンポの数字だけ。メニューも説明文も置かず、変えたいものそのものに触れて変える。

止まっているときの画面。中央の円は薄い灰色で、再生の三角形が重なっている。上に四つの点、下にテンポの120 BPMと−/+、左上に小さなⓘ。
ⓘ
サポートページを開く。
点
タップで1拍増える(1–7拍)。なぞって増減もできる。
円
タップで開始・停止。長押しすると、曲に合わせて叩いてテンポを決められる。
数字
ドラッグで速く・遅く。ゆっくり動かすと細かく変わる。−/+は1ずつ。
止まっているときの画面。画面の文字は、数字と「BPM」だけにした。

鼓動 —— 同じ瞬間に、同じ強さで

円は、音が鳴らされた瞬間ではなく、耳に届く瞬間に膨らむ。Bluetoothイヤホンで生じる0.1–0.3秒ほどの遅れも、iOSが報告する出力の遅れを使って補正している。膨らむ大きさはクリックの音量に比例させ、1拍目は高く大きな音とともに、ひときわ大きく膨らむ。

1小節4拍のクリック音と、円の大きさのグラフ。クリックのたびに円の大きさの線がすぐに立ち上がり、1拍目は1.25倍、2–4拍目は1.15倍に達して、1倍を少し下回ってから戻る。
1小節ぶんのクリック音(塗り)と、円の大きさ(線)。120 BPM、4拍子。円は音から0.02秒でふくらみきり、ゼリーのように少し縮みすぎてから静止する。

拍の時刻は、音声を出すスレッドがサンプル単位で決めている。誤差を積み重ねない計算にしたので、1時間鳴らし続けても、ずれは0.5サンプル以内に収まる。

タップテンポ —— 叩いている間は、鳴らさない

円を長押しすると、円がゼリーのようにふるえ始める。曲や頭の中のテンポに合わせて円を叩くと、叩いた所がへこみ、ぷるんと揺れて戻る。テンポは振動で返ってくる。

円の上の端を1回叩いたあとの輪郭を、時間を追って並べた6コマ。0.03秒で上の端がへこみ、0.08秒で戻り始め、0.17秒と0.3秒で縦と横に少しゆがみ、1.3秒で真円に戻る。
円の上の端を1回叩いたあとの輪郭。アプリと同じ式から描いた。点線は真円。
開発中のアプリの画面。円はタップテンポ中の灰色で、下に「ゼリーの調整」パネルが開いている。「弾力(揺れの速さ)3.6回/秒」「粘り(揺れの収まり方)0.10」などのスライダーと、それぞれの説明が並ぶ。
揺れ方は、開発中のアプリにだけ入れた調整パネルで決めた。弾力や粘りなど10個の値をスライダーで動かしながら、実際に円を叩いて確かめる。「プリン」「わらびもち」「液体寄り」とも叩き比べ、よく跳ね返って約0.9秒で静まる「ゼリー」を標準にした。

叩いている間は、あえて音を出さない。叩いた瞬間に音を返すと、Bluetoothでは遅れて聞こえ、メトロノームの音とも二重になってしまう。叩くのをやめると、そのテンポの音がかすかに鳴り始め、6秒かけていつもの大きさになる。

5回のタップのあと、振動を表す点がしだいに小さくなり、代わりにクリック音の棒が、ほとんど聞こえない高さから6秒かけて伸びていく図。
120 BPMで5回叩いて、手を止めたとき。下の段から、タップ、振動(小さいほど弱い)、クリック音(高いほど大きい)。音量はデシベルで均等に上げるので、かすかな音から急に大きくはならない。

音 —— サックスに埋もれない高さを、耳で選ぶ

クリック音は音源ファイルを使わず、サイン波から合成している。聴き比べ用のページをつくり、テナーサックスを吹きながらiPhoneのスピーカーで3回聴き比べて、最初の音を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)、実線が決めた音。線の高さは音量を表す。

もっと高く長い音や、倍音を足した候補のほうが、聞こえは良かった。それでも、まろやかで偏りのない電子音らしさを保てる範囲で選んだ。

引き算 —— 入れなかったもの

迷わせるものは置かない。一つずつ、なくても成り立つかを確かめて外した。

広告・トラッキング・アカウント
最初に決めたこと。アプリは自分からは通信しない。
設定画面
すべてを一つの画面で完結させる。
音色の選択
強拍と弱拍の2音で足りる。選択肢は迷いを生む。
音量スライダー
本体の音量ボタンで足りる。
ライトモード
黒い画面の一つだけにする。
8拍以上
12/8拍子は4拍、9/8拍子は3拍で数える。
細分化(8分・3連・16分)
成り立つのに必須ではない。最初の追加候補として残す。
テンポの数値入力
−/+とドラッグで足りる。

SwiftUIで実装し、外部のライブラリは使っていない。iOS 17以降のiPhoneで動く。英語名はNo Ads Simplest Metronome。App Storeでの公開を準備している(2026年9月)。使い方の全体とプライバシーポリシーは、サポートページに載せている。