                  (button-state button state color-key))]
      (midi/midi-control (:port-out controller) (:control button) state))))
 
-(defn track-select-state
+(defn top-pad-state
   "Calculate the numeric value that corresponds to a particular
   named state for the specified top-row pad, and (if supplied),
   named color."
-  ([x state]
-   (track-select-state x state :amber))
-  ([x state color-key]
-   {:pre [(<= 0 x 7)]}
+  ([state]
+   (top-pad-state state :amber))
+  ([state color-key]
    (let [base-value ((keyword state) monochrome-button-states)
          color-shift (or (when-not (= state :off)
                            ((keyword color-key) color-button-colors))
                          0)]
      (+ base-value color-shift))))
 
-(defn set-track-select-state
+(defn set-top-pad-state
   "Set one of the top-row pads to a particular state and color.
   If state is already a number, it is used as-is, otherwise it is
-  calculated using track-select-state."
+  calculated using top-pad-state."
   ([controller x state]
-   (set-track-select-state controller x state :amber))
+   (set-top-pad-state controller x state :amber))
   ([controller x state color-key]
    {:pre [(<= 0 x 7)]}
    (let [state (if (number? state)
                  state
-                 (track-select-state x state color-key))]
+                 (top-pad-state state color-key))]
      (midi/midi-control (:port-out controller) (+ x 20) state))))
 
-(defn set-scene-launch-color
-  "Set the color of one of the 8 scene-launch touch pads (right above
+(defn set-second-pad-color
+  "Set the color of one of the 8 second-row touch pads (right above
   the 8x8 pad of larger, velocity sensitive, pads) to the closest
   approximation available for a desired color."
   [controller x color]

         :next-display (vec (for [_ (range 4)] (byte-array (take 68 (repeat 32)))))
         :last-text-buttons (atom {})
         :next-text-buttons (atom {})
         :metronome-mode (atom {:showing true})
         :shift-mode (atom false)
         :midi-handler (atom nil)
         :tap-tempo-handler (amidi/create-tempo-tap-handler (:metronome show))
         }]
    (reset! (:midi-handler controller) (partial midi-received controller))
    (clear-interface controller)
    (welcome-animation controller)

  [controller message]
  (when (= (:device message) (:port-in controller))
    ;(info message)
    (when-not (overlay-handled? controller message)
      (when (= (:status message) :control-change)
        (control-change-received controller message))
      (when (= (:command message) :note-on)
        (note-on-received controller message))
      (when (= (:command message) :note-off)
        (note-off-received controller message)))))

(defn bind-to-show
  "Establish a connection to the Ableton Push, for managing the given
