synthesizer-inference-0.2: src/Synthesizer/Inference/Monad/SignalSeq/Control.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{- |
Copyright : (c) Henning Thielemann 2006
License : GPL
Maintainer : synthesizer@henning-thielemann.de
Stability : provisional
Portability : requires multi-parameter type classes
Control curves which can be used
as envelopes, for controlling filter parameters and so on.
-}
module Synthesizer.Inference.Monad.SignalSeq.Control
({- * Primitives -}
constant, linear, exponential, exponential2,
{- * Piecewise -}
piecewise, Control(..), ControlPiece(..),
(-|#), ( #|-), (=|#), ( #|=), (|#), ( #|), -- spaces before # for Haddock
{- * Preparation -}
mapLinear, mapExponential)
where
import qualified Synthesizer.Inference.Monad.Signal as SigI
import qualified Synthesizer.Inference.Monad.Signal.Control as CtrlI
import Synthesizer.Inference.Monad.Signal.Control
(constant, linear, exponential, exponential2, piecewise,
Control(..), ControlPiece(..), (-|#), ( #|-), (=|#), ( #|=), (|#), ( #|))
import qualified Algebra.OccasionallyScalar as OccScalar
import qualified Algebra.Transcendental as Trans
import qualified Algebra.Field as Field
import qualified Algebra.Real as Real
import qualified Algebra.Ring as Ring
import UniqueLogicNP.Monad(liftP)
-- import NumericPrelude
mapLinear :: (Ring.C a, Field.C q, Real.C q, OccScalar.C a q) =>
q
-> q
-> SigI.Process a q a
-> SigI.Process a q a
mapLinear range center =
liftP (CtrlI.mapLinear range center)
mapExponential :: (Field.C q, Trans.C a, OccScalar.C a q) =>
a
-> q
-> SigI.Process a q a
-> SigI.Process a q a
mapExponential range center =
liftP (CtrlI.mapExponential range center)