チューナーとメトロノームは、練習中いつも同時に必要になります。ところがアプリは別々か、同じアプリでもタブで切り替える作りがほとんどで、振り子を見ながらチューニングするということができません。
その前提から作り直した練習ツール 「Centronome チューナー&メトロノーム」 を、App Storeで公開しました。
▶ App Storeで見る(無料) | 製品ページ:Centronome
📌 Centronomeの3行まとめ
① チューナーとメトロノームが1画面で同時に動く。タブの切り替えがない
② ピッチ検出はYIN+FFT倍音検証。オクターブの誤検出を構造的に抑える
③ クリック時刻はオーディオのサンプルクロックが決める。画面のフレーム落ちに影響されない
設計の中心にある原則
このアプリの実装は、ひとつの原則に集約されます。
チューナーは長めの観測窓を持つDSPを低遅延I/Oから分離し、メトロノームはOSやUIのタイマーではなくオーディオのサンプルクロックを唯一の時間基準にする。
この2つは要求が正反対です。チューナーは低い音まで正確に測るために長い窓が要り、メトロノームは詰まりのない出力のために短いバッファが要ります。同じスレッドで両方をやろうとすると、どちらかが破綻します。
inputNode.installTap ─► リングバッファ(ロックフリー)
└─► ピッチ解析ワーカー(専用スレッド)
AVAudioSourceNode ─────► メトロノームのレンダーブロック(クリックを直接合成)
オーディオコールバックの中でやるのはコピーと通知だけ。DSPは専用スレッド、UIは不変のスナップショットを60Hzで読むだけ、という3層に厳密に分けています。
オクターブを間違えないチューナー
ギターの低音弦やベースで、実際より1オクターブ高い(あるいは低い)音として表示されてしまう。チューナーで最も多い失敗はこれです。原因は、基音が弱く倍音が強い信号(missing fundamental)を、どちらの候補として読むかの判定にあります。
Centronomeのパイプラインはこうなっています。
float32 マイク入力 → DCブロッカー → 観測窓 → RMS・クリッピング・周期性のゲート
→ YIN(FFT相関 + CMNDF + 3点放物線補間)
→ FFT倍音スコアによるオクターブ補正
→ 信頼度
→ 対数周波数(MIDI連続値)でのトラッキング
→ 音名 + セント
要点は、倍音スコアの比較の前に構造的なゲートを置いたことです。
- 上方向(f → 2fなど)へ動かすのは、fに固有の倍音(3次・5次・7次…)が十分弱いときだけ
- 下方向(f → f/2など)へ動かすのは、f/2に固有の部分音に実エネルギーがあるときだけ
スコアの大小だけで決めると、基音が欠けた信号を1オクターブ上へ持ち上げてしまいます。
前処理でも「加工しない」ことを選びました。AGC・エコーキャンセル・強いノイズ抑制はいずれもピッチを歪めるため、オーディオセッションは.measurementモードで動かします。A0(27.5Hz)まで見るので、ハイパスは固定100Hzではなく測定下限に追随するDCブロッカーです。
トラッキングはHzではなくMIDI連続値(=セント)の領域で行い、メディアン5点と時定数30〜200msの指数移動平均をかけます。信頼度の高い75セント超の跳躍が来たときだけトラッカーをリセットするので、弦を替えたときの追従は速く、ビブラート中は中心のピッチを保ちます。
合成信号でのオフライン検証は次のとおりです。
| テスト | 結果 |
|---|---|
| 純音 82.4〜1175Hz | 中央値 < 1セント、最大 < 5セント、オクターブ誤検出 0 |
| 鋸波 82〜440Hz(8192窓) | 全点 < 1セント |
| ±1〜±7セントのデチューン | 誤差 < 0.75セント |
| 白色雑音 SNR 30/20/10dB | < 8セント |
| ギター6弦(256フレームずつストリーム) | 全弦で正しい音名、< 2セント |
| ベース E1(41.2Hz) | 正しい音名、< 3セント |
⚠ 「±1セント」は判定閾値であり、測定器としての精度保証ではありません
合成信号では1セントを大きく下回りますが、実機で保証を主張するには校正済みのトーンジェネレータとオーディオインターフェースによる検証が必要です。恒常的なバイアスが確認された場合のみ、設定の「端末校正」オフセットを使ってください。
9つのプリセットと、ピアノのインハーモニシティ
プリセットを選ぶと測定の上下限と解析窓が狭まり、サブハーモニクスやオクターブの曖昧さが減ります。クロマチック、ギター標準、Drop D、ギター高精度、ベース、ウクレレ、ヴァイオリン、声、ピアノ単音の9種類。弦ごとの目標表示で、いまどの弦に近いか、あと何セントかが分かります。
ピアノ単音モードでは、弦のインハーモニシティを扱います。実際のピアノ弦は理想弦ではないので、第h部分音の周波数は f_h = h·f0·√(1+Bh²) になります。低次の部分音から最小二乗でBと真のf0を推定し、B係数と第2部分音の偏差を表示します(鍵盤ごとの目標ストレッチカーブの保持は次のバージョンの課題です)。
判定モードは4段階です。
| モード | 許容 |
|---|---|
| Easy | ±5セント |
| Normal | ±3セント |
| Precision | ±1セント(小数第2位まで表示) |
| Strobe | 連続位相。回転が止まればチューニング完了 |
A4基準は410〜480Hzを0.1Hz刻みで調整でき、シャープ/フラット表記の切り替えにも対応します。
テンポが「じわじわずれない」ようにする
メトロノームで起きがちな失敗は、1拍ごとにサンプル数を整数へ丸めることです。123 BPMのように1拍あたりのサンプル数が整数にならないテンポでは、丸め誤差が毎拍たまります。
Centronomeは、クリックの時刻を小数のまま位相アキュムレータで進め、出力バッファへ置くときだけ最寄りのサンプルへ丸めます。誤差が累積しません。
| 指標 | 値 |
|---|---|
| RMSジッター | 6.0µs(1サンプル未満) |
| 累積ドリフト(123 BPM・120秒・246拍) | −7.6µs |
| テンポ誤差 | −0.06ppm |
| 可変ブロックサイズ(64〜1024) | RMSジッター < 1サンプル |
| 対照:毎拍で整数へ丸めた場合 | 30分で28msのドリフト |
画面の振り子とビート表示は、オーディオの出力時刻から逆算して補間しています。表示から音を鳴らす(DisplayLink → audio)向きの経路は作りません。 UIがフレームを落としても、拍は揺れません。
機能面は、20〜300 BPM、タップテンポ、1/4〜5/4・6/8・7/8・9/8・12/8の拍子、4分・8分・3連・16分の分割、8分/16分のスウィング(50〜75%)、拍ごとのアクセント、4種類のクリック音色、触覚フィードバック。テンポや拍子の変更は次の拍境界で適用するので、変更した瞬間に拍がずれません。
同時に使うと、クリックがマイクに入る
スピーカーでメトロノームを鳴らしながらチューニングすると、クリックがマイクへ回り込みます。これは避けようがないので、対策を優先順位で並べました。
- ヘッドフォンを使う(最も確実。UIでも案内しています)
- クリックの時刻を既知として、その解析窓の信頼度を下げる(本アプリが実装)
- クリックの波形を高域寄りにする
- 既知信号のキャンセル
出力が内蔵スピーカーで、かつ直近の拍が解析窓に入っているときだけ抑制をかけます。
計測の裏側を隠さない
診断画面では、実際のサンプリングレート、I/Oバッファ長、解析窓の長さ、処理負荷(リアルタイムファクター)、リングバッファのオーバーラン数、入出力ルートを実値で確認できます。
DSPのオフライン計測では、ベース設定(8192フレーム/ホップ256)で1解析あたり平均0.098ms、リアルタイムファクター0.018(ピーク0.21)でした。
これらを表に出しているのは、「高精度」と書くだけでは何も言っていないのと同じだからです。数字が見えていれば、環境によって結果が変わることも含めて判断できます。
広告と購入について
無料で配信しており、画面上端のヘッダー広告と、3回目のコールド起動ごとに1回の全画面広告(15秒後に閉じられます)があります。表示するのは当社アプリの紹介のみで、第三者の広告SDKは使っていません。IDFAも広告識別子も読まないため、ATT(App Tracking Transparency)の対象外です。買い切りの「広告非表示」で広告を削除できます(サブスクリプションはありません)。
広告表示中はチューナーを開始せず、閉じてからマイクを掴みます。針の視認性を空の広告枠で削らないよう、クリエイティブが用意できないときはヘッダーの高さを0に畳みます。
プライバシー面では、マイクの音声はその場でピッチ解析にのみ使用し、録音・保存・外部送信は行いません。
現時点の制限
- 単音(モノフォニック)専用です。ピアノの和音や全弦同時の推定は対象外です
- ピアノはインハーモニシティの推定値を表示するところまでで、鍵盤ごとの目標ストレッチカーブは未実装です
- 1サンプルへの丸め(48kHzで最大±10.4µs)はデジタル上のレンダリング位置の値であり、スピーカーから空気中へ音が出るまでの物理的な遅延とは別物です
製品概要
| 項目 | 内容 |
|---|---|
| 名称 | Centronome チューナー&メトロノーム |
| 提供開始 | 2026年8月 |
| 対応OS | iOS 18.0以降 / iPadOS 18.0以降 |
| 価格 | 無料(広告非表示の買い切りアプリ内課金あり。サブスクリプションなし) |
| チューナー | YIN+FFT倍音検証、9プリセット、Easy/Normal/Precision/ストロボ、A4=410〜480Hz |
| メトロノーム | 20〜300 BPM、1/4〜5/4・6/8・7/8・9/8・12/8、3連・16分・スウィング、4音色 |
| 対応言語 | 日本語・英語 |
| カテゴリ | ミュージック |
| 配信 | App Store |
| 開発・提供 | 株式会社Code and DESIGN |
会社概要
| 項目 | 内容 |
|---|---|
| 会社名 | 株式会社Code and DESIGN(Code and DESIGN inc.) |
| 代表者 | 代表取締役 中島安彦 |
| 事業内容 | iOSアプリ・ゲーム・Webサービスの企画・開発・運営、受託開発 |
| Webサイト | https://code-and-design.jp/ |
| App Store | 開発者ページ |
関連する記事
メトロノームを使った練習の組み立てはリズム感の鍛え方に、音程が合わない原因の切り分けは音程が合わない原因と直し方にまとめています。調の中で音を聴き分ける力については相対音感とは、コード進行の基礎はコード進行の作り方入門をご覧ください。
合わせながら、刻む。練習中に必要なものが同時に見えている状態を作りたくて開発しました。ご意見・ご要望はお問い合わせからお寄せください。



