From 797b616c66ab514880cf5a4fd8cb6837b43b52a1 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 30 Oct 2022 21:58:27 +0100 Subject: Add flash-chase --- guile/starlet/effects.scm | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/guile/starlet/effects.scm b/guile/starlet/effects.scm index c14f5a0..b6bfd2a 100644 --- a/guile/starlet/effects.scm +++ b/guile/starlet/effects.scm @@ -20,8 +20,10 @@ ;; (define-module (starlet effects) #:use-module (starlet clock) + #:use-module (starlet state) #:export (flash - sinewave)) + sinewave + flash-chase)) (define pi (* 2 (acos 0))) @@ -45,3 +47,25 @@ (+ range-min (* (/ (- range-max range-min) 2) (+ 1 (sin (* 2 pi hz (elapsed-time clock))))))))) + + +(define (hump t on-time) + (cond + ((< t 0.0) 0.0) + ((> t on-time) 0.0) + (else (* 100 (sin (* pi (/ t on-time))))))) + + +(define* (flash-chase group + #:key (repeat-time 2) (offset-time 0.3) (on-time 0.5)) + (let ((clock (make-clock))) + (for-each + (lambda (fix idx) + (at fix 'intensity + (lambda () + (hump (- (euclidean-remainder (elapsed-time clock) + repeat-time) + (* idx offset-time)) + on-time)))) + group + (iota (length group))))) -- cgit v1.2.3