#lang scribble/manual
@(require (for-label racket))

@title{(coin-gate prob in)}


When it receives a trigger, it tosses a coin, and either passes the
trigger or doesn't.


@racketblock[
(let ((f (t-rand 300 400 (Coingate 0.8 (impulse kr 10 0)))))
  (audition (out 0 (mul (sin-osc ar f 0) 0.2))))
]


@racketblock[
(let* ((p 0.2)
       (t (mul (impulse ar 20 0) (add (sin-osc kr 0.5 0) 1)))
       (t* (t-exp-rand (Mce 1000 1000) 12000 t))
       (i (lambda () (Coingate (+ p (rand 0 0.1)) (mul t 0.5))))
       (s (lambda () (ringz (i) t* 0.01)))
       (ignore (lambda (f) (lambda (_) (f)))))
  (audition (out 0 (mix/fill 3 (ignore s)))))
]


