{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE Rank2Types #-} module Synthesizer.LLVM.Generator.Extra where import qualified Synthesizer.LLVM.Causal.Process as Causal import qualified Synthesizer.LLVM.Generator.Signal as Sig import Synthesizer.Causal.Class (($*)) import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) import qualified LLVM.Extra.Multi.Value.Marshal as Marshal import qualified LLVM.Extra.Multi.Value as MultiValue import Data.Word (Word) import NumericPrelude.Numeric ramp, parabolaFadeIn, parabolaFadeOut, parabolaFadeInMap, parabolaFadeOutMap :: (Marshal.C a, MultiValue.Field a, MultiValue.IntegerConstant a, MultiValue.NativeFloating a ar) => Exp Word -> Sig.MV a ramp :: forall a ar. (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a ramp Exp Word dur = Exp Word -> T (T a) (T a) forall a. Exp Word -> T a a Causal.take Exp Word dur T (T a) (T a) -> SignalOf T (T a) -> SignalOf T (T a) forall (process :: * -> * -> *) a b. C process => process a b -> SignalOf process a -> SignalOf process b $* Exp a -> T (T a) forall a. (C a, Field a, IntegerConstant a) => Exp a -> MV a Sig.rampInf (Exp Word -> Exp a forall i ir a ar. (NativeInteger i ir, NativeFloating a ar) => Exp i -> Exp a Expr.fromIntegral Exp Word dur) parabolaFadeIn :: forall a ar. (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a parabolaFadeIn Exp Word dur = Exp Word -> T (T a) (T a) forall a. Exp Word -> T a a Causal.take Exp Word dur T (T a) (T a) -> SignalOf T (T a) -> SignalOf T (T a) forall (process :: * -> * -> *) a b. C process => process a b -> SignalOf process a -> SignalOf process b $* Exp a -> T (T a) forall a. (C a, Field a, IntegerConstant a) => Exp a -> MV a Sig.parabolaFadeInInf (Exp Word -> Exp a forall i ir a ar. (NativeInteger i ir, NativeFloating a ar) => Exp i -> Exp a Expr.fromIntegral Exp Word dur) parabolaFadeOut :: forall a ar. (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a parabolaFadeOut Exp Word dur = Exp Word -> T (T a) (T a) forall a. Exp Word -> T a a Causal.take Exp Word dur T (T a) (T a) -> SignalOf T (T a) -> SignalOf T (T a) forall (process :: * -> * -> *) a b. C process => process a b -> SignalOf process a -> SignalOf process b $* Exp a -> T (T a) forall a. (C a, Field a, IntegerConstant a) => Exp a -> MV a Sig.parabolaFadeOutInf (Exp Word -> Exp a forall i ir a ar. (NativeInteger i ir, NativeFloating a ar) => Exp i -> Exp a Expr.fromIntegral Exp Word dur) parabolaFadeInMap :: forall a ar. (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a parabolaFadeInMap Exp Word dur = (Exp a -> Exp a) -> T (T a) (T a) forall ae a be b. (Aggregate ae a, Aggregate be b) => (ae -> be) -> T a b Causal.map (\Exp a t -> Exp a tExp a -> Exp a -> Exp a forall a. C a => a -> a -> a *(Exp a 2Exp a -> Exp a -> Exp a forall a. C a => a -> a -> a -Exp a t)) T (T a) (T a) -> SignalOf T (T a) -> SignalOf T (T a) forall (process :: * -> * -> *) a b. C process => process a b -> SignalOf process a -> SignalOf process b $* Exp Word -> T (T a) forall a ar. (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a ramp Exp Word dur parabolaFadeOutMap :: forall a ar. (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a parabolaFadeOutMap Exp Word dur = (Exp a -> Exp a) -> T (T a) (T a) forall ae a be b. (Aggregate ae a, Aggregate be b) => (ae -> be) -> T a b Causal.map (\Exp a t -> Exp a 1Exp a -> Exp a -> Exp a forall a. C a => a -> a -> a -Exp a tExp a -> Exp a -> Exp a forall a. C a => a -> a -> a *Exp a t) T (T a) (T a) -> SignalOf T (T a) -> SignalOf T (T a) forall (process :: * -> * -> *) a b. C process => process a b -> SignalOf process a -> SignalOf process b $* Exp Word -> T (T a) forall a ar. (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a ramp Exp Word dur