aboutsummaryrefslogtreecommitdiff
path: root/guile/starlet/effects.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guile/starlet/effects.scm')
-rw-r--r--guile/starlet/effects.scm27
1 files changed, 26 insertions, 1 deletions
diff --git a/guile/starlet/effects.scm b/guile/starlet/effects.scm
index c14f5a0..0a23dee 100644
--- a/guile/starlet/effects.scm
+++ b/guile/starlet/effects.scm
@@ -20,8 +20,11 @@
;;
(define-module (starlet effects)
#:use-module (starlet clock)
+ #:use-module (starlet state)
+ #:use-module (starlet attributes)
#:export (flash
- sinewave))
+ sinewave
+ flash-chase))
(define pi (* 2 (acos 0)))
@@ -45,3 +48,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)))))