diff options
author | Thomas White <taw@physics.org> | 2021-03-02 18:37:51 +0100 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2021-03-02 18:37:51 +0100 |
commit | 13271c68268003809fbd2fd2427de7072d3afdf0 (patch) | |
tree | c4f5fe18b7a0cba77ac8f328ab5ff5fce9fa9d6d /guile/starlet | |
parent | 9e15a6a8242022fa6fe5c81d3de8cbbd77b023c4 (diff) |
Refuse to start MIDI control twice
Diffstat (limited to 'guile/starlet')
-rw-r--r-- | guile/starlet/midi-control/base.scm | 32 |
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)))) |