Three modes for where the director draws presets from: 'smart' keeps the
curated per-mood pools, 'all' removes the family restriction, 'custom'
limits picks to a user checklist (mood still shapes the speed variant,
with a fallback when the checklist exhausts it). Config persists in
localStorage and is re-pushed live while the director runs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The audio engine now tracks musical features: fast/slow energy EMAs, BPM
(median of beat intervals), a quiet/groove/peak mood with hysteresis, and
drop detection (fast energy diverging from slow right after a lull). An
output-side director, toggled from the control UI, switches presets every
16 beats (or ~14s without beats) and immediately on a drop, drawing from
mood-matched family pools (scenic for quiet, fluid/geometry for groove,
fractals/tunnels/fire for peak) while avoiding recent repeats. A manual
effect pick takes over and turns the director off.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Per-track start/end points (mm:ss inputs, 'set to current' buttons, draggable
handles on the waveform). Trim applied via audio.setTrim (seek to start, stop
at end) and pushed live to the playing track.
- Wider cards showing elapsed / total / remaining for the trimmed range.
- Waveform rendered per track: peaks computed in main via ffmpeg (mono 8kHz PCM
-> 400 normalized buckets, cached), drawn on a canvas with trim region +
playhead. New audio:peaks IPC + djv.peaks preload binding.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add interlude playlist entries with no audio that run their own scene for a set
duration, then auto-advance. Shares a unified timed-segment runner with the
inter-track gap (pause/resume via the Play button). New 'playSilence' output
message + audio.silence() to stop audio while keeping meters/recording alive.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- When a playlist video has an active scene effect, auto-apply 'screen' blend so
the effect shows through (only if the user left blend at default 'normal';
manual choices are respected). Restores on effect-off / next track.
- Per-track 'Pausa dopo' (seconds): after a track ends, keep its scene timeline
running for N seconds as an intermission (scene elements placed past the song
length appear during the pause), then advance. Countdown + badge in the row.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Each scene element (effect, text, image) now has its own appearance time and
optional duration, with all styling options inline (no more capture-from-panel).
Live preview applies edits immediately on the playing track. Moved the playlist
and its video-render controls into a new Playlist tab.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Audio and video files can both be added to the playlist; video tracks play
full-screen with their audio routed through the analyser (visuals/waveform
react), have duration/progress, and are included in recordings. Persisted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Loads a muted looping video as a layer above the WebGL canvas with opacity,
blend mode and fit controls; included in MP4 recordings and droppable.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Each playlist track holds a timeline of cues (@time → effect/text/image);
cues fire automatically as the track plays, driven by progress reports.
- Playlist (tracks, hotkeys, cues) is saved to userData and restored on startup,
like the pad bank.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Each playlist track gets an optional scene (🎬) bound to it: pick the current
effect, a ticker text and an overlay image. When the track plays, the scene is
applied automatically — a cue/queue per song. Scene image is a dedicated output
layer (also captured in recordings).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Scrolling text: font, size, weight, colour and movement effects (up/down, wave,
zoom, flash, rotate) rendered per-letter (and captured in recordings).
- Larger multiline text input.
- Pad bank: crossfade between pads (per-source gain ramps in the audio engine).
- Duration + remaining-time and progress bars for the playlist and the active pad,
via metadata probing and live progress reports from the output window.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>