diff options
Diffstat (limited to 'guile/starlet/effects.scm')
-rw-r--r-- | guile/starlet/effects.scm | 27 |
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))))) |