N's Tuner

初めに

Android 用のクロマチックチューナーアプリです。

N's Tuner

スマートフォンのマイクで楽器の音を拾い、YIN アルゴリズムによるリアルタイムのピッチ検出で音名・周波数・セント偏差を表示します。針式メーターによる直感的なビジュアルフィードバックで、素早く正確なチューニングが行えます。

開発経緯

ギターのチューニングに使えるシンプルで動作の軽いアプリが欲しかったことが出発点です。

既存のチューナーアプリは広告が多かったり、不要な機能が満載だったりするものが多いため、必要な機能だけを備えたミニマルなチューナーを自分で作ることにしました。

概要

主な機能

設定項目

N's Tuner Settings
RMS Threshold (デフォルト: 0.0001)
「どのくらい小さい音まで拾うか」を設定します (0.000001~0.01)。値を小さくするほど微弱な音にも反応しますが、周囲のノイズも拾いやすくなります。静かな環境では小さめ、騒がしい環境では大きめに設定してください。
YIN Threshold (デフォルト: 0.30)
「どのくらい曖昧な音まで認識するか」を設定します (0.05~0.50)。値を小さくすると明瞭な音だけを検出し、大きくすると減衰中の弱い音やこもった音も拾います。針がちらつく場合は値を小さくしてみてください。
基準ピッチ A4 (デフォルト: 440Hz)
チューニングの基準周波数を設定します (430~450Hz)。バロックピッチ (415Hz 付近) やコンサートピッチなど、標準以外の基準にも対応します。

動作環境

配布ファイル

NsTuner_0.1.0_beta.apk
Android 用 APK ファイル
参考
VirusTotal 検証結果

インストール方法

本アプリは Google Play ストアを経由しない APK ファイルでの配布です。インストールには以下の手順が必要です。

  1. 上記リンクから APK ファイルをダウンロードします。ブラウザが「有害なファイルの可能性」と警告を表示する場合がありますが、ダウンロードを続行してください。
  2. ダウンロードした APK ファイルを開きます。初回は「提供元不明のアプリ」のインストールを許可する設定が必要です。画面の指示に従い、使用しているブラウザまたはファイルマネージャーに対してインストールを許可してください。
  3. Google Play プロテクトが「不明なアプリ」として警告を表示する場合があります。「インストールする」を選択してください。

必要な権限

対応楽器

クロマチックチューナーのため、12 音階のすべての音名を検出できます。対応周波数は 60Hz~1400Hz で、以下の楽器に対応しています。

※本アプリはスマートフォンのマイクで音を拾います。エレキギターやエレキベースはアンプから音を出した状態で使用してください。生音 (アンプなし) では音が小さく、正確に検出できない場合があります。ピックアップからのライン入力には対応していません。

使い方

基本操作

  1. アプリを起動すると、マイクの使用許可を求められます。許可してください。
  2. 楽器の弦を弾くと、自動的にピッチが検出されます。
  3. 画面中央に検出された音名オクターブが大きく表示されます。
  4. 針式メーターの針が中央に来るよう、ペグを回してチューニングを合わせてください。
  5. 針が中央付近 (±5 セント以内) に収まると、緑色に変わり「In tune!」と表示されます。

設定の変更

  1. 画面右上の設定アイコンをタップして設定画面を開きます。
  2. 各スライダーで RMS Threshold、YIN Threshold、基準ピッチ A4 を調整できます。
  3. 「Reset to Defaults」ボタンで全設定を初期値に戻せます。

ピッチ検出の仕組み

N's Tuner は YIN アルゴリズム を採用しています。YIN は Alain de Cheveigné と Hideki Kawahara が 2002 年に発表したモノフォニック・ピッチ検出アルゴリズムで、自己相関関数をベースに以下の処理を行います。

  1. 差分関数の計算 — 信号と時間シフトした信号の差分二乗和を算出
  2. 累積平均正規化差分関数 (CMND) — 差分関数を正規化し、閾値との比較を可能に
  3. 絶対閾値によるピッチ候補検出 — CMND が閾値を下回る最初のディップを基本周波数の候補として選出
  4. 放物線補間 — サブサンプル精度でピッチを確定

音声処理パイプライン

  1. 音声キャプチャ — AudioRecord で 44.1kHz / モノラル / PCM Float 形式で取り込み
  2. リングバッファ — 8192 サンプル (4 チャンク × 2048) のリングバッファに格納
  3. ピッチ検出 — YIN アルゴリズムでチャンク単位に解析。失敗時はリングバッファ全体で再試行
  4. 音名変換 — 周波数 → MIDI ノート番号 → 音名 + オクターブ + セント偏差
  5. 安定化フィルタ — 同一音名+オクターブが 3 フレーム連続で一致した場合のみ表示を更新

技術仕様

開発言語
Kotlin
UI フレームワーク
Jetpack Compose (Material 3)
サンプルレート
44,100 Hz
オーディオ形式
PCM Float / モノラル
バッファサイズ
8,192 サンプル
検出周波数範囲
60 Hz ~ 1,400 Hz
Min SDK
26 (Android 8.0)
Target SDK
35 (Android 15)

既知の制限

免責事項

更新履歴

2026年3月 v0.1.0-beta
初版リリース。リアルタイムピッチ検出、針式メーター表示、設定画面を搭載。

開発者情報

開発者 Noriya
E-mail noriyahd28v@gmail.com