aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2022-06-26 21:35:06 +0200
committerThomas White <taw@physics.org>2022-06-26 21:37:17 +0200
commit9f80dbf5c3b8ad17ea2d563e729af1171a3c6d86 (patch)
tree0646e592a6ce0be1067b2a9b24d1d662a8cd84e8
parent31436be9c2e4fa72d95eacf9c196abc0f9544b31 (diff)
Implement missing strobe channels (including in documentation)
-rw-r--r--docs/new-fixture.rst18
-rw-r--r--guile/starlet/fixture-library/stairville/octagon-theater-cw-ww.scm14
-rw-r--r--guile/starlet/fixture-library/stairville/z120m.scm11
3 files changed, 35 insertions, 8 deletions
diff --git a/docs/new-fixture.rst b/docs/new-fixture.rst
index 084917e..2c0771d 100644
--- a/docs/new-fixture.rst
+++ b/docs/new-fixture.rst
@@ -126,7 +126,8 @@ We will totally ignore the pre-programmed colour temperatures in favour of
having direct control over the cold and warm LED values. The manual does not
even say what the pre-programmed temperatures are, so this is no loss at all.
-The strobe channel is not implemented in this example.
+Unfortunately, the manual doesn't say what frequencies are meant be 'slow' and
+'fast' strobe. We'll assume that 'slow' is 1 Hz, and 'fast' is 25 Hz.
Here is the code::
@@ -146,13 +147,22 @@ Here is the code::
;; List of attributes
(fixture-attributes
(attr-continuous 'intensity '(0 100) 0)
- (attr-continuous 'colour-temperature '(2800 6400) 3200))
+ (attr-continuous 'colour-temperature '(2800 6400) 3200)
+ (attr-list 'strobe '(#f #t) #f)
+ (attr-continuous 'strobe-frequency '(1 25) 1))
;; Scanout code follows
- ;; Set unused macro and strobe channels to zero
+ ;; Set unused macro channel to zero
(set-chan8 4 0)
- (set-chan8 3 0)
+
+ ;; Set strobe channel
+ (if (get-attr 'strobe)
+ (set-chan8 3 (scale-and-clamp-to-range
+ (get-attr 'strobe-frequency)
+ '(1 25)
+ '(16 255)))
+ (set-chan8 3 0))
;; Set intensity channel
(set-chan8 5 (percent->dmxval8 (get-attr 'intensity))))
diff --git a/guile/starlet/fixture-library/stairville/octagon-theater-cw-ww.scm b/guile/starlet/fixture-library/stairville/octagon-theater-cw-ww.scm
index b42de26..cbabe1e 100644
--- a/guile/starlet/fixture-library/stairville/octagon-theater-cw-ww.scm
+++ b/guile/starlet/fixture-library/stairville/octagon-theater-cw-ww.scm
@@ -30,11 +30,21 @@
(fixture-attributes
(attr-continuous 'intensity '(0 100) 0)
- (attr-continuous 'colour-temperature '(2800 6400) 3200))
+ (attr-continuous 'colour-temperature '(2800 6400) 3200)
+ (attr-list 'strobe '(#f #t) #f)
+ ;; FIXME: Strobe frequency is not stated in manual.
+ ;; I've assumed that "slow" means 1 Hz, "fast" 25 Hz
+ (attr-continuous 'strobe-frequency '(1 25) 1))
(let ((coltemp (get-attr 'colour-temperature)))
(set-chan8 1 (scale-and-clamp-to-range coltemp '(2800 6400) '(0 255)))
(set-chan8 2 (scale-and-clamp-to-range coltemp '(2800 6400) '(255 0))))
- (set-chan8 3 0) ;; Strobe
+ (if (get-attr 'strobe)
+ (set-chan8 3 (scale-and-clamp-to-range
+ (get-attr 'strobe-frequency)
+ '(1 25)
+ '(16 255)))
+ (set-chan8 3 0))
+ (set-chan8 3 0) ;; Strobe
(set-chan8 4 0) ;; Mode (0-15 = direct control)
(set-chan8 5 (percent->dmxval8 (get-attr 'intensity))))
diff --git a/guile/starlet/fixture-library/stairville/z120m.scm b/guile/starlet/fixture-library/stairville/z120m.scm
index 73037ac..60e34b3 100644
--- a/guile/starlet/fixture-library/stairville/z120m.scm
+++ b/guile/starlet/fixture-library/stairville/z120m.scm
@@ -31,12 +31,19 @@
(fixture-attributes
(attr-continuous 'intensity '(0 100) 0)
- (attr-colour 'colour white))
+ (attr-colour 'colour white)
+ (attr-continuous 'strobe-frequency '(1 25) 1)
+ (attr-list 'strobe '(#f #t) #f))
(let ((intensity (get-attr 'intensity))
(rgbw (colour-as-rgbw (get-attr 'colour))))
(set-chan8 1 (percent->dmxval8 intensity))
- (set-chan8 2 255)
+ (if (get-attr 'strobe)
+ (set-chan8 2 (scale-and-clamp-to-range
+ (get-attr 'strobe-frequency)
+ '(1 25)
+ '(106 165)))
+ (set-chan8 2 255))
(set-chan8 3 (percent->dmxval8 (car rgbw)))
(set-chan8 4 (percent->dmxval8 (cadr rgbw)))
(set-chan8 5 (percent->dmxval8 (caddr rgbw)))