aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2020-11-18 18:08:49 +0100
committerThomas White <taw@physics.org>2020-11-18 22:26:05 +0100
commit5ba45bfb6da6aa7f8d409172c3166c92f5f2cccd (patch)
tree5697a56d81ef511f92745e552a9192aec7a45654
parente6449987b4969a1f2abdfd9d227d4c9951d3bc9c (diff)
Improve syntax for cue parts
-rw-r--r--README.md17
-rw-r--r--examples/demo.scm2
-rw-r--r--guile/starlet/playback.scm23
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