-- | Demand rate envelope generator
module Sound.SC3.UGen.Record.DemandEnvGen where
import qualified Sound.SC3.UGen as S
import Sound.SC3.UGen.Record
data DemandEnvGen = DemandEnvGen {
  rate :: S.Rate,
  level :: S.UGen,
  dur :: S.UGen,
  shape :: S.UGen,
  curve :: S.UGen,
  gate :: S.UGen,
  reset :: S.UGen,
  levelScale :: S.UGen,
  levelBias :: S.UGen,
  timeScale :: S.UGen,
  doneAction :: S.UGen
  } deriving (Show)
demandEnvGen :: DemandEnvGen
demandEnvGen = DemandEnvGen {
  rate = S.AR,
  level = 0.0,
  dur = 0.0,
  shape = 1.0,
  curve = 0.0,
  gate = 1.0,
  reset = 1.0,
  levelScale = 1.0,
  levelBias = 0.0,
  timeScale = 1.0,
  doneAction = 0.0
  }
mkDemandEnvGen :: DemandEnvGen -> S.UGen
mkDemandEnvGen (DemandEnvGen r a' b' c' d' e' f' g' h' i' j') = S.mkOsc r "DemandEnvGen" [a',b',c',d',e',f',g',h',i',j'] 1
instance Make DemandEnvGen where
  ugen = mkDemandEnvGen