;; Wave effect - sine wave displacement distortion (define-effect wave :params ( (amplitude :type int :default 10 :range [0 100]) (wavelength :type int :default 50 :range [10 500]) (speed :type int :default 1 :range [0 10]) (direction :type string :default "horizontal") ) (let* ((w (width frame)) (h (height frame)) ;; Use _time for animation phase (phase (* (or _time 0) speed 2 pi)) ;; Calculate frequency: waves per dimension (freq (/ (if (= direction "vertical") w h) wavelength)) (axis (cond ((= direction "horizontal") "x") ((= direction "vertical") "y") (else "both"))) (coords (wave-displace w h axis freq amplitude phase))) (remap frame (coords-x coords) (coords-y coords))))