{-# 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) -- --------------------------------- -- --------------------------------- -- Very common extensions. -- | Assign a signal to a named variable class Dsp repr => Asn repr a where asn :: a -> repr a