aboutsummaryrefslogtreecommitdiff
path: root/guile/starlet/midi-control/faders.scm
blob: db1e9860c7ba4d23a5987cad6c10e2a494a9bd69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)))))