hsc3-0.21: Help/Ugen/grainFM.help.hs
-- grainFM
let d = 15
lin a b = line kr a b d RemoveSynth
l = lin (-0.5) 0.5
f = lin 200 800
t = impulse kr (lin 7.5 15) 0
i = lin (-1) 1
in grainFM 2 t 0.1 f 200 i l (-1) 512 * 0.1
-- grainFM ; mouse control
let n1 = whiteNoiseId 'α' kr
n2 = lfNoise1Id 'β' kr 500
x = mouseX kr (-0.5) 0.5 Linear 0.1
y = mouseY kr 0 400 Linear 0.1
f = n1 * y + 440
t = impulse kr 12.5 0
i = linLin n2 (-1) 1 1 10
in grainFM 2 t 0.1 f 200 i x (-1) 512 * 0.1
-- grainFM ; event control
let f (_,g,x,y,z,o,rx,ry,p,px,_) =
let tr = impulse ar (y * 64 + 10) 0
cf = midiCps (p * 127 + px)
mf = (cf * 1.5) + ((1 - x) * z * cf)
in grainFM 2 tr (ry * 0.25) cf mf (1 + (rx * 0.25)) o (-1) 512 * z * lagUD g 0 2
in mix (voicer 16 f) * control kr "gain" 0.5