   [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]

        (swap! state-atom assoc-in [:step] index)

        (doseq [row (:rows state)]
          (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 %))
    (listen (select panel [:.mute])
            :selection #(swap! state-atom on-mute-toggle inst %))
    panel))

(defn step-sequencer
