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

@title{(ring3 a b)}


Ring modulation variant.  Return the value of (a * a * b). This is
more efficient than using separate unit generators for the
multiplies.

See also mul, ring1, ring2, ring4.


@racketblock[
(audition
 (out 0 (mul (ring3 (f-sin-osc ar 800 0)
                    (f-sin-osc ar (x-line kr 200 500 5 do-nothing) 0))
             0.125)))
]


@racketblock[
(let ((a (f-sin-osc ar 800 0))
      (b (f-sin-osc ar (x-line kr 200 500 5 do-nothing) 0)))
  (audition
   (out 0 (mul4 a a b 0.125))))
]


