ProDJLink Volume Guardian は、Pioneer DJ 機器のネットワーク通信(ProDJLink)を監視し、フロアの音量が規定値を超えた際に警告を表示、および CDJ へ強制的な停止信号(緊急停止)を送出するための Tauri ベースのデスクトップアプリケーションです。
音響エンジニアやベニューのオーナーが、過大入力による機材故障や騒音苦情を未然に防ぐためのセーフティツールとして設計されています。
-
リアルタイム・レベルモニタリング: DJM(ミキサー)から送信される各チャンネル、またはマスターアウトのレベルを 単位で監視。
-
多段階アラート:
-
Warning: 閾値を超えそうになった際の視覚的警告。
-
Emergency Stop: 規定時間を超えて過大入力が続いた場合、対象 CDJ への強制
Pause/Stop指令。 -
デバイス自動検知: ネットワーク上の CDJ/DJM を ProDJLink アナウンスパケットにより自動リストアップ。
-
軽量・高速: Rust (Tauri) による低リソース消費と、ミリ秒単位のパケット処理。
本アプリは ProDJLink ネットワーク内の「仮想ノード」として動作します。
graph TD
subgraph DJ_Booth [DJ Booth Network]
CDJ1[CDJ-3000 / Player 1]
CDJ2[CDJ-3000 / Player 2]
DJM[DJM-A9 / Mixer]
Switch(Network Switch)
end
subgraph Monitoring_PC [Management PC]
TauriApp[ProDJLink Guardian]
end
CDJ1 <--> Switch
CDJ2 <--> Switch
DJM <--> Switch
Switch <--> TauriApp
DJM -- "UDP Port 50001 (Meter Data)" --> TauriApp
TauriApp -- "UDP Port 50002 (Remote Stop)" --> CDJ1
Tauri の Rust バックエンドでパケットのパースを行い、フロントエンドにリアルタイムデータを流し込みます。
sequenceDiagram
participant DJM as DJM-A9
participant Rust as Rust Backend (Tokio)
participant UI as Frontend (React/Vue)
participant CDJ as CDJ-3000
Note over Rust: UDP Port 60000 で Announce 送信
DJM->>Rust: 音量・フェーダーステータス (Port 50001)
Rust->>Rust: 閾値判定 (Level > Threshold?)
Rust->>UI: イベント発行 (Update Level/Alert)
alt 強制停止トリガー
Rust->>CDJ: リモートコントロールパケット (Stop/Pause)
CDJ->>CDJ: 再生停止
end
| Layer | Technology | Description |
|---|---|---|
| Framework | Tauri | Rustベースの軽量デスクトップフレームワーク |
| Backend | Rust | 高速なパケット処理とメモリ安全性の確保 |
| Networking | tokio / socket2 |
非同期UDP通信およびマルチキャスト制御 |
| Frontend | React / TypeScript | リアルタイム・ダッシュボード表示 |
| Protocol | ProDJLink (Custom implementation) | 有志による解析に基づくパケット通信 |
本システムが利用する主要な通信ポートとデータ形式です。
- Discovery (): デバイス間の存在確認。アプリは自身を「PC/Virtual Device」として登録します。
- Status (): ミキサーのレベルメーター情報( などの値)やフェーダー位置を受信します。
- Remote Control (): CDJ に対して再生、一時停止、キュー移動などの指令を Unicast で送信します。
- 注: 最新の CDJ-3000 等では Stagehand プロトコルに準拠した形式が必要です。
.
├── src/ # フロントエンド (UI) コード
├── src-tauri/
│ ├── src/
│ │ ├── main.rs # Tauri エントリポイント
│ │ ├── link/ # ProDJLink プロトコル実装
│ │ │ ├── packet.rs # パケット構造定義
│ │ │ └── device.rs # デバイス管理ロジック
│ │ └── monitor.rs # 音量監視・判定エンジン
│ └── Cargo.toml # Rust 依存関係
└── README.md
- 自己責任: 本アプリケーションによる CDJ の強制停止は、パフォーマンスを著しく阻害する可能性があります。運用環境での使用は十分にテストを行ってください。
- 非公式: 本アプリは Pioneer DJ 株式会社の公式製品ではありません。プロトコルのアップデートにより動作しなくなる可能性があります。
- Rust / Cargo
- Node.js / npm or pnpm
- ProDJLink が動作するネットワーク環境(有線 LAN 推奨)
npm install
npm run tauri dev
- チャンネルごとの個別閾値設定
- 停止前のカウントダウン警告表示
- ログ記録機能 (CSV 出力)