aboutsummaryrefslogtreecommitdiff
path: root/guile/starlet/midi-control/faders.scm
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.me.uk>2020-12-27 11:06:35 +0100
committerThomas White <taw@bitwiz.me.uk>2020-12-27 11:06:35 +0100
commita5b9740fdbde423d4830c8eb8cafa70011cfe948 (patch)
tree199887dc651aa8fff3770f3e7667ceb51772f3ba /guile/starlet/midi-control/faders.scm
parentd1d8f243d7fe8144b7d30a80e7db3fe4d9f06d3d (diff)
Add fader control
Diffstat (limited to 'guile/starlet/midi-control/faders.scm')
-rw-r--r--guile/starlet/midi-control/faders.scm25
1 files changed, 25 insertions, 0 deletions
diff --git a/guile/starlet/midi-control/faders.scm b/guile/starlet/midi-control/faders.scm
new file mode 100644
index 0000000..db1e986
--- /dev/null
+++ b/guile/starlet/midi-control/faders.scm
@@ -0,0 +1,25 @@
+(define-module (starlet midi-control faders)
+ #:use-module (starlet midi-control base)
+ #:use-module (starlet base)
+ #:export (on-fader))
+
+
+(define (on-fader channel cc-number state)
+ (let ((fader (make-midi-controller! #:channel channel
+ #:cc-number cc-number)))
+ (register-state!
+ (lighting-state
+ (state-for-each
+ (lambda (fix attr val)
+ (if (intensity? attr)
+
+ ;; Intensity parameters get scaled according to the fader
+ (at fix attr (lambda (time)
+ (* 0.01
+ val
+ (get-controller-value fader))))
+
+ ;; Non-intensity parameters just get set in our new state
+ (at fix attr val)))
+
+ state)))))