       (overload-ugen-op to-ns ugen-name ugen-fn)
       (intern to-ns ugen-name ugen-fn))))
 
-; We define this uniquely because it has to be smart about its rate.
-; TODO: I think this should probably be handled by one of the ugen modes
-; that is currently not yet implemented...
+;; We define this uniquely because it has to be smart about its rate.
+;; TODO: I think this should probably be handled by one of the ugen modes
+;; that is currently not yet implemented...
 (def mul-add
   (make-expanding
-    (fn [in mul add]
-      (ugen {:name "MulAdd",
-                       :args [{:name "in"}
-                              {:name "mul", :default 1.0}
-                              {:name "add", :default 0.0}]
-                       :doc "Multiply and add, equivalent to (+ add (* mul in))"}
-            (op-rate in) 0 (list in mul add)))
-    [true true true]))
+   (fn [in mul add]
+     (ugen {:name "MulAdd",
+            :args [{:name "in"}
+                   {:name "mul", :default 1.0}
+                   {:name "add", :default 0.0}]
+            :doc "Multiply and add, equivalent to (+ add (* mul in))"}
+           (op-rate in) 0 (list in mul add)))
+   [true true true]))
 
 (load "ugen/generic_ops")
 

(def *constants* nil)

(defn ugen [spec rate special args]
  ;(check-ugen-args spec rate special args)
  (let [rate (or (get RATES rate) rate)
        ug (UGen.
             (next-id :ugen)
             (:name spec)
             rate
             (REVERSE-RATES rate)
             special
             args
             (or (:num-outs spec) 1))
        ug (if (contains? spec :init) ((:init spec) ug) ug)]
    (when (and *ugens* *constants*)
      (set! *ugens* (conj *ugens* ug))


(def UGEN-SPECS (load-ugen-specs UGEN-NAMESPACES))
(def UGEN-SPEC-MAP (zipmap
                    (map #(normalize-ugen-name (:name %)) UGEN-SPECS)
                    UGEN-SPECS))

(defn get-ugen [word]
  (get UGEN-SPEC-MAP (normalize-ugen-name word)))
