lucianoandClaude Opus 4.8 ec4aecaf7c Mobile: timed per-track scenes + visual interludes on the remote
Port the Mac app's scene system to the phone control. Each queue entry is
now an independent clone carrying a `cues` list of timed elements (effect /
text / image), each with its own appearance time and visible duration; the
three channels are driven independently from playback progress (advanceCues).
Add visual-only "Intermezzo" queue items (silence audio, run their scene for
a set duration) and make the inter-track gap keep the scene running. New
mobile scene editor lives in the queue card detail (⚙). The queue (with
scenes) is persisted via saveState so it survives a phone reload.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 11:29:38 +02:00

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

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: djvisualizer2026
  • 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" → poi bash scripts/hotspot-on.sh per 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.

S
Description
No description provided
Readme
1 MiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 76.9%
CSS 15.7%
HTML 5.3%
Shell 2.1%