 (load "ugen/generic_ops")
 
 (defn intern-ugens
-  "Iterate over all UGen meta-data, generate the corresponding functions and intern them
-  in the current or otherwise specified namespace."
+  "Iterate over all UGen meta-data, generate the corresponding functions and
+  intern them in the current or otherwise specified namespace."
   [& [to-ns]]
   (let [to-ns (or to-ns *ns*)]
     (doseq [ugen (filter #(not (or (= "UnaryOpUGen" (:name %))

  (.replaceAll (.toLowerCase (str n)) "[-|_]" ""))

(defn overtone-ugen-name
  "A basic camelCase to with-dash name converter tuned to convert SuperCollider names to Overtone names.
  Most likely needs improvement."
  [n]
  (let [n (.replaceAll n "([a-z])([A-Z])" "$1-$2")
        n (.replaceAll n "([A-Z])([A-Z][a-z])" "$1-$2")

(defrecord ControlProxy [name value rate])
(derive ControlProxy ::ugen)

(defn control-proxy
  [name value]
  (ControlProxy. name value (:kr RATES)))

