         (.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"))
+(def ^:export sine (partial oscillator "sine"))
+(def ^:export sawtooth (partial oscillator "sawtooth"))
+(def ^:export square (partial oscillator "square"))
+(def ^:export triangle (partial oscillator "triangle"))
 
 
 ; Filters

      (doto (.createStereoPanner context)
        (-> .-pan (plug pan context at duration))))))

(defn delay-line
  "Delay the signal."
  [seconds]
  (fn [context at duration]

         (-> .-Q (plug q context at duration))
         (-> .-type (set! type)))))))

(def ^:export low-pass (partial biquad-filter "lowpass"))
(def ^:export high-pass (partial biquad-filter "highpass"))


; Effects

(defn ^:export stereo-panner
  "Pan the signal left (-1) or right (1)."
  [pan]
  (fn [context at duration]
