aboutsummaryrefslogtreecommitdiff
path: root/guile/starlet/midi-control/base.scm
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.me.uk>2021-01-02 18:33:15 +0100
committerThomas White <taw@bitwiz.me.uk>2021-01-02 18:33:15 +0100
commite0d13cfbc4878e17e946f62b550abe27aaf01aa8 (patch)
treef7beab2e8e4a84f044f4c00b7d23cdfcb29803d6 /guile/starlet/midi-control/base.scm
parent43e21c32d57067bce99f1263f161ad6f1330730a (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.scm17
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