module Synthesizer.Dimensional.RateAmplitude.Displacement (
mix, mixVolume,
mixMulti, mixMultiVolume,
raise, raiseVector, distort,
) where
import qualified Synthesizer.Dimensional.Amplitude.Displacement as DispV
import qualified Synthesizer.Dimensional.Signal.Private as SigA
import qualified Synthesizer.Dimensional.Process as Proc
import qualified Number.DimensionTerm as DN
import qualified Algebra.DimensionTerm as Dim
import qualified Algebra.Module as Module
import qualified Algebra.Field as Field
import qualified Algebra.Absolute as Absolute
import NumericPrelude.Base
import Prelude ()
{-# INLINE mix #-}
mix :: (Absolute.C y, Field.C y, Module.C y yv, Dim.C v) =>
Proc.T s u t (
SigA.R s v y yv
-> SigA.R s v y yv
-> SigA.R s v y yv)
mix :: forall y yv v s u t.
(C y, C y, C y yv, C v) =>
T s u t (R s v y yv -> R s v y yv -> R s v y yv)
mix = forall a s u t. a -> T s u t a
Proc.pure forall y yv u s.
(C y, C y, C y yv, C u) =>
R s u y yv -> R s u y yv -> R s u y yv
DispV.mix
{-# INLINE mixVolume #-}
mixVolume ::
(Absolute.C y, Field.C y, Module.C y yv, Dim.C v) =>
DN.T v y
-> Proc.T s u t (
SigA.R s v y yv
-> SigA.R s v y yv
-> SigA.R s v y yv)
mixVolume :: forall y yv v s u t.
(C y, C y, C y yv, C v) =>
T v y -> T s u t (R s v y yv -> R s v y yv -> R s v y yv)
mixVolume T v y
v = forall a s u t. a -> T s u t a
Proc.pure forall a b. (a -> b) -> a -> b
$ forall y yv u s.
(C y, C y, C y yv, C u) =>
T u y -> R s u y yv -> R s u y yv -> R s u y yv
DispV.mixVolume T v y
v
{-# INLINE mixMulti #-}
mixMulti ::
(Absolute.C y, Field.C y, Module.C y yv, Dim.C v) =>
Proc.T s u t (
[SigA.R s v y yv]
-> SigA.R s v y yv)
mixMulti :: forall y yv v s u t.
(C y, C y, C y yv, C v) =>
T s u t ([R s v y yv] -> R s v y yv)
mixMulti = forall a s u t. a -> T s u t a
Proc.pure forall y yv u s.
(C y, C y, C y yv, C u) =>
[R s u y yv] -> R s u y yv
DispV.mixMulti
{-# INLINE mixMultiVolume #-}
mixMultiVolume ::
(Absolute.C y, Field.C y, Module.C y yv, Dim.C v) =>
DN.T v y
-> Proc.T s u t (
[SigA.R s v y yv]
-> SigA.R s v y yv)
mixMultiVolume :: forall y yv v s u t.
(C y, C y, C y yv, C v) =>
T v y -> T s u t ([R s v y yv] -> R s v y yv)
mixMultiVolume T v y
v = forall a s u t. a -> T s u t a
Proc.pure forall a b. (a -> b) -> a -> b
$ forall y yv u s.
(C y, C y, C y yv, C u) =>
T u y -> [R s u y yv] -> R s u y yv
DispV.mixMultiVolume T v y
v
{-# INLINE raise #-}
raise :: (Field.C y, Dim.C v) =>
DN.T v y
-> Proc.T s u t (
SigA.R s v y y
-> SigA.R s v y y)
raise :: forall y v s u t.
(C y, C v) =>
T v y -> T s u t (R s v y y -> R s v y y)
raise T v y
y' = forall a s u t. a -> T s u t a
Proc.pure forall a b. (a -> b) -> a -> b
$ forall y u rate.
(C y, C u) =>
T u y
-> T rate (Dimensional u y) (T y) -> T rate (Dimensional u y) (T y)
DispV.raise T v y
y'
{-# INLINE raiseVector #-}
raiseVector :: (Field.C y, Module.C y yv, Dim.C v) =>
DN.T v y
-> yv
-> Proc.T s u t (
SigA.R s v y yv
-> SigA.R s v y yv)
raiseVector :: forall y yv v s u t.
(C y, C y yv, C v) =>
T v y -> yv -> T s u t (R s v y yv -> R s v y yv)
raiseVector T v y
y' yv
yv = forall a s u t. a -> T s u t a
Proc.pure forall a b. (a -> b) -> a -> b
$ forall y yv u rate.
(C y, C y yv, C u) =>
T u y
-> yv
-> T rate (Dimensional u y) (T yv)
-> T rate (Dimensional u y) (T yv)
DispV.raiseVector T v y
y' yv
yv
{-# INLINE distort #-}
distort :: (Field.C y, Module.C y yv, Dim.C v) =>
(yv -> yv)
-> Proc.T s u t (
SigA.R s v y y
-> SigA.R s v y yv
-> SigA.R s v y yv)
distort :: forall y yv v s u t.
(C y, C y yv, C v) =>
(yv -> yv) -> T s u t (R s v y y -> R s v y yv -> R s v y yv)
distort yv -> yv
f = forall a s u t. a -> T s u t a
Proc.pure forall a b. (a -> b) -> a -> b
$ forall y yv u s.
(C y, C y yv, C u) =>
(yv -> yv) -> R s u y y -> R s u y yv -> R s u y yv
DispV.distort yv -> yv
f