aboutsummaryrefslogtreecommitdiff
path: root/guile/starlet/midi-control/base.scm
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-03-02 18:37:51 +0100
committerThomas White <taw@physics.org>2021-03-02 18:37:51 +0100
commit13271c68268003809fbd2fd2427de7072d3afdf0 (patch)
treec4f5fe18b7a0cba77ac8f328ab5ff5fce9fa9d6d /guile/starlet/midi-control/base.scm
parent9e15a6a8242022fa6fe5c81d3de8cbbd77b023c4 (diff)
Refuse to start MIDI control twice
Diffstat (limited to 'guile/starlet/midi-control/base.scm')
-rw-r--r--guile/starlet/midi-control/base.scm32
1 files changed, 21 insertions, 11 deletions
diff --git a/guile/starlet/midi-control/base.scm b/guile/starlet/midi-control/base.scm
index 64fcae7..bcbb741 100644
--- a/guile/starlet/midi-control/base.scm
+++ b/guile/starlet/midi-control/base.scm
@@ -222,28 +222,38 @@
(all-notes-off! default-channel)))
+(define midi-running #f)
+
(define (start-dummy-midi)
(display "Using dummy MIDI control\n")
(begin-thread
(let again ()
(let ((bytes-to-send (atomic-box-swap! send-queue '())))
(usleep 1000)
- (again)))))
+ (again))))
+ (set! midi-running #t))
(define* (start-midi-control device-name
#:key (channel #f))
- (when channel
- (set! default-channel channel))
- (with-exception-handler
+ (if midi-running
+
+ (format #t "MIDI already running\n")
+
+ (begin
+ (when channel
+ (set! default-channel channel))
+
+ (with-exception-handler
- (lambda (exn)
- (format #t "Couldn't start MIDI ~a\n"
- (exception-irritants exn))
- (start-dummy-midi))
+ (lambda (exn)
+ (format #t "Couldn't start MIDI ~a\n"
+ (exception-irritants exn))
+ (start-dummy-midi))
- (lambda ()
- (start-midi-control-real device-name channel))
+ (lambda ()
+ (start-midi-control-real device-name channel)
+ (set! midi-running #t))
- #:unwind? #t))
+ #:unwind? #t))))