diff options
author | Thomas White <taw@physics.org> | 2021-10-23 11:53:00 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2021-10-23 11:53:00 +0200 |
commit | fead43e69edb5ea62b72a8b97c99efbd10403e68 (patch) | |
tree | 2fca7e8fb3ff2f6832b72941282c6ed2ae7989ea | |
parent | 1392cdcbdd18f2bc7c137edcccc2c833c86b4e04 (diff) |
Handle controller=#f in 'set-midi-control-map!'
-rw-r--r-- | guile/starlet/midi-control/faders.scm | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/guile/starlet/midi-control/faders.scm b/guile/starlet/midi-control/faders.scm index 81764b5..e5f9cd4 100644 --- a/guile/starlet/midi-control/faders.scm +++ b/guile/starlet/midi-control/faders.scm @@ -327,34 +327,35 @@ (define (set-midi-control-map! controller new-control-map) - (let ((old-parameter-controller (get-parameter-controller controller))) - - ;; Remove the old parameter controller - (when old-parameter-controller - (scrub-parameter-controller! controller old-parameter-controller)) - - (set-parameter-controller! - controller - (make <parameter-controller> - #:callbacks '() - #:control-map new-control-map)) - - ;; If this is the first time, add the callbacks - (unless old-parameter-controller - - ;; Selection changed - (add-hook! - selection-hook - (lambda (fixture-list) - (update-midi-controls controller fixture-list))) - - ;; Value changed - (add-update-hook! programmer-state - (lambda (fix attr value source) - (unless (eq? source controller) - (update-midi-controls controller (get-selection)))))) - - ;; If there is a selection, run the callback now - (let ((current-selection (get-selection))) - (when current-selection - (update-midi-controls controller current-selection))))) + (when controller + (let ((old-parameter-controller (get-parameter-controller controller))) + + ;; Remove the old parameter controller + (when old-parameter-controller + (scrub-parameter-controller! controller old-parameter-controller)) + + (set-parameter-controller! + controller + (make <parameter-controller> + #:callbacks '() + #:control-map new-control-map)) + + ;; If this is the first time, add the callbacks + (unless old-parameter-controller + + ;; Selection changed + (add-hook! + selection-hook + (lambda (fixture-list) + (update-midi-controls controller fixture-list))) + + ;; Value changed + (add-update-hook! programmer-state + (lambda (fix attr value source) + (unless (eq? source controller) + (update-midi-controls controller (get-selection)))))) + + ;; If there is a selection, run the callback now + (let ((current-selection (get-selection))) + (when current-selection + (update-midi-controls controller current-selection)))))) |