module Sound.SC3.UGen.Utilities where
import Sound.SC3.UGen.Enum
import Sound.SC3.UGen.UGen
from_loop :: Loop -> UGen
from_loop NoLoop = Constant 0
from_loop Loop = Constant 1
from_loop (WithLoop u) = u
from_interpolation :: Interpolation -> UGen
from_interpolation NoInterpolation = Constant 1
from_interpolation LinearInterpolation = Constant 2
from_interpolation CubicInterpolation = Constant 4
from_interpolation (Interpolation u) = u
from_done_action :: DoneAction -> UGen
from_done_action DoNothing = Constant 0
from_done_action PauseSynth = Constant 1
from_done_action RemoveSynth = Constant 2
from_done_action (DoneAction u) = u
from_warp :: Warp -> UGen
from_warp Linear = Constant 0
from_warp Exponential = Constant 1
from_warp (Warp u) = u
env_curve :: EnvCurve -> UGen
env_curve EnvStep = Constant 0.0
env_curve EnvLin = Constant 1.0
env_curve EnvExp = Constant 2.0
env_curve EnvSin = Constant 3.0
env_curve EnvCos = Constant 4.0
env_curve (EnvNum _) = Constant 5.0
env_curve EnvSqr = Constant 6.0
env_curve EnvCub = Constant 7.0
env_value :: EnvCurve -> UGen
env_value (EnvNum u) = u
env_value _ = Constant 0.0
d_dx :: (Num a) => [a] -> [a]
d_dx [] = []
d_dx [_] = []
d_dx [x,y] = [y x]
d_dx (x:y:r) = y x : d_dx (y:r)
dbl :: a -> [a]
dbl x = [x, x]