hsc3-0.16: Sound/SC3/UGen/Enum.hs
-- | Data types for enumerated and non signal unit generator inputs.
module Sound.SC3.UGen.Enum where
import qualified Sound.SC3.Common.Envelope as E
import Sound.SC3.UGen.Type
-- | Loop indicator input.
data Loop' t = Loop
| NoLoop
| WithLoop t
deriving (Eq, Show)
-- | Type-specialised 'Loop''.
type Loop = Loop' UGen
-- | Resolve 'Loop''.
from_loop :: Num t => Loop' t -> t
from_loop e =
case e of
NoLoop -> 0
Loop -> 1
WithLoop u -> u
-- | Interpolation indicator input.
data Interpolation = NoInterpolation
| LinearInterpolation
| CubicInterpolation
| Interpolation UGen
deriving (Eq, Show)
-- | Resolve 'Interpolation'.
from_interpolation :: Interpolation -> UGen
from_interpolation e =
case e of
NoInterpolation -> 1
LinearInterpolation -> 2
CubicInterpolation -> 4
Interpolation u -> u
-- | Completion mode indicator input.
data DoneAction = DoNothing
| PauseSynth
| RemoveSynth
| RemoveGroup
| DoneAction UGen
deriving (Eq, Show)
-- | Resolve 'DoneAction'.
from_done_action :: DoneAction -> UGen
from_done_action e =
case e of
DoNothing -> 0
PauseSynth -> 1
RemoveSynth -> 2
RemoveGroup -> 14
DoneAction u -> u
-- | Warp interpolation indicator input.
data Warp = Linear
| Exponential
| Warp UGen
deriving (Eq, Show)
-- | Resolve 'Warp'.
from_warp :: Warp -> UGen
from_warp e =
case e of
Linear -> 0
Exponential -> 1
Warp u -> u
-- | Type specialised ('UGen') envelope curve.
type EnvCurve = E.Envelope_Curve UGen
-- | Unification of integer and 'UGen' buffer identifiers.
data Buffer = Buffer_Id Int
| Buffer UGen
deriving (Eq, Show)
-- | Lift to 'UGen'.
from_buffer :: Buffer -> UGen
from_buffer b =
case b of
Buffer_Id i -> constant i
Buffer u -> u