Thanks to visit codestin.com
Credit goes to github.com

Skip to content

furukawa1020/FrogEcho

Repository files navigation

M5 Atom Echo カエル鳴き声システム 🐸

M5 Atom Echo用のカエルの鳴き声再生システムです。個体差シミュレーション、LED同期、複数音源対応など、リアルなカエルの合唱を体験できます。

🎯 主な機能

  • 3種類のカエル音源: 異なる個性を持つカエルの鳴き声
  • 発声モード: SOLO(単独)、CALL(呼びかけ)、CHORUS(合唱)
  • ピッチ調整: -500~+500 centsでカエルの個性を演出
  • 複数音源選択: ランダム再生や特定の組み合わせ選択
  • ADSR LED制御: 鳴き声に同期したLED発光
  • リアルタイム調整: シリアルコマンドで即座にパラメータ変更
  • ESP-NOW対応: 将来の多台同期用フレームワーク搭載

🔧 ハードウェア要件

  • M5 Atom Echo (ESP32-PICO-D4搭載)
  • 内蔵スピーカー・LED・ボタンを使用
  • 追加ハードウェア不要

📁 ファイル構成

frogmix/
├── platformio.ini          # PlatformIO設定
├── include/
│   └── config.h            # ピン定義・設定値
├── src/
│   └── main.cpp            # メインプログラム
├── data/
│   └── sounds/             # WAV音源配置ディレクトリ
│       ├── frog1.wav       # カエル音源1
│       ├── frog2.wav       # カエル音源2
│       └── frog3.wav       # カエル音源3
└── README.md               # このファイル

🎵 WAV音源要件

data/sounds/ ディレクトリに以下の仕様のWAVファイルを配置してください:

必須仕様

  • フォーマット: WAV (PCM)
  • ビット深度: 16-bit
  • チャンネル: モノラル (1ch)
  • サンプルレート: 16,000Hz ~ 22,050Hz (推奨: 22,050Hz)
  • 長さ: 100ms ~ 400ms (推奨: 200-300ms)
  • ファイルサイズ: 32KB以下推奨

ファイル名

  • frog1.wav (デフォルト音源)
  • frog2.wav (バリエーション1)
  • frog3.wav (バリエーション2)

音源作成のヒント

  • 実際のカエルの鳴き声: ニホンアマガエル、シュレーゲルアオガエルなど
  • 周波数帯域: 500Hz ~ 4kHz 程度が最適
  • 音圧レベル: -12dB ~ -6dB RMS (クリッピング回避)
  • フェードイン/アウト: 5-10ms程度で自然な響き

🚀 セットアップ手順

1. 環境準備

# PlatformIO CLI がインストールされている場合
pio platform install espressif32

2. 音源ファイル配置

data/sounds/ に上記仕様のWAVファイルを配置

3. ビルド・アップロード

# コード書き込み
pio run --target upload

# SPIFFS書き込み(音源ファイル)
pio run --target uploadfs

4. シリアルモニタ接続

pio device monitor --baud 115200

🎮 使用方法

シリアルコマンド (115200bps)

コマンド 説明
mode SOLO|CALL|CHORUS 発声モード変更 mode CHORUS
pitch <cents> ピッチ調整 (-500~500) pitch 200
crowd <0-255> 群衆密度設定 crowd 180
minGap <ms> 最小発声間隔 (300-1200ms) minGap 500
file <0-2> 音源ファイル指定 file 1
status 現在の状態表示 status
list コマンド一覧表示 list

発声モード

モード 基本確率 特徴
SOLO 0.05 単独発声(控えめ)
CALL 0.25 呼びかけ(中程度)
CHORUS 0.60 合唱(活発)

個体差パラメータ

  • shyness (0.2-0.8): 起動時にランダム決定される個体の内向性
  • crowd (0-255): ユーザー設定可能な群衆密度
  • 実効確率 = 基本確率 × (crowd/255) × shyness

🔧 トラブルシューティング

音が出ない場合

  1. ピン設定確認: include/config.h の代替ピン設定を試す
// 代替設定例
#define I2S_BCLK_PIN    26  // 19 → 26
#define I2S_LRCK_PIN    25  // 33 → 25  
#define I2S_DOUT_PIN    32  // 22 → 32
  1. アンプ制御確認: SPK_AMP_EN_PINが不要な個体もあります
// config.h でコメントアウト
// #define SPK_AMP_EN_PIN  21
  1. 音源ファイル確認: シリアルモニタで status コマンド実行

LEDが光らない場合

  • LED_PIN を 25 や 32 に変更してテスト
  • FastLED の電圧設定を確認

SPIFFS エラーの場合

# パーティション再作成
pio run --target erase
pio run --target upload
pio run --target uploadfs

🔮 将来拡張

ESP-NOW多台同期

  • SyncFrame 構造体でビート・BPM・モード同期
  • 複数のAtom Echoで合唱システム構築可能

機能追加候補

  • マイク入力による音声トリガー
  • 環境センサー(温度・湿度)による発声確率調整
  • Webインターフェースでのリモート制御
  • SDカードからの音源動的読み込み

📊 システム仕様

  • CPU: ESP32-PICO-D4 (240MHz)
  • メモリ: 4MB Flash, 520KB RAM
  • 音質: 16-bit 22.05kHz モノラル
  • 遅延: < 50ms (発声トリガーから再生開始)
  • 電力: 約 150mA (再生時), 50mA (待機時)

📝 ライセンス

MIT License - 自由に改変・再配布可能

👥 貢献

プルリクエスト・イシュー報告歓迎! 特に音源の最適化や新機能のアイデアをお待ちしています。


🐸 Happy Croaking! ケロケロ〜♪

About

Happy Croaking! ケロケロ〜♪

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published