   (add-overlay controller
                (reify IOverlay
                  (captured-controls [this] #{14})
-                 (captured-notes [this] #{10})
+                 (captured-notes [this] #{10 0})
                  (adjust-interface [this controller]
-                   ;; Add the arrow showing the beat is being adjusted
-                   (let [marker (rhythm/metro-marker (:metronome (:show controller)))
-                         arrow-pos (if @(:shift-mode controller)
-                                     (dec (.indexOf marker "." (inc (.indexOf marker "."))))
-                                     (dec (count marker)))]
-                     (aset (get (:next-display controller) 2) arrow-pos (:up-arrow special-symbols))))
+                   (beat-adjusting-interface controller))
                  (handle-control-change [this controller message]
-                   ;; Adjust the current beat based on how the encoder was twisted
-                   (let [delta (sign-velocity (:velocity message))
-                         snapshot (rhythm/metro-snapshot (:metronome (:show controller)))]
-                     (if @(:shift-mode controller)
-                       ;; User is adjusting the current bar
-                       (rhythm/metro-bar-start (:metronome (:show controller)) (+ (:bar snapshot) delta))
-                       ;; User is adjusting the current beat; keep the phase unchanged
-                       (do
-                         (rhythm/metro-start (:metronome (:show controller)) (+ (:beat snapshot) delta))
-                         (rhythm/metro-beat-phase (:metronome (:show controller) (:beat-phase snapshot)))))))
+                   (adjust-beat-from-encoder controller message))
                  (handle-note-on [this controller message]
-                   false)
+                   ;; Suppress the extra encoder above the beat display.
+                   ;; We can't get a note on for the beat encoder, because
+                   ;; that was the event that created this overlay.
+                   true)
                  (handle-note-off [this controller message]
-                   ;; Exit the overlay
-                   (swap! (:metronome-mode controller) dissoc :adjusting-beat)
-                   :done))))
+                   (when (= (:note message) 10)
+                     ;; They released us, exit the overlay
+                     (swap! (:metronome-mode controller) dissoc :adjusting-beat)
+                     :done)))))
 
 (defn- control-change-received
   "Process a control change message which was not handled by an

(defonce ^{:doc "Controllers which are currently bound to shows,
  indexed by the controller binding ID."}
  active-bindings (atom {}))

(defn sign-velocity
  "Convert a midi velocity to its signed equivalent, to translate
  encoder rotations, which are twos-complement seven bit numbers."
  [val]
   (if (>= val 64)
     (- val 128)
     val))

(defn- overlay-handled?
  "See if there is an interface overlay active which wants to consume

  (add-overlay controller
               (reify IOverlay
                 (captured-controls [this] #{15})
                 (captured-notes [this] #{9 1})
                 (adjust-interface [this controller]
                   (bpm-adjusting-interface controller))
                 (handle-control-change [this controller message]
                   (adjust-bpm-from-encoder controller message))
                 (handle-note-on [this controller message]
                   ;; Suppress the extra encoder above the BPM display.
                   ;; We can't get a note on for the BPM encoder, because
                   ;; that was the event that created this overlay.
                   true)
                 (handle-note-off [this controller message]
                   (when (= (:note message) 9)
                     ;; They released us, end the overlay
                     (swap! (:metronome-mode controller) dissoc :adjusting-bpm)
                     :done)))))

(defn- beat-encoder-touched
  "Add a user interface overlay to give feedback when turning the beat
