   (let [node-id (to-synth-id node)]
     (if (node-active? node)
       (apply snd "/n_set" node-id (floatify (stringify (bus->id name-values))))
-      (let [err-msg (str "Trying to control a synth node that has been destroyed: " node)]
-        (if *non-active-node-modification-exceptions*
-          (throw (Exception. err-msg))
-          (println "Warning - " err-msg))))
+      (inactive-node-modification-error
+       (str "Trying to control a synth node that has been destroyed: " node)))
     node))
 
 (defn node-get-control

  {:pre [(server-connected?)]}
  (if (node-active? node)
    (snd "/n_free" (to-synth-id node))
    (let [err-msg (str "Trying to free a synth node that has been destroyed: " node)]
      (if *non-active-node-modification-exceptions*
        (throw (Exception. err-msg))
        (println (str "Warning - " err-msg)))))
  node)

(defn- node-destroyed

            [overtone.config.log :as log]))

(defonce ^{:dynamic true} *non-active-node-modification-exceptions* true)

(defn inactive-node-modification-error [err-msg]
  (condp = *non-active-node-modification-exceptions*
    :silent nil ;;do nothing
    false   (println "Warning - " err-msg)
    (throw (Exception. err-msg))))

(defonce ^{:private true}
  _PROTOCOLS_
