hsc3-0.21: Help/Ugen/fm7.help.hs
-- fm7 ; two of six ; direct form
let c = mce [xLine kr 300 310 4 DoNothing,0,1
,xLine kr 300 310 8 DoNothing,0,1
,0,0,1
,0,0,1
,0,0,1
,0,0,1]
m = mce [line kr 0 0.001 2 DoNothing,line kr 0.1 0 4 DoNothing,0,0,0,0
,line kr 0 6 1 DoNothing,0,0,0,0,0
,0,0,0,0,0,0
,0,0,0,0,0,0
,0,0,0,0,0,0
,0,0,0,0,0,0]
[l,r,_,_,_,_] = mceChannels (X.fm7 ar c m)
in mce2 l r * 0.1
-- fm7 ; two of six ; matrix form ; inputs may be audio or control or initialization rate
let rt = ar
c = [[xLine rt 300 310 4 DoNothing,0,1]
,[xLine rt 300 310 8 DoNothing,0,1]
,[0,0,1]
,[0,0,1]
,[0,0,1]
,[0,0,1] ]
m = [[line rt 0 0.001 2 DoNothing,line rt 0.1 0 4 DoNothing,0,0,0,0]
,[line rt 0 6 1 DoNothing,0,0,0,0,0]
,[0,0,0,0,0,0]
,[0,0,0,0,0,0]
,[0,0,0,0,0,0]
,[0,0,0,0,0,0] ]
[l,r,_,_,_,_] = mceChannels (X.fm7_mx c m)
in mce2 l r * 0.1
-- fm7 ; an algorithmically generated graph courtesy f0
let x = [[[0.0,-1/3,-1.0,0.0]
,[0.75,0.75,0.0,-0.5]
,[-0.5,-0.25,0.25,-0.75]
,[-0.5,1.0,1.0,1.0]
,[0.0,1/6,-0.75,-1.0]
,[0.5,0.5,-0.5,1/3]]
,[[-1/3,0.5,-0.5,-0.5]
,[0.5,0.75,0.25,0.75]
,[-15/18,0.25,-1.0,0.5]
,[1.5,0.25,0.25,-0.25]
,[-2/3,-2/3,-1.0,-0.5]
,[-1.0,0.0,-15/18,-1/3]]
,[[0.25,-0.5,-0.5,-1.0]
,[-0.5,1.0,-1.5,0.0]
,[-1.0,-1.5,-0.5,0.0]
,[0.5,-1.0,7/6,-0.5]
,[15/18,-0.75,-1.5,0.5]
,[0.25,-1.0,0.5,1.0]]
,[[1.0,1/3,0.0,-0.75]
,[-0.25,0.0,0.0,-0.5]
,[-0.5,-0.5,0.0,0.5]
,[1.0,0.75,0.5,0.5]
,[0.0,1.5,-0.5,0.0]
,[1.0,0.0,-0.25,-0.5]]
,[[0.5,-0.25,0.0,1/3]
,[0.25,-0.75,1/3,-1.0]
,[-0.25,-0.5,0.25,-7/6]
,[0.0,0.25,0.5,1/6]
,[-1.0,-0.5,15/18,-0.5]
,[15/18,-0.75,-0.5,0.0]]
,[[0.0,-0.75,-1/6,0.0]
,[1.0,0.5,0.5,0.0]
,[-0.5,0.0,-0.5,0.0]
,[-0.5,-1/6,0.0,0.5]
,[-0.25,1/6,-0.75,0.25]
,[-7/6,-4/3,-1/6,1.5]]]
y = [[[0.0,-0.5,1.0,0.0]
,[-0.5,1.0,0.5,-0.5]
,[0.0,1/3,1.0,1.0]]
,[[-0.5,0.5,1.0,1.0]
,[0.0,1/3,0.0,1.5]
,[-0.5,15/18,1.0,0.0]]
,[[0.25,-2/3,0.25,0.0]
,[0.5,-0.5,-0.5,-0.5]
,[0.5,-0.5,-0.75,15/18]]
,[[-0.25,1.0,0.0,1/3]
,[-1.25,-0.25,0.5,0.0]
,[0.0,-1.25,-0.25,-0.5]]
,[[0.75,-0.25,1.5,0.0]
,[0.25,-1.5,0.5,0.5]
,[-0.5,-0.5,-0.5,-0.25]]
,[[0.0,0.5,-0.5,0.25]
,[0.25,0.5,-1/3,0.0]
,[1.0,0.5,-1/6,0.5]]]
cs = map (map (\[f,p,m,a] -> sinOsc ar f p * m + a)) x
ms = map (map (\[f,w,m,a] -> pulse ar f w * m + a)) y
[c1,c2,c3,c4,c5,c6] = mceChannels (X.fm7_mx cs ms)
g3 = linLin (lfSaw kr 0.1 0) (-1) 1 0 (dbAmp (-12))
g6 = dbAmp (-3)
in mce [c1 + c3 * g3 + c5,c2 + c4 + c6 * g6]