           node (adshr attack decay sustain hold release)]
       (-> node (run-with context at duration)))))
 
-(defn percussive
+(defn ^:export percussive
   "A simple envelope."
   [attack decay]
   (envelope [attack 1.0] [decay 0.0]))

        (.start at)
        (.stop (+ at duration 1.0)))))) ; Give a bit extra for the release

(def sine (partial oscillator "sine"))
(def sawtooth (partial oscillator "sawtooth"))
(def square (partial oscillator "square"))
(def triangle (partial oscillator "triangle"))


; Filters

    upstream-synth
    downstream-synth))

(defn ^:export connect->
  "Connect synths in series."
  [& nodes]
  (reduce connect nodes))
