        (def-binary-op to-ns op-name special))))
 
 (defmacro with-overloaded-ugens
+  "Bind symbols for all overloaded ugens (i.e. + - / etc.) to the overloaded fn
+  in the ns overtone.sc.ugen-colliders. These fns will revert back to original
+  (Clojure) semantics if not passed with ugen args."
   [& body]
   (let [bindings (flatten (map (fn [[orig overload]]
                                  [orig (symbol ugen-collide-ns-str (str overload))])

(def ugen-collide-ns-str "overtone.sc.ugen-collide")
(defonce ugen-collide-ns (create-ns (symbol ugen-collide-ns-str)))
(defonce overloaded-ugens* (atom {}))


(defn- op-rate
  "Lookup the rate of an input ugen, otherwise use IR because the operand

                      (:fn-names spec))]
    (doseq [[ugen-name ugen-fn] ugen-fns]
      (intern to-ns ugen-name ugen-fn))))

(defn- def-unary-op
  "def a unary op ugen (this is handled separately due to the fact that the
