csound-expression-0.1.0: src/CsoundExpr/Base/Types.hs
{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
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 :"