 
 (defmethod inst-fx! :mono
   [inst fx]
+  (ensure-node-active! inst)
   (let [fx-group (:fx-group inst)
         bus      (:bus inst)
         fx-id    (fx :tgt fx-group :pos :tail :bus bus)]

  {:kill* (fn [this] (group-deep-clear (:instance-group this)))}

  ISynthNodeStatus
  {:node-status            node-status*
   :node-block-until-ready node-block-until-ready*})

                             (vals (ns-publics 'overtone.instrument))))]
    (load-synthdef synth)))

(defn- inst-block-until-ready*
  [inst]
  (when *block-node-until-ready?*
    (doseq [sub-node [(:fx-group inst)
                      (:group inst)
                      (:instance-group inst)
                      (:mixer inst)]]
      (node-block-until-ready sub-node))))

(defn- inst-status*
  [inst]
  (let [sub-nodes [(:fx-group inst)
                   (:group inst)
                   (:instance-group inst)
                   (:mixer inst)]]
    (cond
     (some #(= :loading @(:status %)) sub-nodes) :loading
     (some #(= :destroyed @(:status %)) sub-nodes) :destroyed
     (some #(= :paused @(:status %)) sub-nodes) :paused
     (every? #(= :live @(:status %)) sub-nodes) :live
     :else (throw (Exception. "Unknown instrument sub-node state: "
                              (with-out-str (doseq [n sub-nodes] (pr n))))))))

(extend Inst
  ISynthNode
  {:node-free  node-free*
