                  (fun rate num-outs args ugen spec))]
 
     (if (string? result)
-      (throw (Exception. (str "Error in checker for ugen " (overtone-ugen-name (:name spec)) ":\n" result "\nUgen:\n" (with-out-str (pprint ugen)))))
+      (throw (Exception. (str "Error in checker for ugen " (overtone-ugen-name (:name spec)) ":\n" result "\nSupplied args: " (with-out-str (pr (:orig-args ugen))) "\nExpected arg keys: " (with-out-str (pr (spec-arg-names spec)))  "\nInterpreted args: " (with-out-str (pr (:arg-map ugen))) "\n\nUgen:\n"(with-out-str (pprint ugen)))))
       ugen)))
 
 (defn- check-arg-rates [spec ugen]

    extras.membrane
    ])

(defn- specs-from-namespaces
  "Gathers all ugen spec metadata (stored in the vars spec and specs-collide)
  from the specified namespaces into a single vector of maps.

      :n-outputs n-outs
      :args args)))

(defn add-default-args [spec ugen]
  (let [args        (:args ugen)
        arg-names   (spec-arg-names spec)
