module Csound.Typed.Types.MonoArg(
MonoArg(..), MonoAdsr, adsrMonoSynt, monoAdsr
) where
import Csound.Typed.Types.Prim
import Csound.Typed.Types.Tuple
import Csound.Typed.Plugins.Adsr140
data MonoArg = MonoArg
{ monoAmp :: Sig
, monoCps :: Sig
, monoGate :: Sig
, monoTrig :: Sig }
instance Tuple MonoArg where
tupleMethods = makeTupleMethods to from
where
to :: Sig4 -> MonoArg
to (amp, cps, gate, trig) = MonoArg amp cps gate trig
from :: MonoArg -> Sig4
from (MonoArg amp cps gate trig) = (amp, cps, gate, trig)
type MonoAdsr = Sig -> Sig -> Sig -> Sig -> Sig
adsrMonoSynt :: (MonoAdsr -> (Sig, Sig) -> a) -> (MonoArg -> a)
adsrMonoSynt f arg = f env (monoAmp arg, monoCps arg)
where env = monoAdsr arg
monoAdsr :: MonoArg -> MonoAdsr
monoAdsr arg = adsr140 (monoGate arg) (monoTrig arg)