-- | 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)