   (foo :position :head :target 2 440 0.3)
 
   These can also be abbreviated:
-  (foo :tgt 2 :pos :head)
-
-  "
+  (foo :tgt 2 :pos :head)"
   [s-name & s-form]
   {:arglists '([name doc-string? params ugen-form])}
   (let [[s-name params ugen-form] (synth-form s-name s-form)]


(defmacro defsynth
  "Define a synthesizer and return a player function. The synth
  definition will be loaded immediately, and a :new-synth event will
  be emitted. Expects a name, an optional doc-string, a vector of
  synth params, and a ugen-form as it's arguments.

  (defsynth foo [freq 440]
    (out 0 (sin-osc freq)))

    `((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}]
