Skip to content

secta113/YinChroma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

v4.2 #YinChroma

🎸 #YinChroma は、PythonとFletで構築された、エンジニア視点の高精度ギターチューニングツールです。

従来のFFT(高速フーリエ変換)よりも低域の精度に優れた YINアルゴリズム を採用し、リアルタイムでのピッチ検出と、お手本音源のループ再生、さらに自由なカスタムチューニング登録機能を統合しています。

🛠 特徴

  • 高精度ピッチ検出: 音楽信号処理で定評のある YINアルゴリズム を採用。ギターの低音域(7弦ギターのB1など)でも非常に安定した判定が可能です。
  • 洗練されたアナログメーター: セント単位のズレを視覚化する針インジケーターと、±5セントの「OKゾーン」を可視化した直感的なデザインを提供します。
  • カスタムチューニング管理: 「ドロップD」や「半音下げ」など、独自のチューニングをいくつでも登録可能。各弦に周波数とWAV音源を紐付けられます。
  • モジュール分割された堅牢な設計: UI(Views)、ロジック(PitchHandler)、ユーティリティ(Utils)を明確に分離し、長期的な保守性と拡張性を確保しています。
  • インテリジェントなログ管理: 保存イベントやエラーを追跡しつつ、1MB単位の自動ローテーション機能によりログの肥大化を防ぎます。
  • ヘッドセットモード: 再生音とマイク入力を同時に扱う際、再生音を判定から除外するか切り替え可能な実戦的機能を搭載。

📁 プロジェクト構成

#YinChroma/
├ main.py                  # エントリーポイント
├ main_controller.py       # 全体制御(Controller)
├ config.ini               # 設定ファイル
├ icon.ico                 # アプリアイコン
├ requirements.txt         # 依存ライブラリ一覧
│
├ views/                   # UIコンポーネント (View)
│ ├ main_view.py           # メイン画面レイアウト
│ ├ settings_view.py       # 設定画面
│ └ tuning_editor.py       # チューニング編集画面
│
├ pitchhandler/            # 音響処理・ロジック (Model)
│ ├ pitchdetector.py       # ピッチ検出エンジン (YIN Algorithm)
│ ├ pitch_analyzer.py      # ピッチ解析ロジック
│ ├ yin_processor.py       # YINアルゴリズム詳細処理
│ ├ note_stabilizer.py     # 音程安定化フィルタ
│ └ soundhandler.py        # 音声再生管理
│
├ utils/                   # 汎用ユーティリティ
│ ├ config_manager.py      # 設定管理
│ └ logger_manager.py      # ログ管理
│
├ log/                     # 実行ログ出力先
└ sound/                   # お手本WAVファイル格納先

🚀 セットアップ

1. 依存ライブラリのインストール

リポジトリ直下で以下のコマンドを実行し、必要なパッケージを一括インストールしてください。

pip install -r requirements.txt

主要な依存関係:

  • flet: UIフレームワーク
  • pyaudio: リアルタイム音声入力
  • numpy: 数値演算(信号処理)
  • pygame: 音声再生(ミキサー)

2. 実行

flet run main.py

📖 使い方

1. ピッチ判定(Tuner)

  • アプリを起動するとマイク入力を開始します。
  • 弦を弾くと、中央に「一致する弦名」と「ズレ(cent)」、そしてアナログメーターが動きます。
  • 針が中央のグリーンゾーン (±5.0 cent) に収まるまでペグを調整してください。
  • 部屋のノイズを拾いすぎる場合は、設定(歯車アイコン)から「振幅閾値」を調整してください。

2. お手本再生(Reference Tone)

  • 中央のドロップダウンからチューニングセットを選択します。
  • 表示された弦ボタンを押すと、その音のループ再生が始まります。
  • 画面下部の ループ再生/停止 ボタンで一括操作が可能です。
  • 「+」ボタンから、自分好みの周波数と音源を組み合わせた新しいチューニングをいつでも作成できます。

📝 更新履歴

  • v4.2: ディレクトリ構成を刷新(Views, PitchHandler, Utilsへの分離)し、保守性を向上
  • v4.1: MVC構造へのリファクタリング、ストリーム開始バグの修正。
  • v3.5: 閾値変更時のログ氾濫を抑えるイベント最適化。
  • v3.2: アナログメーターのデザイン刷新(目盛り・セーフゾーン追加)。
  • v2.0: カスタムチューニング登録画面・音源アップロード機能の実装。
  • v1.0: Fletへの完全移行。YINアルゴリズムの導入。

⚖️ 免責事項

このソフトウェアは、個人のギター練習や調整を支援するためのツールです。環境(マイク性能や周囲のノイズ)により判定結果に誤差が生じる場合があります。

About

YINアルゴリズムを採用した高精度・低遅延ギターチューナー。FletによるモダンなUIと、お手本音源のループ再生機能を備えたエンジニアのためのチューニングツール。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors