packages feed

hsc3-0.20: Sound/Sc3/Ugen/Primitive.hs

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