         (swap! state-atom assoc-in [:step] index)
 
         (doseq [row (:rows state)]
-          (at (metro beat) (play-step row index)))
+          (when-not (:mute row)
+            (at (metro beat) (play-step row index))))
 
         (apply-at (metro next-beat) #'step-player
                   [state-atom next-beat])))))

                                 [(inst-mute   inst) "growx"]
                                 [(inst-solo   inst) "growx"]])]
    (listen (select panel [:.param])
             :selection #(swap! state-atom on-param-selection inst %))
    panel))

(defn step-sequencer

  [state row col]
  (set-entry state row col false))

(defn- toggle-row-mute
  [state row]
  (update-in state [:rows row :mute] not))

(defn- get-row-param
  [state row]
  (get-in state [:rows row :param]))

(defn- set-row-param
  [state row val]
  (assoc-in state [:rows row :param] val))

(defn- get-param-info
  [state row]
