-- | SuperCollider Ugen primitive. module Sound.Sc3.Ugen.Primitive where import Sound.Sc3.Common.Rate {- hsc3 -} import Sound.Sc3.Ugen.Brackets {- hsc3 -} -- | Identifier used to distinguish otherwise equal non-deterministic nodes. data UgenId = NoId | Uid Int deriving (Ord, Eq, Read, Show) -- | Alias of 'NoId', the 'UgenId' used for deterministic Ugens. no_id :: UgenId no_id = NoId -- | Unit generator output descriptor. type Output = Rate -- | Selector for unary and binary operators. newtype Special = Special Int deriving (Ord, Eq, Read, Show) -- | Sc Ugen primitive. data Primitive t = Primitive { ugenRate :: Rate , ugenName :: String , ugenInputs :: [t] , ugenOutputs :: [Output] , ugenSpecial :: Special , ugenId :: UgenId , primitiveBrackets :: Brackets } deriving (Ord, Eq, Read, Show)