diff options
author | Thomas White <taw@bitwiz.me.uk> | 2021-01-02 18:33:15 +0100 |
---|---|---|
committer | Thomas White <taw@bitwiz.me.uk> | 2021-01-02 18:33:15 +0100 |
commit | e0d13cfbc4878e17e946f62b550abe27aaf01aa8 (patch) | |
tree | f7beab2e8e4a84f044f4c00b7d23cdfcb29803d6 /guile/starlet/midi-control/base.scm | |
parent | 43e21c32d57067bce99f1263f161ad6f1330730a (diff) |
Implement at-midi-fader
get-cc-value now returns #f if the position of the fader is unknown.
Some other changes were needed to accommodate that.
Diffstat (limited to 'guile/starlet/midi-control/base.scm')
-rw-r--r-- | guile/starlet/midi-control/base.scm | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/guile/starlet/midi-control/base.scm b/guile/starlet/midi-control/base.scm index fece2be..10bc286 100644 --- a/guile/starlet/midi-control/base.scm +++ b/guile/starlet/midi-control/base.scm @@ -6,7 +6,8 @@ #:use-module (srfi srfi-1) #:export (start-midi-control get-cc-value - scale-127-100 + ccval->percent + percent->ccval send-note-on send-note-off register-midi-note-callback! @@ -132,15 +133,13 @@ (define* (get-cc-value cc-number - #:key (channel #f) - (unknown-val 0)) + #:key (channel #f)) (let ((cc-arrays (atomic-box-ref cc-arrays))) (let ((ccs (assq-ref cc-arrays (if channel channel default-channel)))) (if ccs - (let ((val (vector-ref ccs cc-number))) - (if val val unknown-val)) - unknown-val)))) + (vector-ref ccs cc-number) + #f)))) (define (check-note-callbacks channel note-number) @@ -152,10 +151,14 @@ (atomic-box-ref callback-list)))) -(define (scale-127-100 n) +(define (ccval->percent n) (/ (* n 100) 127)) +(define (percent->ccval n) + (inexact->exact (round (/ (* n 127) 100)))) + + (define default-channel 0) (define* (start-midi-control device-name |