aboutsummaryrefslogtreecommitdiff
path: root/guile/starlet/midi-control/faders.scm
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-04-03 19:14:37 +0200
committerThomas White <taw@physics.org>2021-04-03 19:14:37 +0200
commit2234e1ef68f02460a6e3a8e7409afbd1fd68c711 (patch)
tree1cf1bb9d0b37fd32fdd6c6494b2c394a34076e24 /guile/starlet/midi-control/faders.scm
parent3ab2b506f09c6771b14cd09cae869da7e699badd (diff)
New state-on-fader
Diffstat (limited to 'guile/starlet/midi-control/faders.scm')
-rw-r--r--guile/starlet/midi-control/faders.scm43
1 files changed, 20 insertions, 23 deletions
diff --git a/guile/starlet/midi-control/faders.scm b/guile/starlet/midi-control/faders.scm
index 07dfa46..99e2560 100644
--- a/guile/starlet/midi-control/faders.scm
+++ b/guile/starlet/midi-control/faders.scm
@@ -8,38 +8,35 @@
#:export (state-on-fader))
-(define (put-state-on-fader cc-number
- channel
- state)
+(define* (state-on-fader cc-number
+ state
+ #:key (channel #f))
(register-state!
(lighting-state
(state-for-each
(lambda (fix attr val)
- (if (intensity? attr)
+ (let ((cc-val (get-cc-value cc-number #:channel channel)))
+ (format #t "Have val ~a\n" cc-val)
- ;; Intensity parameters get scaled according to the fader
- (at fix attr (lambda (time)
- (let ((cc-val (get-cc-value cc-number
- #:channel channel)))
- (if cc-val
- (* 0.01 val (ccval->percent cc-val))
- 0))))
+ ;; Fader position known?
+ (if cc-val
- ;; Non-intensity parameters just get set in our new state
- (at fix attr val)))
+ (if (intensity? attr)
- state))))
+ ;; Intensity parameters get scaled according to the fader
+ (at fix attr (lambda (time)
+ (* 0.01 val (ccval->percent cc-val))))
+ ;; Non-intensity parameters just get set in our new state,
+ ;; but only if the fader is up!
+ (if (> cc-val 0)
+ (at fix attr val)
+ 'no-value))
-(define* (state-on-fader cc-number state
- #:key (channel #f))
- (register-midi-cc-callback!
- #:cc-number cc-number
- #:func (lambda (old-val new-val)
- (when (or (eqv? old-val 0)
- (and (not old-val)
- (< new-val 10)))
- (put-state-on-fader cc-number channel state)))))
+ ;; Fader position unknown
+ 'no-value)))
+
+ state))))
(define (current-values fixture-list attr-name)