     `((synth "audition-synth" ~body))))
 
 (defn active-synths
-  "Return a seq of the actively running synth nodes.  If a synth or inst are passed as the filter it will only return nodes of that type.
-
-    (active-synths) ; => [{:type synth :name \"mixer\" :id 12}
-                          {:type synth :name \"my-synth\" :id 24}]
-    (active-synths my-synth) ; => [{:type synth :name \"my-synth\" :id 24}]
+  "Return a seq of the actively running synth nodes.  If a synth or
+  inst are passed as the filter it will only return nodes of that
+  type.
+
+  (active-synths) ;=> [{:type synth :name \"mixer\" :id 12} {:type
+                        synth :name \"my-synth\" :id 24}]
+  (active-synths my-synth) ;=>[{:type synth :name \"my-synth\" :id 24}]
   "
   [& [synth-filter]]
   (let [active-nodes (filter #(= overtone.sc.node.SynthNode (type %))

       note#)))

(defmacro demo
  "Listen to an anonymous synth definition for a fixed period of time.  Useful
  for experimentation.  If the root node is not an out ugen, then it will add
  one automatically.  You can specify a timeout in seconds as the first argument
  otherwise it defaults to *demo-time* ms.

  (demo (sin-osc 440))      ;=> plays a sine wave for *demo-time* ms
  (demo 0.5 (sin-osc 440))  ;=> plays a sine wave for half a second"

    [sname params param-proxies ugen-form]))

(defn gather-ugens-and-constants
  "Traverses a ugen tree and returns a vector of two sets [#{ugens}
  #{constants}]."
  [root]
  (if (seq? root)
    (reduce
