#lang scribble/manual @(require (for-label racket)) @title{(ring4 a b)} Ring modulation variant. Return the value of ((a*a *b) - (a*b*b)). This is more efficient than using separate unit generators for the multiplies. See also mul, ring1, ring2, ring3. @racketblock[ (audition (out 0 (mul (ring4 (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 (mul (sub (mul3 a a b) (mul3 a b b)) 0.125)))) ]