- New streaming/ module for real-time video processing: - compositor.py: Main streaming compositor with cycle-crossfade - sexp_executor.py: Executes compiled sexp recipes in real-time - sexp_interp.py: Full S-expression interpreter for SLICE_ON Lambda - recipe_adapter.py: Bridges recipes to streaming compositor - sources.py: Video source with ffmpeg streaming - audio.py: Real-time audio analysis (energy, beats) - output.py: Preview (mpv) and file output with audio muxing - New templates/: - cycle-crossfade.sexp: Smooth zoom-based video cycling - process-pair.sexp: Dual-clip processing with effects - Key features: - Videos cycle in input-videos order (not definition order) - Cumulative whole-spin rotation - Zero-weight sources skip processing - Live audio-reactive effects - New effects: blend_multi for weighted layer compositing - Updated primitives and interpreter for streaming compatibility Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
20 lines
735 B
Common Lisp
20 lines
735 B
Common Lisp
;; Ripple effect - radial wave distortion from center
|
|
(require-primitives "geometry" "image" "math")
|
|
|
|
(define-effect ripple
|
|
:params (
|
|
(frequency :type int :default 5 :range [1 20])
|
|
(amplitude :type int :default 10 :range [0 50])
|
|
(center_x :type float :default 0.5 :range [0 1])
|
|
(center_y :type float :default 0.5 :range [0 1])
|
|
(decay :type int :default 1 :range [0 5])
|
|
(speed :type int :default 1 :range [0 10])
|
|
)
|
|
(let* ((w (width frame))
|
|
(h (height frame))
|
|
(cx (* w center_x))
|
|
(cy (* h center_y))
|
|
(phase (* (or _time 0) speed 2 pi))
|
|
(coords (ripple-displace w h frequency amplitude cx cy decay phase)))
|
|
(remap frame (coords-x coords) (coords-y coords))))
|