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 # このファイル
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程度で自然な響き
# PlatformIO CLI がインストールされている場合
pio platform install espressif32data/sounds/ に上記仕様のWAVファイルを配置
# コード書き込み
pio run --target upload
# SPIFFS書き込み(音源ファイル)
pio run --target uploadfspio device monitor --baud 115200| コマンド | 説明 | 例 |
|---|---|---|
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
- ピン設定確認:
include/config.hの代替ピン設定を試す
// 代替設定例
#define I2S_BCLK_PIN 26 // 19 → 26
#define I2S_LRCK_PIN 25 // 33 → 25
#define I2S_DOUT_PIN 32 // 22 → 32- アンプ制御確認: SPK_AMP_EN_PINが不要な個体もあります
// config.h でコメントアウト
// #define SPK_AMP_EN_PIN 21- 音源ファイル確認: シリアルモニタで
statusコマンド実行
- LED_PIN を 25 や 32 に変更してテスト
- FastLED の電圧設定を確認
# パーティション再作成
pio run --target erase
pio run --target upload
pio run --target uploadfs- 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! ケロケロ〜♪