diff options
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 |