         delta (* (sign-velocity (:velocity message)) resolution)]
     (set-cue-variable-value controller cue v (max low (min high (+ value delta))))))
 
+(defn- same-effect-active
+  "See if the specified effect is still active with the same id."
+  [controller cue id]
+  (with-show (:show controller)
+    (let [effect-found (show/find-effect (:key cue))]
+      (and effect-found (= (:id effect-found) id)))))
+
 (defn- display-encoder-touched
   "One of the eight encoders above the text display was touched."
   [controller note]

                           (captured-controls [this] #{(control-for-top-encoder-note note)})
                           (captured-notes [this] #{note})
                           (adjust-interface [this controller]
                             (draw-variable-gauge controller x 8 (* 9 var-index)
                                                  cue (get (:variables cue) var-index))
                             true)
                           (handle-control-change [this controller message]
                             (adjust-variable-value controller message cue (get (:variables cue) var-index)))
                           (handle-note-on [this controller message]

        fx-info @(:active-effects (:show controller))
        fx (:effects fx-info)
        fx-meta (:meta fx-info)
        offset (if (<= (count fx) room) (- 4 room) 0)
        x (quot note 2)
        index (- x offset)
        var-index (rem note 2)]
