     (.setValueAtTime param input at)
     (-> input (run-with context at duration) :output (.connect param))))
 
-(defn gain [level]
+(defn gain
+  "Multiply the signal by level."
+  [level]
   (fn [context at duration]
     (subgraph
       (doto (.createGain context)
         (-> .-gain (plug level context at duration))))))
 
-(def pass-through (gain 1.0))
+(def pass-through
+  "Pass the signal through unaltered."
+  (gain 1.0))
 
 
 ; Envelopes

; Oscillators

(defn oscillator
  [type freq]
  (fn [context at duration]
    (source

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

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