From 5ba45bfb6da6aa7f8d409172c3166c92f5f2cccd Mon Sep 17 00:00:00 2001 From: Thomas White Date: Wed, 18 Nov 2020 18:08:49 +0100 Subject: Improve syntax for cue parts --- README.md | 17 +++++++++++++++++ examples/demo.scm | 2 +- guile/starlet/playback.scm | 23 +++++++++++++++++------ 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0b608fd..bbda397 100644 --- a/README.md +++ b/README.md @@ -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 -- cgit v1.2.3