 
       ;; If the show has stopped without us noticing, enter stop mode
       (with-show (:show controller)
-        (when-not (or (show/running?) @(:stop-mode controller))
+        (when-not (or (show/running?) (in-mode? controller :stop))
           (enter-stop-mode controller :already-stopped true)))
 
       ;; Reflect the shift button state
       (swap! (:next-text-buttons controller)
              assoc (:shift control-buttons)
              (button-state (:shift control-buttons)
-                           (if @(:shift-mode controller) :bright :dim)))
+                           (if (in-mode? controller :shift) :bright :dim)))
 
       ;; Reflect the record button state
       (swap! (:next-text-buttons controller)
              assoc (:record control-buttons)
              (button-state (:record control-buttons)
-                           (if @(:record-mode controller) :bright :dim)))
+                           (if (in-mode? controller :record) :bright :dim)))
 
       (render-cue-grid controller snapshot)
       (update-scroll-arrows controller)

  [controller message]
  (let [delta (sign-velocity (:velocity message))
        metronome (:metronome (:show controller))
        units (if @(:shift-mode controller)
                ;; User is adjusting the current bar
                (rhythm/metro-tock metronome)
                ;; User is adjusting the current beat


    (20 22 24 26) ; Effect end/save pads
    (when (pos? (:velocity message))
      (if (in-mode? controller :record)
        (handle-save-effect controller (:note message))
        (handle-end-effect controller (:note message))))

