Commit Graph
26 Commits
Author SHA1 Message Date
lucianoandClaude Opus 5.5 ab1ab89127 Phone remote: LAN web page + WebSocket, QR pairing, blackout/freeze
remote-server.js: http + ws server (off by default, started from the panel,
port 8787 or next free), every request gated by a secret key embedded in a
QR code; the key persists in userData/remote.json so a phone's home-screen
shortcut survives restarts, 'Nuovo codice' revokes it. Phones send commands
that the panel executes through its own functions (transport, track pick,
effect next/prev/random/family/sequence, Auto VJ, pads, mapping on + visible
zones, blackout, freeze) and the panel pushes a compact live state at ~6 Hz
while a phone is connected (track + progress, effect, sequence, pads,
zones, meters, BPM). New panic controls in output and aux windows: blackout
(fade to black above every layer) and freeze (hold the last frame); also
available as panel buttons. src/remote.{html,css,js} is the touch UI in the
Neon Grid style, installable to the home screen, auto-reconnecting.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVMQ2JhsJ77pGKqcvvFHqc
2026-10-02 13:39:28 +02:00
lucianoandClaude Opus 5.5 f246b8bdb8 v1.11.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVMQ2JhsJ77pGKqcvvFHqc
2026-10-02 12:30:33 +02:00
lucianoandClaude Opus 5.5 225ab529bb v1.10.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVMQ2JhsJ77pGKqcvvFHqc
2026-10-02 12:18:45 +02:00
lucianoandClaude Opus 5.5 e793add541 Mapping: videos go inside the zones instead of covering them
The VJ loop and the playlist video track are full-screen DOM layers above
the WebGL canvas, so with mapping on a playing video hid the zones entirely
(and 'visual' zones never contained the video). While mapping is on the map
canvas is now moved above both video layers (videos keep playing, covered;
opaque black ground) and 'visual' zones sample a 2D composite of effect +
videos with the same opacity and blend mode as on screen. Recordings skip
the raw video layers while mapping is on, since they are already in the
zones. v1.9.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVMQ2JhsJ77pGKqcvvFHqc
2026-10-02 12:02:48 +02:00
lucianoandClaude Opus 5.5 b169e9251b v1.9.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVMQ2JhsJ77pGKqcvvFHqc
2026-10-02 09:22:14 +02:00
lucianoandClaude Fable 5 4dfa0fc993 Fix recording ENOENT: try absolute ffmpeg paths before bare 'ffmpeg'
ffmpegPath() short-circuited on the bare 'ffmpeg' candidate, so the absolute
Homebrew/system paths were never checked. From a terminal PATH covers it, but
the packaged app launched from Finder has a minimal PATH: stopping a
recording failed with 'spawn ffmpeg ENOENT'. Absolute candidates now win;
bare 'ffmpeg' is the last resort.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVMQ2JhsJ77pGKqcvvFHqc
2026-09-08 17:34:51 +02:00
lucianoandClaude Fable 5 777f7ff09d v1.8.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 16:08:44 +02:00
lucianoandClaude Fable 5 e89213b8f9 Fix playlist freeze: self-healing drag guard + identity-based row actions
A lost dragend (dragged node removed from the DOM) left dragFrom/cueDragging
stuck, permanently deferring renderPlaylist: the list stopped redrawing and
row buttons acted on stale indexes (delete/play appeared dead). The guard now
unlocks itself when no .dragging element exists, and row actions resolve the
track index at click time by object identity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 14:52:14 +02:00
lucianoandClaude Fable 5 b04fe01a1a v1.7.1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 14:55:01 +02:00
lucianoandClaude Fable 5 3d91806581 v1.7.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 16:43:17 +02:00
lucianoandClaude Fable 5 7414dbe2ec Windows support: cross-built NSIS installer
- toFileURL and path-basename handling made Windows-safe (backslashes,
  drive letters) so media/model loading works there
- Blender discovery scans Program Files\Blender Foundation; ffmpeg
  candidates include common Windows paths
- build config: win/nsis target (x64, custom install dir), build/icon.ico
  generated from the 1024 png, dist:win script
Cross-compiled from macOS: dist/DJ Visualizer Setup 1.6.0.exe (95MB) with
scripts unpacked and models/MediaPipe bundled. Untested on real Windows.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 14:44:47 +02:00
lucianoandClaude Fable 5 7a8e71e170 v1.6.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 13:00:26 +02:00
lucianoandClaude Fable 5 d329759961 Load FBX characters directly: in-app conversion to GLB
The model button now accepts .fbx too: a new model:convert IPC runs
Blender with scripts/fbx2modelglb.py (mesh + skin kept, animations
dropped, embedded diffuse recovered even when the FBX references
missing external textures) into userData/models3d, then the resulting
GLB loads as usual. anim/model conversion share one convertFbx helper.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 11:31:26 +02:00
lucianoandClaude Fable 5 97376b22c9 Dance library: bundled clips bind to any rigged model + repertoire + manual BPM
- models/dance_library.glb: skeleton-only GLB with the 13 Mixamo dances,
  loaded at startup and bound BY BONE NAME to whatever rigged GLB the
  user loads — new models dance immediately, no baking needed.
- Repertoire UI (Media tab): checkbox chips of the available clips, the
  director only picks the ticked ones (none = all); persisted.
- 'Aggiungi animazioni': extra .glb clips load directly; .fbx are
  converted on the fly by Blender via a new anim:convert IPC and the
  bundled scripts/fbx2animglb.py (asarUnpacked for packaged builds).
- Manual BPM with TAP tempo: 0 = follow the detected beat, otherwise a
  pure metronome drives the dance clock.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 11:15:10 +02:00
lucianoandClaude Fable 5 722bce5036 Body tracking: head/hands/feet drive the interactive families
MediaPipe PoseLandmarker (BlazePose lite) integrated fully offline: the
WASM runtime and the bundled .task model are served to the renderer over
a new djvres:// protocol (fetch does not work on file://), with
'wasm-unsafe-eval' added to the output CSP. pose.js exposes PoseTracker;
interactive.js detects at ~30 Hz, maps landmarks into mirrored
cover-fitted screen space and smooths them with velocities.

Upgrades when a body is tracked (silent fallback to motion otherwise):
- all physical modes: moving head/hands/feet stamp precise motion blobs
- Sciame: the swarm follows your head
- Interattivo Modello: hand swipes spin the robot, it leans toward your
  head, raising a hand fast makes it jump
- Silhouette: neon skeleton (bones + joints + glowing head) over the
  electric outline

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:31:11 +02:00
lucianoandClaude Fable 5 b90066de6a v1.5.1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:04:34 +02:00
lucianoandClaude Fable 5 529cfcb9d8 v1.5.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 17:29:40 +02:00
lucianoandClaude Fable 5 f2121c0fc5 Bump Electron 31.7.7 -> 33.4.11: macOS XProtect kills Electron 31 as malware
XProtect (macOS 26) matches a malware rule on Electron 31.x ad-hoc binaries
(false positive: it also killed a checksum-verified official download) and
moves them to the Trash. Electron 33.4.11 is not matched and the app runs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 17:51:07 +02:00
luciano 7a79ade428 Bump to 1.4.1 2026-06-22 18:06:00 +02:00
luciano c98ebda03f Bump to 1.4.0 2026-06-22 16:45:53 +02:00
luciano a8973619e6 Bump to 1.3.0 2026-06-22 15:31:33 +02:00
lucianoandClaude Opus 4.8 96a8f3104c Bump to 1.2.0 for new release
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 01:57:47 +02:00
lucianoandClaude Opus 4.8 144aaaa233 Docs: comprehensive README of all features; bump to 1.1.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 17:03:43 +02:00
lucianoandClaude Opus 4.8 5c60a38ff1 Release packaging: unsigned mac DMG build + install/security-bypass docs
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 16:28:06 +02:00
lucianoandClaude Opus 4.8 47728d0d2a Effects engine, SVG/VU/silhouette categories, pad bank, MP4 recording, dual-window UI
- Parametric effect engine: 23 shader families × palettes × variants (~2300 presets)
  with a filterable library and an effect sequence (auto-cycle by time or beat).
- Effect categories: fractals/abstract, dancing silhouettes, SVG/Image source
  (loads any SVG/image as a recolourable audio-reactive effect; 50+ bundled CC0 SVGs),
  and VU-Meter (32-band spectrum bars, analogue needle, stereo LEDs).
- Dual-window architecture: control panel + fullscreen output on an external display
  (reliable via simple-fullscreen); tabbed control UI (Audio, Effetti, Pad, Immagini,
  Testo, Registra, Schermo).
- Audio: file playback + live input + output device selection, per-band visual EQ,
  audio playlist (reorder, hotkeys, per-track play/pause, repeat).
- Pad bank: 5×4 launchpad with persistent assignments; pressing a pad stops the current.
- Overlays: slideshow images (resizable), two freely positioned/resizable logos,
  scrolling ticker text.
- MP4 recording of the composited output (visual + overlays + audio) via MediaRecorder
  + ffmpeg, with selectable aspect ratios (16:9, 9:16, 1:1, 4:3, 3:4, 21:9).
- App icon (.icns) and dock icon; author Dj LuZa.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 15:25:39 +02:00
lucianoandClaude Opus 4.8 b32ea47ae5 Initial commit: DJ Visualizer
Electron app with audio-reactive fractal/abstract visuals on an external
display. Dual-window setup (control panel + fullscreen output), 8 WebGL
scenes, audio from file/live input/system audio, image and scrolling-text
overlays.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 12:44:17 +02:00