← 公開資料トップに戻る
概要・特徴
🎵 高精度音楽同期照明システム
RCAライン入力からリアルタイム音楽解析を行い、DMX照明と高精度同期させるシステムの技術ガイド。ハードウェア構成、DSP解析パイプライン、将来拡張性まで詳細解説。
Roland VC-1-DMXから。安価量産設計をもとに計画。
- 高精度音声解析: PCM1802による24bit/32-48kHzサンプリング
- リアルタイム処理: STM32F407VET6 + CMSIS-DSPによる低レイテンシ解析(目標 <10ms)
- DMX制御: 周波数スペクトル・ビート検出結果をDMX演出エンジンへ出力
- カスタマイズ性: Roland VC-1-DMXを上回る柔軟性とコスト優位性
🚀 主な優位性
- 完全プログラマブル: バンド数・アルゴリズム・閾値を自由にカスタマイズ
- 低コスト: 商用製品の1/5〜1/10のコストで実現
- オープンソース: 技術コミュニティによる継続的改良
- 教育価値: DSP・組み込みシステムの実践的学習教材
3D構成イメージ
できました!こちらが、利幸さんの構成「PCM1802 + STM32F407VET6 + UART出力 → 音楽同期照明制御」の3Dイメージです:
🧠 イメージの構成要素(3D視点)
- RCA IN端子:赤・白のライン入力(左下)
- PCM1802 ADC:アナログ音声 → I2Sデジタル変換(中央)
- STM32F407VET6 DSP:CMSIS-DSPでFFT/RMS解析(右中央)
- UART出力:解析結果をPCや照明制御ユニットへ送信(右端)
- Visualizer画面:RGBバーで音楽の周波数分布を表示
- LEDブリック:赤・緑・青のLEDが音楽に同期して発光
このイメージは、利幸さんの構成を視覚的に理解しやすくするために設計されています。照明演出やDMX制御を加えたバージョンも描けますので、必要なら次のステップに進めましょう!
ハードウェア構成
🎤 音声入力部
- ADC: PCM1802 (24bit)
- 入力: RCA L/R(ラインレベル)
- フィルター: RC ローパス 100Ω/100nF
- 接続: I2S → STM32F4
🧠 処理部
- MCU: STM32F407VET6 (ARM Cortex-M4F)
- クロック: PLLI2S 有効化
- DMA: Ping-Pong バッファ (256samples×2)
- DSP: CMSIS-DSP ライブラリ
接続構成
RCA入力 → [RC Filter] → PCM1802 → I2S → STM32F407VET6 → DMX出力
↑
24.576MHz MCLK
(必要に応じて外部生成)
電源・GND設計
- PCM1802の AGND/DGND を一点でSTM32のアナログGNDに合流
- ノイズ低減のためアナログ・デジタル電源分離
- フェライトビーズやデカップリングコンデンサによるEMI対策
ファームウェア構成
I2S・DMA設定
- PLLI2S設定: PLLI2SN=271, PLLI2SR=2 で48kHz生成
- SPI2/I2S2ext: フルデュプレックス・スレイブ受信モード
- DMA2_Stream0/3: 循環モードでPing-Pongバッファ管理
- 割り込み処理: DMAハーフ転送・転送完了で処理フック
データフロー
PCM1802 (24bit左詰め) → DMA → Ping-Pong Buffer
↓
float32変換 → 前処理 → FFT → バンド集約 → DMX出力
⚡ リアルタイム設計
割り込み内では最小限の処理に留め、CMSIS-DSP呼び出しはRTOSタスクまたはメインループで実行することで安定性を確保。
DSP解析パイプライン
🔄 処理ステップ
- 前処理
- DCオフセット除去(移動平均)
- ハニング窓適用でスペクトル漏れ抑制
- FFT変換
arm_rfft_fast_f32で512/1024ポイントFFT
- 複素数→実数パワースペクトル変換
- バンド集約
- 人間の聴感帯域に合わせて8〜16バンドへ統合
arm_mean_f32/arm_sum_f32でエネルギー算出
- 正規化・AGC
arm_max_f32でピーク検出
- 各バンドを0.0〜1.0範囲にスケーリング
- ビート検出
- 短時間エネルギー(STE)と一次差分利用
beat_gain閾値超えで候補抽出
beat_refractory_framesで誤検出抑制
📊 出力データ構造
typedef struct {
uint32_t timestamp; // タイムスタンプ
float band_level[16]; // バンド別エネルギー(0.0-1.0)
uint8_t beat_flag; // ビート検出フラグ
float overall_rms; // 全体RMSレベル
float tempo_bpm; // 推定BPM (将来拡張)
} audio_analysis_t;
参考実装関数
🔧 コア関数
audio_capture_init(): I2Sクロック・GPIO初期化
audio_dma_start(): DMA循環設定・Ping-Pongバッファ登録
audio_buffer_convert(): 24bit左詰め→float32正規化
audio_apply_window(): ハニング窓適用
audio_compute_fft(): arm_rfft_fast_f32によるFFT
audio_accumulate_bands(): 周波数→バンドマッピング
audio_update_agc(): AGCによるダイナミクス制御
audio_detect_beat(): RMS・一次差分ビート検出
audio_analysis_publish(): DMX制御スレッドへ結果通知
💡 実装のポイント
24bit左詰めデータの正規化には 1<<23 スケールを使用。CMSIS-DSPとの親和性を重視した設計です。
DMX演出への統合
🎨 演出マッピング例
- 色彩制御: 低域→赤、中域→緑、高域→青の基本マッピング
- 明度制御: 正規化レベル→PWM値の線形/対数変換
- ストロボ演出: ビート検出→最短4フレーム間隔での発光制御
- シーン切替: エネルギーレベルに応じた自動シーン変更
🔗 統合パイプライン
audio_analysis_t → normalScene/seasonPreview → DMX出力
↓
16色カラーボックス可視化(デバッグ用)
🎯 高度演出の可能性
既存のnormalScene/seasonPreviewパイプラインへの注入により、音楽同期と従来演出の融合が可能。
チューニングと検証
🧪 検証プロセス
- 基本動作確認
- サイン波・ホワイトノイズ注入でFFTピーク確認
- バンドレベルの想定値チェック
- レベル校正
- 0dBV入力でRMS=0dBFSに調整
- PCM1802 PGA・外部利得の最適化
- レイテンシ測定
- 入力→DMX出力遅延をオシロで測定
- 演出要件(<20ms)の達成確認
- 実音源テスト
- ジャンル別(EDM/Rock/Jazz)での挙動確認
- 閾値・AGCパラメータの最適化
将来性と拡張可能性
🤖 高度音楽解析への発展
- ジャンル自動判定: 機械学習によるEDM/Rock/Jazz/Classical識別
- リズムパターン解析: 4/4拍子、3/4拍子、複合拍子の自動検出
- ハーモニー解析: 和音進行(C-Am-F-G等)検出による色彩テーマ変更
- 楽器分離: ドラム/ベース/ボーカル成分の個別抽出
🌐 空間音響・立体演出
- ステレオ解析: L/Rチャンネル個別処理による左右演出差別化
- 位相解析: ステレオ位相差による音像定位と照明空間移動
- サラウンド対応: 5.1ch入力による360度照明制御
- 音響エフェクト連動: リバーブ/ディレイ成分検出による照明残響表現
🧠 インテリジェント演出システム
- 適応型AGC: 会場音響特性の自動学習・最適化
- 動的プリセット: 時間帯/観客反応に応じた自動演出調整
- 予測演出: 音楽パターン学習による先読み演出(ブレイク前暗転等)
- 感情解析: 音楽感情価(明/暗/激/穏)による色温度・彩度制御
🔗 システム統合・商用展開
- マルチユニット同期: 複数PCM1802による大規模会場対応
- ネットワーク制御: Ethernet/WiFi遠隔設定・モニタリング
- クラウド連携: 演出パターンのクラウド共有・アップデート
- プロトコル統合: Art-Net/sACN対応による既存照明卓統合
Roland VC-1-DMX との比較優位性
| 比較項目 |
PCM1802+STM32 |
Roland VC-1-DMX |
優位性 |
| 音楽解析精度 |
可変バンド数・カスタムアルゴリズム |
15バンド固定 |
★★★★★ |
| レイテンシ |
<10ms(調整可能) |
不明 |
★★★★ |
| カスタマイズ性 |
完全プログラマブル |
設定ツールのみ |
★★★★★ |
| コスト |
$50-100 |
$1000+ |
★★★★★ |
| 開発自由度 |
オープンソース |
クローズド |
★★★★★ |
| 映像入力 |
非対応 |
HDMI対応 |
★ |
| 完成度・安定性 |
要開発 |
商用製品 |
★★ |
| サポート |
コミュニティ |
公式サポート |
★★ |
🎯 推奨用途
✅ PCM1802+STM32 推奨
- 音楽専用の高精度同期
- カスタム演出・独自アルゴリズム
- 教育・研究・プロトタイピング
- コスト重視・大量導入
- オープンソース・コミュニティ開発
✅ Roland VC-1-DMX 推奨
- 映像+音楽の統合演出
- 即座運用・安定性重視
- 商用環境・公式サポート必須
- 設定の簡便性重視
- ブランド信頼性・保証重視