Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
DJ Visualizer Pi
Versione standalone del DJ Visualizer pensata per girare su un Raspberry Pi 5 e farsi comandare da telefono/tablet (webapp PWA, iOS + Android, niente store).
Riusa il motore grafico/audio dell'app Mac (shader WebGL2, catalogo effetti, Web Audio): cambia solo il "tubo" di comunicazione — l'IPC di Electron è sostituito da un server Node con WebSocket, e il pannello di controllo è una webapp mobile.
Architettura
Raspberry Pi 5 (device standalone)
┌───────────────────────────────────────────────┐
│ server.js (Node) │
│ • serve la PWA di controllo ── HTTP ──> 📱 │
│ • relay comandi ── WebSocket ──> 📱 <─> 🖥 │
│ • API: media, stato, peaks, registrazione │
│ │
│ Chromium kiosk ──> output.html (WebGL+audio)│
│ └── fullscreen su HDMI ──> proiettore │
│ Audio ──> uscita Pi (HDMI/DAC USB) ──> casse │
└───────────────────────────────────────────────┘
- Output (
public/output.html): gira sul Pi in Chromium kiosk, rende i visual a 60fps e riproduce l'audio dei file sul Pi. Riceve comandi via WebSocket. - Controllo (
public/index.html): la webapp che apri dal telefono. Stesso protocollo di messaggi JSON dell'app Mac (effect,playTrack,ticker*,bandGain, …).
Provarlo sul Mac (prima del Pi)
cd DjVisualizerPi
npm install
node scripts/gen-icons.js # genera le icone PWA
npm start
- Output: http://localhost:8080/output.html (clicca una volta per fullscreen/audio)
- Controllo: http://localhost:8080/ (aprilo anche dal telefono sulla stessa rete)
Metti qualche brano nella cartella media/ (o caricalo dall'app, tab Media).
Installazione sul Raspberry Pi 5
Pi OS Bookworm (64-bit). Copia la cartella sul Pi e:
bash scripts/install-pi.sh
Installa node/ffmpeg/chromium/cage, crea due servizi systemd
(djvisualizer-server + djvisualizer-kiosk) e li avvia. Al boot il Pi mostra
i visual a tutto schermo; dal telefono apri http://<ip-del-pi>:8080/.
I brani vanno in media/ (chiavetta USB, condivisione di rete, o upload dall'app).
Rete — Hotspot (consigliato da palco)
Il Pi crea la sua rete WiFi su wlan0 (NetworkManager), così basta il telefono.
- SSID:
DJVisualizer· password: scegli la tua (impostata in fase di setup; vedi sotto come cambiarla) - Remote: http://10.42.0.1:8080/ (IP fisso dell'hotspot)
- Parte da solo al boot (connessione
Hotspot, autoconnect, priorità 100). - Cambiare SSID/password:
sudo nmcli connection modify Hotspot 802-11-wireless.ssid "NuovoNome" wifi-sec.psk "nuovapassword" - Passare a una rete WiFi normale (per aggiornamenti):
bash scripts/wifi-join.sh "NomeRete" "password"→ poibash scripts/hotspot-on.shper tornare AP. - Amministrazione: la porta ethernet resta sempre disponibile per SSH/manutenzione.
Funzioni del telecomando
- 🌀 Effetti: libreria completa (famiglie + ricerca) + sagome SVG.
- 🎵 Media: libreria sul dispositivo, upload, coda con play/seek/prev/next.
- 🔤 Testo: ticker con direzione, posizione, effetto, grandezza, velocità, colore.
- 🎹 Pad: griglia 3×4 (tieni premuto per assegnare un brano).
- 🎚 Audio: reattività, velocità, EQ visual (bassi/medi/alti) + meter live.
- 🖥 Out: fullscreen output + registrazione MP4 (16:9, 9:16, 1:1, 4:3).
Da fare (port successivo dall'app Mac)
- Scene a tempo per brano (effetto/testo/immagine con timing indipendente).
- Trim inizio/fine + waveform per traccia nella coda.
- Intermezzi e pause tra i brani.
L'app Mac (Electron) resta un progetto separato e invariato.