module CsoundExpr.Base.Types (X(..), K, Arate, Krate, Irate, SignalOut, itime, idur, num, double, string) where import Text.PrettyPrint(Doc, vcat, text, space) import qualified CsoundExpr.Translator.Cs.CsTree as La import CsoundExpr.Translator.Cs.IM import CsoundExpr.Translator.Types import CsoundExpr.Base.Imperative import CsoundExpr.Base.UserDefined(opcode, prefixOperation) import CsoundExpr.Translator.Csd ------------------------------------------- -- constructors -- | @p2@ p-field itime :: Irate itime = La.param 2 -- | @p3@ p-field idur :: Irate idur = La.param 3 -- | auxiliary function, to write (num n) instead of (n :: Irate) num :: Irate -> Irate num = id -- | Lift 'Double' to 'Irate' double :: Double -> Irate double = La.double -- | Lift 'String' to 'Irate' string :: String -> Irate string = La.string --------------------------------------------- -- show instances instance Show Arate where show x = show $ vcat [title , ppCsTrees $ fromSignalOut (ar "Out" <=> x)] where title = text "; Arate expression :" instance Show Krate where show x = show $ vcat [title , ppCsTrees $ fromSignalOut (kr "Out" <=> x)] where title = text "; Krate expression :" instance Show Irate where show x = show $ vcat [title , ppCsTrees $ fromSignalOut (ir "Out" <=> x)] where title = text "; Irate expression :" instance Show SignalOut where show x = show $ vcat [title , ppCsTrees $ fromSignalOut x] where title = text "; SignalOut expression :"