       (doto (.createConvolver context)
         (-> .-buffer (set! (buffer generate-bit! context (+ duration 1.0))))))))
 
-(def reverb
+(def ^:export reverb
   "Crude reverb."
   (let [duration 5
         decay 3

  [attack decay sustain hold release]
  (envelope [attack 1.0] [decay sustain] [hold sustain] [release 0]))

(defn adsr
  "A four-stage envelope."
  [attack decay sustain release]
  (fn [context at duration]

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

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