                    (repeat (/ 22050 2) (db->amplitude -20)))))})
 
 (defcard
-  "A look-ahead gate, fed with a stream of 11025 samples of -20dB
+  "A look-ahead gate, fed with a stream of 11025 samples of a -20dB
    sine wave, 1000 samples of a -10dB sine wave and 21050 samples
    of a -11dB sine wave. The gate parameters are: threshold -16dB,
-   look-ahead 100ms, hold 0ms (disabled), RMS window 100ms.
-
-   Compared to the example without look-ahead, this configuration
-   clearly shows how the rise in volume is captured instead of being
-   cut off. A minor trade-off that becomes apparent at the same time
-   is that a small window of samples below the threshold also make it
-   through the gate."
-  (fn [state owner]
-    (gate-test state))
-  {:worker  "gate-5.js"
+   look-ahead 0ms (disabled), hold 100ms, RMS window 100ms.
+
+   Compared to the previous examples with the hold time disabled,
+   this configuration demonstrates how the gate remains open for
+   100ms (4410 samples) after the RMS level of the sine wave has
+   dropped below the threshold."
+  (fn [state owner]
+    (gate-test state))
+  {:worker  "gate-7.js"
    :data-fn
    (fn [sample-rate]
      (let [sines (sine-wave 20 sample-rate 33075)]
        (into []
              (concat (amplify (take 11025 sines) -10)
                      (amplify (drop 22025 sines) -20)))))})
-
-(defcard-doc
-  "## Hold time")
-
-(defcard
-  "A look-ahead gate, fed with a stream of 11025 samples of a -20dB
-   sine wave, 1000 samples of a -10dB sine wave and 21050 samples
-   of a -11dB sine wave. The gate parameters are: threshold -16dB,
-   look-ahead 100ms, hold 0ms (disabled), RMS window 100ms.
-
-   Compared to the example without look-ahead, this configuration
-   clearly shows how the rise in volume is captured instead of being
-   cut off. A minor trade-off that becomes apparent at the same time
-   is that a small window of samples below the threshold also make it
-   through the gate."
-  (fn [state owner]
-    (gate-test state))
-  {:worker  "gate-6.js"
-   :data-fn
-   (fn [sample-rate]
-     (into []
-           (concat (repeat (/ 11025 2) (db->amplitude -10))
-                   (repeat (/ 22050 2) (db->amplitude -20)))))})
-
-(defcard
-  "A look-ahead gate, fed with a stream of 11025 samples of -20dB
-   sine wave, 1000 samples of a -10dB sine wave and 21050 samples
-   of a -11dB sine wave. The gate parameters are: threshold -16dB,
-   look-ahead 100ms, hold 0ms (disabled), RMS window 100ms.
-
-   Compared to the example without look-ahead, this configuration
-   clearly shows how the rise in volume is captured instead of being
-   cut off. A minor trade-off that becomes apparent at the same time
-   is that a small window of samples below the threshold also make it
-   through the gate."
-  (fn [state owner]
-    (gate-test state))
-  {:worker  "gate-7.js"
-   :data-fn
-   (fn [sample-rate]
-     (let [sines (sine-wave 20 sample-rate 33075)]
-       (into []
-             (concat (amplify (take 11025 sines) -10)
-                     (amplify (drop 22025 sines) -20)))))})

                   (repeat (/ 21050 2) (db->amplitude -11)))))})

(defcard
  "A look-ahead gate, fed with a stream of 11025 samples of -20dB
   sine wave, 1000 samples of a -10dB sine wave and 21050 samples
   of a -11dB sine wave. The gate parameters are: threshold -16dB,
   look-ahead 100ms, hold 0ms (disabled), RMS window 100ms.

  "## RMS with look-ahead")

(defcard
  "A look-ahead gate, fed with a stream of 11025 samples at -20dB,
   1000 samples at -10dB, and 21050 samples at -11dB. The gate
   parameters are: threshold -16dB, look-ahead 0ms (disabled),
   hold 0ms (disabled), RMS window 0ms (disabled).

   Compared to the example without look-ahead, this configuration
   clearly shows how the rise in volume is captured instead of being
