diff options
-rw-r--r-- | README.md | 17 | ||||
-rw-r--r-- | examples/demo.scm | 2 | ||||
-rw-r--r-- | guile/starlet/playback.scm | 23 |
3 files changed, 35 insertions, 7 deletions
@@ -63,6 +63,23 @@ You can use pre-prepared states in cues, even if some minor modifications are ne #:fade-down 3) ``` +Mult-part cues are supported. Simply specify the fade parameters and which fixtures should be in the part: + +``` +(cue 64 + (cue-state (apply-state indoor-act1-general) + #:fade-up 3 + #:fade-down 3 + + (cue-part (dim3 + dim4 + dim8 + (list moving-light 'pan 'tilt)) + #:down-time 2 + #:down-delay 1)) +``` + + Everything from a simple dimmers to wacky multi-parameter fixtures are supported. New fixture classes can be defined using some simple Scheme code. Patching fixtures looks like this: ``` diff --git a/examples/demo.scm b/examples/demo.scm index f67085f..2a91838 100644 --- a/examples/demo.scm +++ b/examples/demo.scm @@ -102,7 +102,7 @@ #:up-time 0 #:down-time 2 - (cue-part (list dim3) + (cue-part (list (cons dim3 'intensity)) #:down-time 2 #:down-delay 1)))) diff --git a/guile/starlet/playback.scm b/guile/starlet/playback.scm index 1f2fde1..efbd1d6 100644 --- a/guile/starlet/playback.scm +++ b/guile/starlet/playback.scm @@ -330,6 +330,11 @@ (and (eq? (car attr-el) fix) (eq? (cdr attr-el) (get-attr-name attr)))) + ((list? attr-el) + (and (memq fix attr-el) + (or (memq attr attr-el) + (memq (get-attr-name attr) attr-el)))) + (else #f))) @@ -385,13 +390,19 @@ body ...)))) -(define* (cue-part attr-list - #:key - (up-time 5) - (down-time 5) - (up-delay 0) - (down-delay 0)) +(define-syntax cue-part + (syntax-rules () + ((_ (fixtures ...) params ...) + (make-cue-part-obj (list fixtures ...) + params ...)))) + +(define* (make-cue-part-obj attr-list + #:key + (up-time 5) + (down-time 5) + (up-delay 0) + (down-delay 0)) (make-cue-part attr-list (make-fade-times up-time |