{-# LANGUAGE TypeFamilies, MultiParamTypeClasses #-} module Language.XDsp.Semantics.Core where -- |Third version of tagless final csound interpreter -- no de Bruijn indices, a monadic repr class Dsp repr where data ASig repr :: * data KSig repr :: * data INum repr :: * getSr :: repr Integer getKsmps :: repr Integer -- |Create signals from constants. class Dsp repr => Constants repr where cnst :: Double -> repr (INum repr) ckig :: Double -> repr (KSig repr) csig :: Double -> repr (ASig repr) -- | Named variables in a backend. class Var a where type VarRep a :: * getVarRep :: a -> VarRep a -- --------------------------------- -- --------------------------------- -- Very common extensions. -- | Assign a signal to a named variable class Dsp repr => Asn repr a where asn :: a -> repr a class Dsp repr => Cast repr where ik :: INum repr -> repr (KSig repr) ia :: INum repr -> repr (ASig repr) ki :: KSig repr -> repr (INum repr)