- Add stream_sexp_generic.py: fully generic sexp interpreter - Add streaming primitives for video sources and audio analysis - Add config system for external sources and audio files - Add templates for reusable scans and macros - Fix video/audio stream mapping in file output - Add dynamic source cycling based on sources array length - Remove old Python effect files (migrated to sexp) - Update sexp effects to use namespaced primitives Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
26 lines
852 B
Common Lisp
26 lines
852 B
Common Lisp
;; Crossfade with Zoom Transition
|
|
;;
|
|
;; Macro for transitioning between two frames with a zoom effect.
|
|
;; Active frame zooms out while next frame zooms in.
|
|
;;
|
|
;; Required context:
|
|
;; - zoom effect must be loaded
|
|
;; - blend effect must be loaded
|
|
;;
|
|
;; Parameters:
|
|
;; active-frame: current frame
|
|
;; next-frame: frame to transition to
|
|
;; fade-amt: transition progress (0 = all active, 1 = all next)
|
|
;;
|
|
;; Usage:
|
|
;; (include :path "../templates/crossfade-zoom.sexp")
|
|
;; ...
|
|
;; (crossfade-zoom active-frame next-frame 0.5)
|
|
|
|
(defmacro crossfade-zoom (active-frame next-frame fade-amt)
|
|
(let [active-zoom (+ 1.0 fade-amt)
|
|
active-zoomed (zoom active-frame :amount active-zoom)
|
|
next-zoom (+ 0.1 (* fade-amt 0.9))
|
|
next-zoomed (zoom next-frame :amount next-zoom)]
|
|
(blend active-zoomed next-zoomed :opacity fade-amt)))
|