# 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) ```bash cd DjVisualizerPi npm install node scripts/gen-icons.js # genera le icone PWA npm start ``` - Output: (clicca una volta per fullscreen/audio) - Controllo: (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 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://:8080/`. I brani vanno in `media/` (chiavetta USB, condivisione di rete, o upload dall'app). ### Rete - **Hotspot del Pi** (consigliato da palco): configura il Pi come access point (NetworkManager: `nmcli device wifi hotspot`), poi il telefono si collega alla rete del Pi e apre l'indirizzo. - **WiFi del locale**: il Pi e il telefono sulla stessa rete; usa l'IP del Pi. ## 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.