 ; Oscillators
 
 (defn oscillator
+  "A periodic wave."
   [type freq]
   (fn [context at duration]
     (source

        corners)
      (subgraph audio-node))))

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

(defn adsr [attack decay sustain release]
  (fn [context at duration]
    (let [remainder (- duration attack decay sustain)
          hold (max 0.0 remainder)
          node (adshr attack decay sustain hold release)]
      (-> node (run-with context at duration)))))

(defn percussive [attack decay]
  (envelope [attack 1.0] [decay 0.0]))



          (-> .-delayTime (plug seconds context at duration)))))))

(defn convolver
  "Linear convolution."
  [generate-bit!]
  (fn [context at duration]
    (subgraph
