synthesizer-llvm 1.1.0.1 → 1.2
raw patch · 70 files changed
+1953/−1591 lines, 70 filesdep ~containersdep ~llvm-dsldep ~llvm-extraPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: containers, llvm-dsl, llvm-extra, pathtype, random, semigroups, synthesizer-alsa, synthesizer-core, synthesizer-midi
API changes (from Hackage documentation)
- Synthesizer.LLVM.Causal.Controlled: instance (LLVM.Extra.Arithmetic.PseudoModule v, LLVM.Extra.Arithmetic.Scalar v Data.Type.Equality.~ a, LLVM.Extra.Arithmetic.RationalConstant a, LLVM.Extra.Memory.C a, LLVM.Extra.Memory.C v) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a) v (Synthesizer.Plain.Filter.Recursive.Universal.Result v)
- Synthesizer.LLVM.Causal.Controlled: instance (LLVM.Extra.Multi.Value.Marshal.C a, LLVM.Extra.Multi.Value.Marshal.Vector Type.Data.Num.Decimal.Literal.D4 a, LLVM.Extra.Multi.Vector.PseudoRing a) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.LLVM.Filter.SecondOrderPacked.Parameter a) (LLVM.Extra.Multi.Value.Private.T a) (LLVM.Extra.Multi.Value.Private.T a)
- Synthesizer.LLVM.Causal.Controlled: instance (LLVM.Extra.Multi.Value.Marshal.Vector n a, n Data.Type.Equality.~ Type.Data.Num.Decimal.Literal.D3, LLVM.Extra.Multi.Vector.PseudoRing a, inp Data.Type.Equality.~ LLVM.Extra.Multi.Value.Private.T a, out Data.Type.Equality.~ LLVM.Extra.Multi.Value.Private.T a) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterMV a) (Sound.Frame.Stereo.T inp) (Sound.Frame.Stereo.T out)
- Synthesizer.LLVM.Causal.Controlled: instance (a Data.Type.Equality.~ LLVM.Extra.Arithmetic.Scalar v, LLVM.Extra.Arithmetic.PseudoModule v, LLVM.Extra.Arithmetic.RationalConstant a, LLVM.Extra.Memory.C a, LLVM.Extra.Memory.C v) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter a) v v
- Synthesizer.LLVM.Causal.Controlled: instance (a Data.Type.Equality.~ LLVM.Extra.Multi.Value.Private.Scalar v, LLVM.Extra.Multi.Value.Private.PseudoModule v, LLVM.Extra.Multi.Value.Marshal.C a, LLVM.Extra.Multi.Value.Private.IntegerConstant a, LLVM.Extra.Multi.Value.Marshal.C v, Type.Data.Num.Decimal.Number.Natural n, Type.Data.Num.Decimal.Number.Positive (n Type.Data.Num.Decimal.Number.:*: LLVM.Core.Type.UnknownSize), inp Data.Type.Equality.~ LLVM.Extra.Multi.Value.Private.T v, out Data.Type.Equality.~ LLVM.Extra.Multi.Value.Private.T v) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a) inp out
- Synthesizer.LLVM.Causal.Controlled: type family Output parameter a;
- Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v Data.Type.Equality.~ LLVM.Extra.Multi.Value.Private.T a, LLVM.Extra.Memory.C v, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.IntegerConstant v, LLVM.Extra.Multi.Value.Marshal.C a, LLVM.Extra.Multi.Value.Private.PseudoRing a, LLVM.Extra.Multi.Value.Private.IntegerConstant a, Type.Data.Num.Decimal.Number.Positive (n Type.Data.Num.Decimal.Number.:*: LLVM.Core.Type.UnknownSize), Type.Data.Num.Decimal.Number.Natural n) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a) v v
- Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v Data.Type.Equality.~ a, LLVM.Extra.Arithmetic.PseudoRing a, LLVM.Extra.Arithmetic.IntegerConstant a, LLVM.Extra.Memory.C a, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.IntegerConstant v) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter a) v v
- Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v Data.Type.Equality.~ a, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.IntegerConstant v, LLVM.Extra.Arithmetic.PseudoRing a, LLVM.Extra.Arithmetic.IntegerConstant a, LLVM.DSL.Expression.Aggregate ae a, LLVM.Extra.TuplePrivate.Phi a, LLVM.Extra.TuplePrivate.Undefined a, LLVM.Extra.Memory.C a) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.Plain.Filter.Recursive.FirstOrder.Parameter a) v (Synthesizer.Plain.Filter.Recursive.FirstOrder.Result v)
- Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v Data.Type.Equality.~ a, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.IntegerConstant v, LLVM.Extra.Arithmetic.PseudoRing a, LLVM.Extra.Arithmetic.IntegerConstant a, LLVM.DSL.Expression.Aggregate ae a, LLVM.Extra.TuplePrivate.Phi a, LLVM.Extra.TuplePrivate.Undefined a, LLVM.Extra.Memory.C a, LLVM.Extra.Memory.C v) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter a) v v
- Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v Data.Type.Equality.~ b, LLVM.Extra.Memory.C b, LLVM.Extra.TuplePrivate.Phi a, LLVM.Extra.TuplePrivate.Undefined a, LLVM.DSL.Expression.Aggregate ae a, LLVM.DSL.Expression.Aggregate be b, Algebra.Module.C ae be) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a) v (Synthesizer.Plain.Filter.Recursive.Universal.Result v)
- Synthesizer.LLVM.Causal.ControlledPacked: instance (Type.Data.Num.Decimal.Number.Natural n, Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v Data.Type.Equality.~ a, LLVM.Extra.Arithmetic.PseudoRing a, LLVM.Extra.Arithmetic.IntegerConstant a, LLVM.Extra.Memory.C a, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.RationalConstant v) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.LLVM.Filter.Allpass.CascadeParameter n a) v v
- Synthesizer.LLVM.Causal.ControlledPacked: instance (Type.Data.Num.Decimal.Number.Natural n, Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v Data.Type.Equality.~ b, LLVM.Extra.Memory.C b, LLVM.Extra.TuplePrivate.Phi a, LLVM.Extra.TuplePrivate.Undefined a, LLVM.DSL.Expression.Aggregate ae a, LLVM.DSL.Expression.Aggregate be b, Algebra.Module.C ae be) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.LLVM.Filter.Moog.Parameter n a) v v
- Synthesizer.LLVM.Causal.ControlledPacked: type family Input parameter b;
- Synthesizer.LLVM.Causal.Exponential2: instance LLVM.DSL.Expression.Aggregate exp mv => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Causal.Exponential2.Parameter exp) (Synthesizer.LLVM.Causal.Exponential2.Parameter mv)
- Synthesizer.LLVM.Causal.Exponential2: instance LLVM.DSL.Expression.Aggregate exp mv => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Causal.Exponential2.ParameterPacked exp) (Synthesizer.LLVM.Causal.Exponential2.ParameterPacked mv)
- Synthesizer.LLVM.Causal.Exponential2: instance LLVM.Extra.Multi.Value.Marshal.C a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.LLVM.Causal.Exponential2.Parameter a)
- Synthesizer.LLVM.Causal.Exponential2: instance LLVM.Extra.Multi.Value.Marshal.C a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.LLVM.Causal.Exponential2.ParameterPacked a)
- Synthesizer.LLVM.Causal.Exponential2: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.LLVM.Causal.Exponential2.Parameter a)
- Synthesizer.LLVM.Causal.Exponential2: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.LLVM.Causal.Exponential2.ParameterPacked a)
- Synthesizer.LLVM.Causal.Exponential2: multiValueParameter :: Parameter (T a) -> T (Parameter a)
- Synthesizer.LLVM.Causal.Exponential2: multiValueParameterPacked :: ParameterPacked (T a) -> T (ParameterPacked a)
- Synthesizer.LLVM.Causal.Exponential2: unMultiValueParameter :: T (Parameter a) -> Parameter (T a)
- Synthesizer.LLVM.Causal.Exponential2: unMultiValueParameterPacked :: T (ParameterPacked a) -> ParameterPacked (T a)
- Synthesizer.LLVM.Causal.Functional: instance (GHC.Base.Functor f, f Data.Type.Equality.~ g) => Synthesizer.LLVM.Causal.Functional.MakeGroundArguments f (Synthesizer.LLVM.Causal.Functional.Ground g a)
- Synthesizer.LLVM.Causal.Functional: instance Synthesizer.LLVM.Causal.Functional.MakeArguments (LLVM.Extra.Multi.Value.Private.T a)
- Synthesizer.LLVM.Causal.Process: type MV a b = T (T a) (T b)
- Synthesizer.LLVM.Causal.Render: build :: (Run f, C p) => T (Plugs f a b) p (DSL f a b) f
- Synthesizer.LLVM.Causal.Render: class RunArg a
- Synthesizer.LLVM.Causal.Render: instance (Synthesizer.LLVM.Private.Render.RunArg a, Synthesizer.LLVM.Causal.Render.Run f) => Synthesizer.LLVM.Causal.Render.Run (a -> f)
- Synthesizer.LLVM.Causal.Render: instance Synthesizer.Generic.Cut.Read a => Synthesizer.LLVM.Causal.Render.Run (Synthesizer.CausalIO.Process.T a b)
- Synthesizer.LLVM.Causal.Render: type family DSLArg a
- Synthesizer.LLVM.Complex: instance LLVM.Extra.Multi.Value.Marshal.C a => LLVM.Extra.Multi.Value.Marshal.C (Number.Complex.T a)
- Synthesizer.LLVM.Complex: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Number.Complex.T a)
- Synthesizer.LLVM.Filter.Allpass: cascadeParameterMultiValue :: CascadeParameter n (T a) -> T (CascadeParameter n a)
- Synthesizer.LLVM.Filter.Allpass: cascadeParameterUnMultiValue :: T (CascadeParameter n a) -> CascadeParameter n (T a)
- Synthesizer.LLVM.Filter.Allpass: instance (LLVM.DSL.Expression.Aggregate e mv, n Data.Type.Equality.~ m) => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Filter.Allpass.CascadeParameter n e) (Synthesizer.LLVM.Filter.Allpass.CascadeParameter m mv)
- Synthesizer.LLVM.Filter.Allpass: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter e) (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter mv)
- Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Multi.Value.Marshal.C a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.LLVM.Filter.Allpass.CascadeParameter n a)
- Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Multi.Value.Marshal.C a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter a)
- Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.LLVM.Filter.Allpass.CascadeParameter n a)
- Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter a)
- Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Multi.Vector.C a => LLVM.Extra.Multi.Vector.C (Synthesizer.LLVM.Filter.Allpass.CascadeParameter m a)
- Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Multi.Vector.C a => LLVM.Extra.Multi.Vector.C (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter a)
- Synthesizer.LLVM.Filter.ComplexFirstOrder: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Filter.ComplexFirstOrder.Parameter e) (Synthesizer.LLVM.Filter.ComplexFirstOrder.Parameter mv)
- Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: data ParameterMV a
- Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: instance LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterExp a) (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterMV a)
- Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: instance LLVM.Extra.Multi.Value.Marshal.Vector Type.Data.Num.Decimal.Literal.D3 a => LLVM.Extra.Memory.C (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterMV a)
- Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: instance LLVM.Extra.Multi.Vector.C a => LLVM.Extra.TuplePrivate.Phi (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterMV a)
- Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: instance LLVM.Extra.Multi.Vector.C a => LLVM.Extra.TuplePrivate.Undefined (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterMV a)
- Synthesizer.LLVM.Filter.FirstOrder: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.FirstOrder.Parameter e) (Synthesizer.Plain.Filter.Recursive.FirstOrder.Parameter mv)
- Synthesizer.LLVM.Filter.FirstOrder: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.FirstOrder.Result e) (Synthesizer.Plain.Filter.Recursive.FirstOrder.Result mv)
- Synthesizer.LLVM.Filter.Moog: instance (n Data.Type.Equality.~ m, LLVM.DSL.Expression.Aggregate e mv) => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Filter.Moog.Parameter n e) (Synthesizer.LLVM.Filter.Moog.Parameter m mv)
- Synthesizer.LLVM.Filter.SecondOrder: composeParameterMV :: C a => Parameter (T a) -> CodeGenFunction r (Value (Struct (Parameter a)))
- Synthesizer.LLVM.Filter.SecondOrder: decomposeParameterMV :: C a => Value (Struct (Parameter a)) -> CodeGenFunction r (Parameter (T a))
- Synthesizer.LLVM.Filter.SecondOrder: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter e) (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter mv)
- Synthesizer.LLVM.Filter.SecondOrder: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.SecondOrder.State e) (Synthesizer.Plain.Filter.Recursive.SecondOrder.State mv)
- Synthesizer.LLVM.Filter.SecondOrder: instance LLVM.Extra.Multi.Value.Marshal.C a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter a)
- Synthesizer.LLVM.Filter.SecondOrder: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter a)
- Synthesizer.LLVM.Filter.SecondOrderCascade: instance (Type.Data.Num.Decimal.Number.Natural n, LLVM.Extra.Multi.Value.Marshal.C a) => LLVM.Extra.TuplePrivate.Phi (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a)
- Synthesizer.LLVM.Filter.SecondOrderCascade: instance (Type.Data.Num.Decimal.Number.Natural n, LLVM.Extra.Multi.Value.Marshal.C a) => LLVM.Extra.TuplePrivate.Undefined (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a)
- Synthesizer.LLVM.Filter.SecondOrderCascade: instance (Type.Data.Num.Decimal.Number.Natural n, LLVM.Extra.Multi.Value.Marshal.C a) => LLVM.Extra.TuplePrivate.Zero (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a)
- Synthesizer.LLVM.Filter.SecondOrderCascade: instance (Type.Data.Num.Decimal.Number.Natural n, LLVM.Extra.Multi.Value.Marshal.C a, Type.Data.Num.Decimal.Number.Positive (n Type.Data.Num.Decimal.Number.:*: LLVM.Core.Type.UnknownSize)) => LLVM.Extra.Memory.C (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a)
- Synthesizer.LLVM.Filter.SecondOrderPacked: instance (LLVM.Extra.Multi.Value.Marshal.C a, LLVM.Extra.Multi.Value.Marshal.Vector Type.Data.Num.Decimal.Literal.D4 a) => LLVM.Extra.Memory.C (Synthesizer.LLVM.Filter.SecondOrderPacked.Parameter a)
- Synthesizer.LLVM.Filter.SecondOrderPacked: instance LLVM.Extra.Multi.Vector.C a => LLVM.Extra.TuplePrivate.Phi (Synthesizer.LLVM.Filter.SecondOrderPacked.Parameter a)
- Synthesizer.LLVM.Filter.SecondOrderPacked: instance LLVM.Extra.Multi.Vector.C a => LLVM.Extra.TuplePrivate.Undefined (Synthesizer.LLVM.Filter.SecondOrderPacked.Parameter a)
- Synthesizer.LLVM.Filter.Universal: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.Universal.Parameter e) (Synthesizer.Plain.Filter.Recursive.Universal.Parameter mv)
- Synthesizer.LLVM.Filter.Universal: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.Universal.Result e) (Synthesizer.Plain.Filter.Recursive.Universal.Result mv)
- Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Multi.Value.Marshal.C a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a)
- Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Multi.Value.Marshal.C a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.Plain.Filter.Recursive.Universal.Result a)
- Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a)
- Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.Plain.Filter.Recursive.Universal.Result a)
- Synthesizer.LLVM.Filter.Universal: multiValueParameter :: Parameter (T a) -> T (Parameter a)
- Synthesizer.LLVM.Filter.Universal: multiValueResult :: Result (T a) -> T (Result a)
- Synthesizer.LLVM.Filter.Universal: unMultiValueParameter :: T (Parameter a) -> Parameter (T a)
- Synthesizer.LLVM.Filter.Universal: unMultiValueResult :: T (Result a) -> Result (T a)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Read va, Synthesizer.LLVM.Frame.SerialVector.Class.Read vb, Synthesizer.LLVM.Frame.SerialVector.Class.Read vc, Synthesizer.LLVM.Frame.SerialVector.Class.Size va Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size vb Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vc) => Synthesizer.LLVM.Frame.SerialVector.Class.Read (va, vb, vc)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Read va, Synthesizer.LLVM.Frame.SerialVector.Class.Read vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size va Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb) => Synthesizer.LLVM.Frame.SerialVector.Class.Read (va, vb)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Sized va, Synthesizer.LLVM.Frame.SerialVector.Class.Sized vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size va Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb) => Synthesizer.LLVM.Frame.SerialVector.Class.Sized (va, vb)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Sized va, Synthesizer.LLVM.Frame.SerialVector.Class.Sized vb, Synthesizer.LLVM.Frame.SerialVector.Class.Sized vc, Synthesizer.LLVM.Frame.SerialVector.Class.Size va Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size vb Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vc) => Synthesizer.LLVM.Frame.SerialVector.Class.Sized (va, vb, vc)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write va, Synthesizer.LLVM.Frame.SerialVector.Class.Write vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size va Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb) => Synthesizer.LLVM.Frame.SerialVector.Class.Write (va, vb)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write va, Synthesizer.LLVM.Frame.SerialVector.Class.Write vb, Synthesizer.LLVM.Frame.SerialVector.Class.Write vc, Synthesizer.LLVM.Frame.SerialVector.Class.Size va Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size vb Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vc) => Synthesizer.LLVM.Frame.SerialVector.Class.Write (va, vb, vc)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Zero va, Synthesizer.LLVM.Frame.SerialVector.Class.Zero vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size va Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb) => Synthesizer.LLVM.Frame.SerialVector.Class.Zero (va, vb)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Zero va, Synthesizer.LLVM.Frame.SerialVector.Class.Zero vb, Synthesizer.LLVM.Frame.SerialVector.Class.Zero vc, Synthesizer.LLVM.Frame.SerialVector.Class.Size va Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size vb Data.Type.Equality.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vc) => Synthesizer.LLVM.Frame.SerialVector.Class.Zero (va, vb, vc)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Read (LLVM.Extra.Multi.Vector.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Read (Synthesizer.LLVM.Frame.SerialVector.Class.Serial n a)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Write (LLVM.Extra.Multi.Vector.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Write (Synthesizer.LLVM.Frame.SerialVector.Class.Serial n a)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Zero (LLVM.Extra.Multi.Vector.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Zero (Synthesizer.LLVM.Frame.SerialVector.Class.Serial n a)
- Synthesizer.LLVM.Frame.SerialVector.Class: instance Type.Data.Num.Decimal.Number.Positive n => Synthesizer.LLVM.Frame.SerialVector.Class.Sized (LLVM.Extra.Multi.Vector.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Class: type family Size v
- Synthesizer.LLVM.Frame.SerialVector.Code: fromMultiVector :: T n a -> Value n a
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Value.Storable.Vector a, LLVM.Extra.Multi.Vector.C a) => LLVM.Extra.Multi.Value.Storable.C (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.Additive a) => LLVM.Extra.Multi.Value.Private.Additive (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.Algebraic a) => LLVM.Extra.Multi.Value.Private.Algebraic (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.C a) => LLVM.Extra.Multi.Value.Private.C (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.Field a) => LLVM.Extra.Multi.Value.Private.Field (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.Fraction a) => LLVM.Extra.Multi.Value.Private.Fraction (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.IntegerConstant a) => LLVM.Extra.Multi.Value.Private.IntegerConstant (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.PseudoRing a) => LLVM.Extra.Multi.Value.Private.PseudoRing (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.RationalConstant a) => LLVM.Extra.Multi.Value.Private.RationalConstant (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.Real a) => LLVM.Extra.Multi.Value.Private.Real (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Multi.Vector.Transcendental a) => LLVM.Extra.Multi.Value.Private.Transcendental (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, n Data.Type.Equality.~ m, LLVM.Extra.Multi.Vector.NativeFloating n a ar, LLVM.Extra.Multi.Value.Private.NativeFloating a ar) => LLVM.Extra.Multi.Value.Vector.NativeFloating (Synthesizer.LLVM.Frame.SerialVector.Code.T n a) (LLVM.Core.Data.Vector m ar)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, n Data.Type.Equality.~ m, LLVM.Extra.Multi.Vector.NativeInteger n a ar, LLVM.Extra.Multi.Value.Private.NativeInteger a ar) => LLVM.Extra.Multi.Value.Vector.NativeInteger (Synthesizer.LLVM.Frame.SerialVector.Code.T n a) (LLVM.Core.Data.Vector m ar)
- Synthesizer.LLVM.Frame.SerialVector.Code: instance LLVM.Extra.Multi.Value.Marshal.Vector n a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
- Synthesizer.LLVM.Frame.SerialVector.Code: toMultiVector :: Value n a -> T n a
- Synthesizer.LLVM.Frame.Stereo: consMultiValue :: T a -> T a -> T (T a)
- Synthesizer.LLVM.Frame.Stereo: instance (LLVM.Extra.Multi.Value.Storable.Vector l, LLVM.Extra.Multi.Vector.C l) => LLVM.Extra.Multi.Value.Storable.Vector (Sound.Frame.Stereo.T l)
- Synthesizer.LLVM.Frame.Stereo: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Sound.Frame.Stereo.T e) (Sound.Frame.Stereo.T mv)
- Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Multi.Value.Marshal.C l => LLVM.Extra.Multi.Value.Marshal.C (Sound.Frame.Stereo.T l)
- Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Multi.Value.Private.Additive a => LLVM.Extra.Multi.Value.Private.Additive (Sound.Frame.Stereo.T a)
- Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Sound.Frame.Stereo.T a)
- Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Multi.Value.Private.Compose a => LLVM.Extra.Multi.Value.Private.Compose (Sound.Frame.Stereo.T a)
- Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Multi.Value.Private.Decompose p => LLVM.Extra.Multi.Value.Private.Decompose (Sound.Frame.Stereo.T p)
- Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Multi.Value.Storable.C l => LLVM.Extra.Multi.Value.Storable.C (Sound.Frame.Stereo.T l)
- Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Multi.Vector.C a => LLVM.Extra.Multi.Vector.C (Sound.Frame.Stereo.T a)
- Synthesizer.LLVM.Frame.Stereo: multiValue :: T (T a) -> T (T a)
- Synthesizer.LLVM.Frame.Stereo: multiValueSerial :: T (T (T n a)) -> T (T n (T a))
- Synthesizer.LLVM.Frame.Stereo: multiVector :: T (T n a) -> T n (T a)
- Synthesizer.LLVM.Frame.Stereo: unMultiValue :: T (T a) -> T (T a)
- Synthesizer.LLVM.Frame.Stereo: unMultiValueSerial :: T (T n (T a)) -> T (T (T n a))
- Synthesizer.LLVM.Frame.Stereo: unMultiVector :: T n (T a) -> T (T n a)
- Synthesizer.LLVM.Generator.Core: type MV a = T (T a)
- Synthesizer.LLVM.Generator.Render: build :: (Run f, C p) => T (WithShape (Shape f)) p (DSL f) f
- Synthesizer.LLVM.Generator.Render: class RunArg a
- Synthesizer.LLVM.Generator.Render: instance (Synthesizer.LLVM.Private.Render.RunArg a, Synthesizer.LLVM.Generator.Render.Run f) => Synthesizer.LLVM.Generator.Render.Run (a -> f)
- Synthesizer.LLVM.Generator.Render: instance LLVM.Extra.Multi.Value.Storable.C a => Synthesizer.LLVM.Generator.Render.Run (Data.StorableVector.Base.Vector a)
- Synthesizer.LLVM.Generator.Render: instance LLVM.Extra.Multi.Value.Storable.C a => Synthesizer.LLVM.Generator.Render.Run (Data.StorableVector.Lazy.Vector a)
- Synthesizer.LLVM.Generator.Render: instance LLVM.Extra.Multi.Value.Storable.C a => Synthesizer.LLVM.Generator.Render.RunIO (Data.StorableVector.Base.Vector a)
- Synthesizer.LLVM.Generator.Render: instance LLVM.Extra.Multi.Value.Storable.C a => Synthesizer.LLVM.Generator.Render.RunIO (Data.StorableVector.Lazy.Vector a)
- Synthesizer.LLVM.Generator.Render: type family DSLArg a
- Synthesizer.LLVM.Generator.Signal: type MV a = T (T a)
- Synthesizer.LLVM.Generator.Source: instance Foreign.Storable.Storable a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.LLVM.Generator.Source.StorableVector a)
- Synthesizer.LLVM.Generator.Source: instance Foreign.Storable.Storable a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.LLVM.Generator.Source.StorableVector a)
- Synthesizer.LLVM.Interpolation: instance LLVM.Extra.Multi.Value.Private.C (Synthesizer.LLVM.Interpolation.Margin nodes)
- Synthesizer.LLVM.MIDI.BendModulation: instance LLVM.DSL.Expression.Aggregate e mv => LLVM.DSL.Expression.Aggregate (Synthesizer.MIDI.Value.BendModulation.T e) (Synthesizer.MIDI.Value.BendModulation.T mv)
- Synthesizer.LLVM.MIDI.BendModulation: instance LLVM.Extra.Multi.Value.Marshal.C l => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.MIDI.Value.BendModulation.T l)
- Synthesizer.LLVM.MIDI.BendModulation: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.MIDI.Value.BendModulation.T a)
- Synthesizer.LLVM.MIDI.BendModulation: instance LLVM.Extra.Multi.Value.Storable.C l => LLVM.Extra.Multi.Value.Storable.C (Synthesizer.MIDI.Value.BendModulation.T l)
- Synthesizer.LLVM.MIDI.BendModulation: multiValue :: T (T a) -> T (T a)
- Synthesizer.LLVM.MIDI.BendModulation: unMultiValue :: T (T a) -> T (T a)
- Synthesizer.LLVM.Plug.Input: instance (LLVM.Extra.Multi.Value.Marshal.C a, time Data.Type.Equality.~ Numeric.NonNegative.Wrapper.Int) => Synthesizer.LLVM.Plug.Input.Default (Data.EventList.Relative.BodyTimePrivate.T time a)
- Synthesizer.LLVM.Plug.Input: instance LLVM.Extra.Multi.Value.Storable.C a => Synthesizer.LLVM.Plug.Input.Default (Data.StorableVector.Base.Vector a)
- Synthesizer.LLVM.Plug.Input: instance Synthesizer.LLVM.Plug.Input.Default Synthesizer.Generic.Signal.LazySize
- Synthesizer.LLVM.Plug.Input: type family Element a;
- Synthesizer.LLVM.Plug.Output: instance LLVM.Extra.Multi.Value.Storable.C a => Synthesizer.LLVM.Plug.Output.Default (Data.StorableVector.Base.Vector a)
- Synthesizer.LLVM.Plug.Output: type family Element b;
- Synthesizer.LLVM.Server.Common: data family InputArg signal a;
- Synthesizer.LLVM.Server.Common: instance (Synthesizer.LLVM.Server.Common.Input signal b, a Data.Type.Equality.~ b) => Synthesizer.LLVM.Server.Common.ArgTuple a (Synthesizer.LLVM.Server.Common.InputArg signal b)
- Synthesizer.LLVM.Server.Common: instance (Synthesizer.LLVM.Server.Common.Quantity quantity b, a Data.Type.Equality.~ b) => Synthesizer.LLVM.Server.Common.ArgTuple a (Synthesizer.LLVM.Server.Common.Arg quantity b)
- Synthesizer.LLVM.Server.Common: instance (a Data.Type.Equality.~ b) => Synthesizer.LLVM.Server.Common.Wrapped a (Synthesizer.LLVM.Server.Common.SampleRate b -> f)
- Synthesizer.LLVM.Server.Common: instance (a Data.Type.Equality.~ b, Synthesizer.LLVM.Server.Common.Input signal b, Synthesizer.LLVM.Server.Common.Wrapped a f) => Synthesizer.LLVM.Server.Common.Wrapped a (Synthesizer.LLVM.Server.Common.InputArg signal b -> f)
- Synthesizer.LLVM.Server.Common: instance (a Data.Type.Equality.~ b, Synthesizer.LLVM.Server.Common.Quantity quantity b, Synthesizer.LLVM.Server.Common.Wrapped a f) => Synthesizer.LLVM.Server.Common.Wrapped a (Synthesizer.LLVM.Server.Common.Arg quantity b -> f)
- Synthesizer.LLVM.Server.Common: instance LLVM.Extra.Multi.Value.Marshal.C a => LLVM.Extra.Multi.Value.Marshal.C (Synthesizer.LLVM.Server.Common.SampleRate a)
- Synthesizer.LLVM.Server.Common: instance LLVM.Extra.Multi.Value.Private.C a => LLVM.Extra.Multi.Value.Private.C (Synthesizer.LLVM.Server.Common.SampleRate a)
- Synthesizer.LLVM.Server.Common: instance Synthesizer.LLVM.Private.Render.RunArg a => Synthesizer.LLVM.Private.Render.RunArg (Synthesizer.LLVM.Server.Common.SampleRate a)
- Synthesizer.LLVM.Server.Common: type family Unwrapped f;
- Synthesizer.LLVM.Server.Packed.Instrument: data family InputArg signal a
- Synthesizer.LLVM.Server.Packed.Instrument: instance (a Data.Type.Equality.~ LLVM.DSL.Expression.Exp b, LLVM.Extra.Multi.Value.Private.Field b, LLVM.Extra.Multi.Value.Private.RationalConstant b) => Synthesizer.LLVM.Server.Common.Input (Synthesizer.LLVM.Server.Packed.Instrument.DetuneModulation b) a
- Synthesizer.LLVM.Server.Packed.Instrument: instance (a Data.Type.Equality.~ LLVM.DSL.Expression.Exp b, LLVM.Extra.Multi.Value.Private.Field b, LLVM.Extra.Multi.Value.Private.RationalConstant b) => Synthesizer.LLVM.Server.Common.Input (Synthesizer.LLVM.Server.Packed.Instrument.FrequencyControl b) a
- Synthesizer.LLVM.Server.Packed.Instrument: instance (a Data.Type.Equality.~ LLVM.DSL.Expression.Exp b, LLVM.Extra.Multi.Value.Private.Field b, LLVM.Extra.Multi.Value.Private.RationalConstant b) => Synthesizer.LLVM.Server.Common.Input (Synthesizer.LLVM.Server.Packed.Instrument.Modulation b) a
+ Synthesizer.LLVM.Causal.Controlled: instance (LLVM.Extra.Arithmetic.PseudoModule v, LLVM.Extra.Arithmetic.Scalar v GHC.Types.~ a, LLVM.Extra.Arithmetic.RationalConstant a, LLVM.Extra.Memory.C a, LLVM.Extra.Memory.C v) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a) v (Synthesizer.Plain.Filter.Recursive.Universal.Result v)
+ Synthesizer.LLVM.Causal.Controlled: instance (LLVM.Extra.Nice.Value.Marshal.C a, LLVM.Extra.Nice.Value.Marshal.Vector Type.Data.Num.Decimal.Literal.D4 a, LLVM.Extra.Nice.Vector.PseudoRing a) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.LLVM.Filter.SecondOrderPacked.Parameter a) (LLVM.Extra.Nice.Value.Private.T a) (LLVM.Extra.Nice.Value.Private.T a)
+ Synthesizer.LLVM.Causal.Controlled: instance (LLVM.Extra.Nice.Value.Marshal.Vector n a, n GHC.Types.~ Type.Data.Num.Decimal.Literal.D3, LLVM.Extra.Nice.Vector.PseudoRing a, inp GHC.Types.~ LLVM.Extra.Nice.Value.Private.T a, out GHC.Types.~ LLVM.Extra.Nice.Value.Private.T a) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterNice a) (Sound.Frame.Stereo.T inp) (Sound.Frame.Stereo.T out)
+ Synthesizer.LLVM.Causal.Controlled: instance (a GHC.Types.~ LLVM.Extra.Arithmetic.Scalar v, LLVM.Extra.Arithmetic.PseudoModule v, LLVM.Extra.Arithmetic.RationalConstant a, LLVM.Extra.Memory.C a, LLVM.Extra.Memory.C v) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter a) v v
+ Synthesizer.LLVM.Causal.Controlled: instance (a GHC.Types.~ LLVM.Extra.Nice.Value.Private.Scalar v, LLVM.Extra.Nice.Value.Private.PseudoModule v, LLVM.Extra.Nice.Value.Marshal.C a, LLVM.Extra.Nice.Value.Private.IntegerConstant a, LLVM.Extra.Nice.Value.Marshal.C v, Type.Data.Num.Decimal.Number.Natural n, Type.Data.Num.Decimal.Number.Positive (n Type.Data.Num.Decimal.Number.:*: LLVM.Core.Type.UnknownSize), inp GHC.Types.~ LLVM.Extra.Nice.Value.Private.T v, out GHC.Types.~ LLVM.Extra.Nice.Value.Private.T v) => Synthesizer.LLVM.Causal.Controlled.C (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a) inp out
+ Synthesizer.LLVM.Causal.Controlled: type Input parameter b;
+ Synthesizer.LLVM.Causal.Controlled: type Output parameter a;
+ Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v GHC.Types.~ LLVM.Extra.Nice.Value.Private.T a, LLVM.Extra.Memory.C v, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.IntegerConstant v, LLVM.Extra.Nice.Value.Marshal.C a, LLVM.Extra.Nice.Value.Private.PseudoRing a, LLVM.Extra.Nice.Value.Private.IntegerConstant a, Type.Data.Num.Decimal.Number.Positive (n Type.Data.Num.Decimal.Number.:*: LLVM.Core.Type.UnknownSize), Type.Data.Num.Decimal.Number.Natural n) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a) v v
+ Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v GHC.Types.~ a, LLVM.Extra.Arithmetic.PseudoRing a, LLVM.Extra.Arithmetic.IntegerConstant a, LLVM.Extra.Memory.C a, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.IntegerConstant v) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter a) v v
+ Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v GHC.Types.~ a, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.IntegerConstant v, LLVM.Extra.Arithmetic.PseudoRing a, LLVM.Extra.Arithmetic.IntegerConstant a, LLVM.DSL.Expression.Aggregate ae a, LLVM.Extra.TuplePrivate.Phi a, LLVM.Extra.TuplePrivate.Undefined a, LLVM.Extra.Memory.C a) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.Plain.Filter.Recursive.FirstOrder.Parameter a) v (Synthesizer.Plain.Filter.Recursive.FirstOrder.Result v)
+ Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v GHC.Types.~ a, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.IntegerConstant v, LLVM.Extra.Arithmetic.PseudoRing a, LLVM.Extra.Arithmetic.IntegerConstant a, LLVM.DSL.Expression.Aggregate ae a, LLVM.Extra.TuplePrivate.Phi a, LLVM.Extra.TuplePrivate.Undefined a, LLVM.Extra.Memory.C a, LLVM.Extra.Memory.C v) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter a) v v
+ Synthesizer.LLVM.Causal.ControlledPacked: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v GHC.Types.~ b, LLVM.Extra.Memory.C b, LLVM.Extra.TuplePrivate.Phi a, LLVM.Extra.TuplePrivate.Undefined a, LLVM.DSL.Expression.Aggregate ae a, LLVM.DSL.Expression.Aggregate be b, Algebra.Module.C ae be) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a) v (Synthesizer.Plain.Filter.Recursive.Universal.Result v)
+ Synthesizer.LLVM.Causal.ControlledPacked: instance (Type.Data.Num.Decimal.Number.Natural n, Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v GHC.Types.~ a, LLVM.Extra.Arithmetic.PseudoRing a, LLVM.Extra.Arithmetic.IntegerConstant a, LLVM.Extra.Memory.C a, LLVM.Extra.Arithmetic.PseudoRing v, LLVM.Extra.Arithmetic.RationalConstant v) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.LLVM.Filter.Allpass.CascadeParameter n a) v v
+ Synthesizer.LLVM.Causal.ControlledPacked: instance (Type.Data.Num.Decimal.Number.Natural n, Synthesizer.LLVM.Frame.SerialVector.Class.Write v, Synthesizer.LLVM.Frame.SerialVector.Class.Element v GHC.Types.~ b, LLVM.Extra.Memory.C b, LLVM.Extra.TuplePrivate.Phi a, LLVM.Extra.TuplePrivate.Undefined a, LLVM.DSL.Expression.Aggregate ae a, LLVM.DSL.Expression.Aggregate be b, Algebra.Module.C ae be) => Synthesizer.LLVM.Causal.ControlledPacked.C (Synthesizer.LLVM.Filter.Moog.Parameter n a) v v
+ Synthesizer.LLVM.Causal.ControlledPacked: type Input parameter b;
+ Synthesizer.LLVM.Causal.ControlledPacked: type Output parameter a;
+ Synthesizer.LLVM.Causal.Exponential2: instance LLVM.DSL.Expression.Aggregate exp nv => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Causal.Exponential2.Parameter exp) (Synthesizer.LLVM.Causal.Exponential2.Parameter nv)
+ Synthesizer.LLVM.Causal.Exponential2: instance LLVM.DSL.Expression.Aggregate exp nv => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Causal.Exponential2.ParameterPacked exp) (Synthesizer.LLVM.Causal.Exponential2.ParameterPacked nv)
+ Synthesizer.LLVM.Causal.Exponential2: instance LLVM.Extra.Nice.Value.Marshal.C a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.LLVM.Causal.Exponential2.Parameter a)
+ Synthesizer.LLVM.Causal.Exponential2: instance LLVM.Extra.Nice.Value.Marshal.C a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.LLVM.Causal.Exponential2.ParameterPacked a)
+ Synthesizer.LLVM.Causal.Exponential2: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.LLVM.Causal.Exponential2.Parameter a)
+ Synthesizer.LLVM.Causal.Exponential2: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.LLVM.Causal.Exponential2.ParameterPacked a)
+ Synthesizer.LLVM.Causal.Exponential2: niceValueParameter :: Parameter (T a) -> T (Parameter a)
+ Synthesizer.LLVM.Causal.Exponential2: niceValueParameterPacked :: ParameterPacked (T a) -> T (ParameterPacked a)
+ Synthesizer.LLVM.Causal.Exponential2: unNiceValueParameter :: T (Parameter a) -> Parameter (T a)
+ Synthesizer.LLVM.Causal.Exponential2: unNiceValueParameterPacked :: T (ParameterPacked a) -> ParameterPacked (T a)
+ Synthesizer.LLVM.Causal.Functional: instance (GHC.Base.Functor f, f GHC.Types.~ g) => Synthesizer.LLVM.Causal.Functional.MakeGroundArguments f (Synthesizer.LLVM.Causal.Functional.Ground g a)
+ Synthesizer.LLVM.Causal.Functional: instance Synthesizer.LLVM.Causal.Functional.MakeArguments (LLVM.Extra.Nice.Value.Private.T a)
+ Synthesizer.LLVM.Causal.Process: foldChunks :: (Undefined b, Phi b) => T a b -> T a -> T (T Word) b
+ Synthesizer.LLVM.Causal.Process: foldChunksPartial :: (Undefined a, Phi a, Undefined b, Phi b) => T a b -> T a -> T (T Word) b
+ Synthesizer.LLVM.Causal.Process: type Nice a b = T (T a) (T b)
+ Synthesizer.LLVM.Causal.Render: argument :: Argument a => T a (DSLArg a)
+ Synthesizer.LLVM.Causal.Render: class Argument a
+ Synthesizer.LLVM.Causal.Render: class Run f
+ Synthesizer.LLVM.Causal.Render: function :: (Run f, C p) => T (Plugs f a b) p (DSL f a b) f
+ Synthesizer.LLVM.Causal.Render: instance (Synthesizer.LLVM.Private.Render.Argument a, Synthesizer.LLVM.Causal.Render.Run f) => Synthesizer.LLVM.Causal.Render.Run (a -> f)
+ Synthesizer.LLVM.Causal.Render: instance Synthesizer.Generic.Cut.Consume a => Synthesizer.LLVM.Causal.Render.Run (Synthesizer.CausalIO.Process.T a b)
+ Synthesizer.LLVM.Causal.Render: type DSL f a b
+ Synthesizer.LLVM.Causal.Render: type DSLArg a
+ Synthesizer.LLVM.Causal.Render: type In f
+ Synthesizer.LLVM.Causal.Render: type Out f
+ Synthesizer.LLVM.Complex: instance LLVM.Extra.Nice.Value.Marshal.C a => LLVM.Extra.Nice.Value.Marshal.C (Number.Complex.T a)
+ Synthesizer.LLVM.Complex: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Number.Complex.T a)
+ Synthesizer.LLVM.Filter.Allpass: instance (LLVM.DSL.Expression.Aggregate e nv, n GHC.Types.~ m) => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Filter.Allpass.CascadeParameter n e) (Synthesizer.LLVM.Filter.Allpass.CascadeParameter m nv)
+ Synthesizer.LLVM.Filter.Allpass: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter e) (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter nv)
+ Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Nice.Value.Marshal.C a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.LLVM.Filter.Allpass.CascadeParameter n a)
+ Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Nice.Value.Marshal.C a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter a)
+ Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.LLVM.Filter.Allpass.CascadeParameter n a)
+ Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter a)
+ Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Nice.Vector.C a => LLVM.Extra.Nice.Vector.C (Synthesizer.LLVM.Filter.Allpass.CascadeParameter m a)
+ Synthesizer.LLVM.Filter.Allpass: instance LLVM.Extra.Nice.Vector.C a => LLVM.Extra.Nice.Vector.C (Synthesizer.Plain.Filter.Recursive.Allpass.Parameter a)
+ Synthesizer.LLVM.Filter.Allpass: niceValueCascadeParameter :: CascadeParameter n (T a) -> T (CascadeParameter n a)
+ Synthesizer.LLVM.Filter.Allpass: unNiceValueCascadeParameter :: T (CascadeParameter n a) -> CascadeParameter n (T a)
+ Synthesizer.LLVM.Filter.ComplexFirstOrder: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Filter.ComplexFirstOrder.Parameter e) (Synthesizer.LLVM.Filter.ComplexFirstOrder.Parameter nv)
+ Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: data ParameterNice a
+ Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: instance LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterExp a) (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterNice a)
+ Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: instance LLVM.Extra.Nice.Value.Marshal.Vector Type.Data.Num.Decimal.Literal.D3 a => LLVM.Extra.Memory.C (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterNice a)
+ Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: instance LLVM.Extra.Nice.Vector.C a => LLVM.Extra.TuplePrivate.Phi (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterNice a)
+ Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: instance LLVM.Extra.Nice.Vector.C a => LLVM.Extra.TuplePrivate.Undefined (Synthesizer.LLVM.Filter.ComplexFirstOrderPacked.ParameterNice a)
+ Synthesizer.LLVM.Filter.FirstOrder: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.FirstOrder.Parameter e) (Synthesizer.Plain.Filter.Recursive.FirstOrder.Parameter nv)
+ Synthesizer.LLVM.Filter.FirstOrder: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.FirstOrder.Result e) (Synthesizer.Plain.Filter.Recursive.FirstOrder.Result nv)
+ Synthesizer.LLVM.Filter.FirstOrder: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.Plain.Filter.Recursive.FirstOrder.Parameter a)
+ Synthesizer.LLVM.Filter.FirstOrder: instance LLVM.Extra.Nice.Value.Private.Compose a => LLVM.Extra.Nice.Value.Private.Compose (Synthesizer.Plain.Filter.Recursive.FirstOrder.Parameter a)
+ Synthesizer.LLVM.Filter.FirstOrder: instance LLVM.Extra.Nice.Value.Private.Decompose a => LLVM.Extra.Nice.Value.Private.Decompose (Synthesizer.Plain.Filter.Recursive.FirstOrder.Parameter a)
+ Synthesizer.LLVM.Filter.Moog: instance (n GHC.Types.~ m, LLVM.DSL.Expression.Aggregate e nv) => LLVM.DSL.Expression.Aggregate (Synthesizer.LLVM.Filter.Moog.Parameter n e) (Synthesizer.LLVM.Filter.Moog.Parameter m nv)
+ Synthesizer.LLVM.Filter.SecondOrder: composeParameterNice :: C a => Parameter (T a) -> CodeGenFunction r (Value (Struct (Parameter a)))
+ Synthesizer.LLVM.Filter.SecondOrder: decomposeParameterNice :: C a => Value (Struct (Parameter a)) -> CodeGenFunction r (Parameter (T a))
+ Synthesizer.LLVM.Filter.SecondOrder: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter e) (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter nv)
+ Synthesizer.LLVM.Filter.SecondOrder: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.SecondOrder.State e) (Synthesizer.Plain.Filter.Recursive.SecondOrder.State nv)
+ Synthesizer.LLVM.Filter.SecondOrder: instance LLVM.Extra.Nice.Value.Marshal.C a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter a)
+ Synthesizer.LLVM.Filter.SecondOrder: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.Plain.Filter.Recursive.SecondOrder.Parameter a)
+ Synthesizer.LLVM.Filter.SecondOrderCascade: instance (Type.Data.Num.Decimal.Number.Natural n, LLVM.Extra.Nice.Value.Marshal.C a) => LLVM.Extra.TuplePrivate.Phi (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a)
+ Synthesizer.LLVM.Filter.SecondOrderCascade: instance (Type.Data.Num.Decimal.Number.Natural n, LLVM.Extra.Nice.Value.Marshal.C a) => LLVM.Extra.TuplePrivate.Undefined (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a)
+ Synthesizer.LLVM.Filter.SecondOrderCascade: instance (Type.Data.Num.Decimal.Number.Natural n, LLVM.Extra.Nice.Value.Marshal.C a) => LLVM.Extra.TuplePrivate.Zero (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a)
+ Synthesizer.LLVM.Filter.SecondOrderCascade: instance (Type.Data.Num.Decimal.Number.Natural n, LLVM.Extra.Nice.Value.Marshal.C a, Type.Data.Num.Decimal.Number.Positive (n Type.Data.Num.Decimal.Number.:*: LLVM.Core.Type.UnknownSize)) => LLVM.Extra.Memory.C (Synthesizer.LLVM.Filter.SecondOrderCascade.ParameterValue n a)
+ Synthesizer.LLVM.Filter.SecondOrderPacked: instance (LLVM.Extra.Nice.Value.Marshal.C a, LLVM.Extra.Nice.Value.Marshal.Vector Type.Data.Num.Decimal.Literal.D4 a) => LLVM.Extra.Memory.C (Synthesizer.LLVM.Filter.SecondOrderPacked.Parameter a)
+ Synthesizer.LLVM.Filter.SecondOrderPacked: instance LLVM.Extra.Nice.Vector.C a => LLVM.Extra.TuplePrivate.Phi (Synthesizer.LLVM.Filter.SecondOrderPacked.Parameter a)
+ Synthesizer.LLVM.Filter.SecondOrderPacked: instance LLVM.Extra.Nice.Vector.C a => LLVM.Extra.TuplePrivate.Undefined (Synthesizer.LLVM.Filter.SecondOrderPacked.Parameter a)
+ Synthesizer.LLVM.Filter.Universal: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.Universal.Parameter e) (Synthesizer.Plain.Filter.Recursive.Universal.Parameter nv)
+ Synthesizer.LLVM.Filter.Universal: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Synthesizer.Plain.Filter.Recursive.Universal.Result e) (Synthesizer.Plain.Filter.Recursive.Universal.Result nv)
+ Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Nice.Value.Marshal.C a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a)
+ Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Nice.Value.Marshal.C a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.Plain.Filter.Recursive.Universal.Result a)
+ Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a)
+ Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.Plain.Filter.Recursive.Universal.Result a)
+ Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Nice.Value.Private.Compose a => LLVM.Extra.Nice.Value.Private.Compose (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a)
+ Synthesizer.LLVM.Filter.Universal: instance LLVM.Extra.Nice.Value.Private.Decompose a => LLVM.Extra.Nice.Value.Private.Decompose (Synthesizer.Plain.Filter.Recursive.Universal.Parameter a)
+ Synthesizer.LLVM.Filter.Universal: niceValueParameter :: Parameter (T a) -> T (Parameter a)
+ Synthesizer.LLVM.Filter.Universal: niceValueResult :: Result (T a) -> T (Result a)
+ Synthesizer.LLVM.Filter.Universal: parameterAtoms :: Parameter (Atom a)
+ Synthesizer.LLVM.Filter.Universal: unNiceValueParameter :: T (Parameter a) -> Parameter (T a)
+ Synthesizer.LLVM.Filter.Universal: unNiceValueResult :: T (Result a) -> Result (T a)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Read va, Synthesizer.LLVM.Frame.SerialVector.Class.Read vb, Synthesizer.LLVM.Frame.SerialVector.Class.Read vc, Synthesizer.LLVM.Frame.SerialVector.Class.Size va GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size vb GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vc) => Synthesizer.LLVM.Frame.SerialVector.Class.Read (va, vb, vc)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Read va, Synthesizer.LLVM.Frame.SerialVector.Class.Read vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size va GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb) => Synthesizer.LLVM.Frame.SerialVector.Class.Read (va, vb)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Sized va, Synthesizer.LLVM.Frame.SerialVector.Class.Sized vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size va GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb) => Synthesizer.LLVM.Frame.SerialVector.Class.Sized (va, vb)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Sized va, Synthesizer.LLVM.Frame.SerialVector.Class.Sized vb, Synthesizer.LLVM.Frame.SerialVector.Class.Sized vc, Synthesizer.LLVM.Frame.SerialVector.Class.Size va GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size vb GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vc) => Synthesizer.LLVM.Frame.SerialVector.Class.Sized (va, vb, vc)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write va, Synthesizer.LLVM.Frame.SerialVector.Class.Write vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size va GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb) => Synthesizer.LLVM.Frame.SerialVector.Class.Write (va, vb)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Write va, Synthesizer.LLVM.Frame.SerialVector.Class.Write vb, Synthesizer.LLVM.Frame.SerialVector.Class.Write vc, Synthesizer.LLVM.Frame.SerialVector.Class.Size va GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size vb GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vc) => Synthesizer.LLVM.Frame.SerialVector.Class.Write (va, vb, vc)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Zero va, Synthesizer.LLVM.Frame.SerialVector.Class.Zero vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size va GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb) => Synthesizer.LLVM.Frame.SerialVector.Class.Zero (va, vb)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Synthesizer.LLVM.Frame.SerialVector.Class.Zero va, Synthesizer.LLVM.Frame.SerialVector.Class.Zero vb, Synthesizer.LLVM.Frame.SerialVector.Class.Zero vc, Synthesizer.LLVM.Frame.SerialVector.Class.Size va GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vb, Synthesizer.LLVM.Frame.SerialVector.Class.Size vb GHC.Types.~ Synthesizer.LLVM.Frame.SerialVector.Class.Size vc) => Synthesizer.LLVM.Frame.SerialVector.Class.Zero (va, vb, vc)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Read (LLVM.Extra.Nice.Vector.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Read (Synthesizer.LLVM.Frame.SerialVector.Class.Serial n a)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Write (LLVM.Extra.Nice.Vector.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Write (Synthesizer.LLVM.Frame.SerialVector.Class.Serial n a)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Zero (LLVM.Extra.Nice.Vector.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.C a) => Synthesizer.LLVM.Frame.SerialVector.Class.Zero (Synthesizer.LLVM.Frame.SerialVector.Class.Serial n a)
+ Synthesizer.LLVM.Frame.SerialVector.Class: instance Type.Data.Num.Decimal.Number.Positive n => Synthesizer.LLVM.Frame.SerialVector.Class.Sized (LLVM.Extra.Nice.Vector.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Class: type Element v
+ Synthesizer.LLVM.Frame.SerialVector.Class: type ReadIt v
+ Synthesizer.LLVM.Frame.SerialVector.Class: type Size v
+ Synthesizer.LLVM.Frame.SerialVector.Class: type WriteIt v
+ Synthesizer.LLVM.Frame.SerialVector.Code: fromNiceVector :: T n a -> Value n a
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Value.Storable.Vector a, LLVM.Extra.Nice.Vector.C a) => LLVM.Extra.Nice.Value.Storable.C (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.Additive a) => LLVM.Extra.Nice.Value.Private.Additive (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.Algebraic a) => LLVM.Extra.Nice.Value.Private.Algebraic (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.C a) => LLVM.Extra.Nice.Value.Private.C (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.Field a) => LLVM.Extra.Nice.Value.Private.Field (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.Fraction a) => LLVM.Extra.Nice.Value.Private.Fraction (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.IntegerConstant a) => LLVM.Extra.Nice.Value.Private.IntegerConstant (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.PseudoRing a) => LLVM.Extra.Nice.Value.Private.PseudoRing (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.RationalConstant a) => LLVM.Extra.Nice.Value.Private.RationalConstant (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.Real a) => LLVM.Extra.Nice.Value.Private.Real (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, LLVM.Extra.Nice.Vector.Transcendental a) => LLVM.Extra.Nice.Value.Private.Transcendental (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, n GHC.Types.~ m, LLVM.Extra.Nice.Vector.NativeFloating n a ar, LLVM.Extra.Nice.Value.Private.NativeFloating a ar) => LLVM.Extra.Nice.Value.Vector.NativeFloating (Synthesizer.LLVM.Frame.SerialVector.Code.T n a) (LLVM.Core.Data.Vector m ar)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance (Type.Data.Num.Decimal.Number.Positive n, n GHC.Types.~ m, LLVM.Extra.Nice.Vector.NativeInteger n a ar, LLVM.Extra.Nice.Value.Private.NativeInteger a ar) => LLVM.Extra.Nice.Value.Vector.NativeInteger (Synthesizer.LLVM.Frame.SerialVector.Code.T n a) (LLVM.Core.Data.Vector m ar)
+ Synthesizer.LLVM.Frame.SerialVector.Code: instance LLVM.Extra.Nice.Value.Marshal.Vector n a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.LLVM.Frame.SerialVector.Code.T n a)
+ Synthesizer.LLVM.Frame.SerialVector.Code: toNiceVector :: Value n a -> T n a
+ Synthesizer.LLVM.Frame.Stereo: consNiceValue :: T a -> T a -> T (T a)
+ Synthesizer.LLVM.Frame.Stereo: instance (LLVM.Extra.Nice.Value.Storable.Vector l, LLVM.Extra.Nice.Vector.C l) => LLVM.Extra.Nice.Value.Storable.Vector (Sound.Frame.Stereo.T l)
+ Synthesizer.LLVM.Frame.Stereo: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Sound.Frame.Stereo.T e) (Sound.Frame.Stereo.T nv)
+ Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Nice.Value.Marshal.C l => LLVM.Extra.Nice.Value.Marshal.C (Sound.Frame.Stereo.T l)
+ Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Nice.Value.Private.Additive a => LLVM.Extra.Nice.Value.Private.Additive (Sound.Frame.Stereo.T a)
+ Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Sound.Frame.Stereo.T a)
+ Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Nice.Value.Private.Compose a => LLVM.Extra.Nice.Value.Private.Compose (Sound.Frame.Stereo.T a)
+ Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Nice.Value.Private.Decompose p => LLVM.Extra.Nice.Value.Private.Decompose (Sound.Frame.Stereo.T p)
+ Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Nice.Value.Storable.C l => LLVM.Extra.Nice.Value.Storable.C (Sound.Frame.Stereo.T l)
+ Synthesizer.LLVM.Frame.Stereo: instance LLVM.Extra.Nice.Vector.C a => LLVM.Extra.Nice.Vector.C (Sound.Frame.Stereo.T a)
+ Synthesizer.LLVM.Frame.Stereo: niceValue :: T (T a) -> T (T a)
+ Synthesizer.LLVM.Frame.Stereo: niceValueSerial :: T (T (T n a)) -> T (T n (T a))
+ Synthesizer.LLVM.Frame.Stereo: niceVector :: T (T n a) -> T n (T a)
+ Synthesizer.LLVM.Frame.Stereo: unNiceValue :: T (T a) -> T (T a)
+ Synthesizer.LLVM.Frame.Stereo: unNiceValueSerial :: T (T n (T a)) -> T (T (T n a))
+ Synthesizer.LLVM.Frame.Stereo: unNiceVector :: T n (T a) -> T (T n a)
+ Synthesizer.LLVM.Generator.Core: type Nice a = T (T a)
+ Synthesizer.LLVM.Generator.Render: argument :: Argument a => T a (DSLArg a)
+ Synthesizer.LLVM.Generator.Render: class Argument a
+ Synthesizer.LLVM.Generator.Render: class Run f
+ Synthesizer.LLVM.Generator.Render: function :: (Run f, C p) => T (WithShape (Shape f)) p (DSL f) f
+ Synthesizer.LLVM.Generator.Render: instance (Synthesizer.LLVM.Private.Render.Argument a, Synthesizer.LLVM.Generator.Render.Run f) => Synthesizer.LLVM.Generator.Render.Run (a -> f)
+ Synthesizer.LLVM.Generator.Render: instance LLVM.Extra.Nice.Value.Storable.C a => Synthesizer.LLVM.Generator.Render.Run (Data.StorableVector.Base.Vector a)
+ Synthesizer.LLVM.Generator.Render: instance LLVM.Extra.Nice.Value.Storable.C a => Synthesizer.LLVM.Generator.Render.Run (Data.StorableVector.Lazy.Vector a)
+ Synthesizer.LLVM.Generator.Render: instance LLVM.Extra.Nice.Value.Storable.C a => Synthesizer.LLVM.Generator.Render.RunIO (Data.StorableVector.Base.Vector a)
+ Synthesizer.LLVM.Generator.Render: instance LLVM.Extra.Nice.Value.Storable.C a => Synthesizer.LLVM.Generator.Render.RunIO (Data.StorableVector.Lazy.Vector a)
+ Synthesizer.LLVM.Generator.Render: type DSL f
+ Synthesizer.LLVM.Generator.Render: type DSLArg a
+ Synthesizer.LLVM.Generator.Render: type Shape f
+ Synthesizer.LLVM.Generator.Signal: type Nice a = T (T a)
+ Synthesizer.LLVM.Generator.Source: instance Foreign.Storable.Storable a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.LLVM.Generator.Source.StorableVector a)
+ Synthesizer.LLVM.Generator.Source: instance Foreign.Storable.Storable a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.LLVM.Generator.Source.StorableVector a)
+ Synthesizer.LLVM.Interpolation: instance LLVM.Extra.Nice.Value.Private.C (Synthesizer.LLVM.Interpolation.Margin nodes)
+ Synthesizer.LLVM.MIDI.BendModulation: instance LLVM.DSL.Expression.Aggregate e nv => LLVM.DSL.Expression.Aggregate (Synthesizer.MIDI.Value.BendModulation.T e) (Synthesizer.MIDI.Value.BendModulation.T nv)
+ Synthesizer.LLVM.MIDI.BendModulation: instance LLVM.Extra.Nice.Value.Marshal.C l => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.MIDI.Value.BendModulation.T l)
+ Synthesizer.LLVM.MIDI.BendModulation: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.MIDI.Value.BendModulation.T a)
+ Synthesizer.LLVM.MIDI.BendModulation: instance LLVM.Extra.Nice.Value.Storable.C l => LLVM.Extra.Nice.Value.Storable.C (Synthesizer.MIDI.Value.BendModulation.T l)
+ Synthesizer.LLVM.MIDI.BendModulation: niceValue :: T (T a) -> T (T a)
+ Synthesizer.LLVM.MIDI.BendModulation: unNiceValue :: T (T a) -> T (T a)
+ Synthesizer.LLVM.Plug.Input: instance (LLVM.Extra.Nice.Value.Marshal.C a, time GHC.Types.~ Numeric.NonNegative.Wrapper.Int) => Synthesizer.LLVM.Plug.Input.Default (Data.EventList.Relative.BodyTimePrivate.T time a)
+ Synthesizer.LLVM.Plug.Input: instance LLVM.Extra.Nice.Value.Storable.C a => Synthesizer.LLVM.Plug.Input.Default (Data.StorableVector.Base.Vector a)
+ Synthesizer.LLVM.Plug.Input: instance Synthesizer.LLVM.Plug.Input.Default Synthesizer.ChunkySize.LazySize
+ Synthesizer.LLVM.Plug.Input: type Element a;
+ Synthesizer.LLVM.Plug.Output: instance LLVM.Extra.Nice.Value.Storable.C a => Synthesizer.LLVM.Plug.Output.Default (Data.StorableVector.Base.Vector a)
+ Synthesizer.LLVM.Plug.Output: type Element b;
+ Synthesizer.LLVM.Server.Common: data Arg quantity a;
+ Synthesizer.LLVM.Server.Common: data InputArg signal a;
+ Synthesizer.LLVM.Server.Common: instance (Synthesizer.LLVM.Server.Common.Input signal b, a GHC.Types.~ b) => Synthesizer.LLVM.Server.Common.ArgTuple a (Synthesizer.LLVM.Server.Common.InputArg signal b)
+ Synthesizer.LLVM.Server.Common: instance (Synthesizer.LLVM.Server.Common.Quantity quantity b, a GHC.Types.~ b) => Synthesizer.LLVM.Server.Common.ArgTuple a (Synthesizer.LLVM.Server.Common.Arg quantity b)
+ Synthesizer.LLVM.Server.Common: instance (a GHC.Types.~ b) => Synthesizer.LLVM.Server.Common.Wrapped a (Synthesizer.LLVM.Server.Common.SampleRate b -> f)
+ Synthesizer.LLVM.Server.Common: instance (a GHC.Types.~ b, Synthesizer.LLVM.Server.Common.Input signal b, Synthesizer.LLVM.Server.Common.Wrapped a f) => Synthesizer.LLVM.Server.Common.Wrapped a (Synthesizer.LLVM.Server.Common.InputArg signal b -> f)
+ Synthesizer.LLVM.Server.Common: instance (a GHC.Types.~ b, Synthesizer.LLVM.Server.Common.Quantity quantity b, Synthesizer.LLVM.Server.Common.Wrapped a f) => Synthesizer.LLVM.Server.Common.Wrapped a (Synthesizer.LLVM.Server.Common.Arg quantity b -> f)
+ Synthesizer.LLVM.Server.Common: instance LLVM.Extra.Nice.Value.Marshal.C a => LLVM.Extra.Nice.Value.Marshal.C (Synthesizer.LLVM.Server.Common.SampleRate a)
+ Synthesizer.LLVM.Server.Common: instance LLVM.Extra.Nice.Value.Private.C a => LLVM.Extra.Nice.Value.Private.C (Synthesizer.LLVM.Server.Common.SampleRate a)
+ Synthesizer.LLVM.Server.Common: instance Synthesizer.LLVM.Private.Render.Argument a => Synthesizer.LLVM.Private.Render.Argument (Synthesizer.LLVM.Server.Common.SampleRate a)
+ Synthesizer.LLVM.Server.Common: type ArgPlain tuple;
+ Synthesizer.LLVM.Server.Common: type InputSource signal a;
+ Synthesizer.LLVM.Server.Common: type Unwrapped f;
+ Synthesizer.LLVM.Server.Packed.Instrument: data InputArg signal a
+ Synthesizer.LLVM.Server.Packed.Instrument: instance (a GHC.Types.~ LLVM.DSL.Expression.Exp b, LLVM.Extra.Nice.Value.Private.Field b, LLVM.Extra.Nice.Value.Private.RationalConstant b) => Synthesizer.LLVM.Server.Common.Input (Synthesizer.LLVM.Server.Packed.Instrument.DetuneModulation b) a
+ Synthesizer.LLVM.Server.Packed.Instrument: instance (a GHC.Types.~ LLVM.DSL.Expression.Exp b, LLVM.Extra.Nice.Value.Private.Field b, LLVM.Extra.Nice.Value.Private.RationalConstant b) => Synthesizer.LLVM.Server.Common.Input (Synthesizer.LLVM.Server.Packed.Instrument.FrequencyControl b) a
+ Synthesizer.LLVM.Server.Packed.Instrument: instance (a GHC.Types.~ LLVM.DSL.Expression.Exp b, LLVM.Extra.Nice.Value.Private.Field b, LLVM.Extra.Nice.Value.Private.RationalConstant b) => Synthesizer.LLVM.Server.Common.Input (Synthesizer.LLVM.Server.Packed.Instrument.Modulation b) a
+ Synthesizer.LLVM.Value: infix 0 ??
+ Synthesizer.LLVM.Value: infix 4 %>=
+ Synthesizer.LLVM.Value: infixr 2 %||
+ Synthesizer.LLVM.Value: infixr 3 %&&
- Synthesizer.LLVM.Causal.FunctionalPlug: plug :: (Read b, Default b) => Input pp a b -> T pp a (Element b)
+ Synthesizer.LLVM.Causal.FunctionalPlug: plug :: (Consume b, Default b) => Input pp a b -> T pp a (Element b)
- Synthesizer.LLVM.Causal.Helix: zigZag :: C a => (Select a, Comparison a, Fraction a) => (Field a, RationalConstant a) => Exp a -> MV a a
+ Synthesizer.LLVM.Causal.Helix: zigZag :: C a => (Select a, Comparison a, Fraction a) => (Field a, RationalConstant a) => Exp a -> Nice a a
- Synthesizer.LLVM.Causal.Helix: zigZagLong :: C a => (Select a, Comparison a, Fraction a) => (Field a, RationalConstant a) => Exp a -> Exp a -> MV a a
+ Synthesizer.LLVM.Causal.Helix: zigZagLong :: C a => (Select a, Comparison a, Fraction a) => (Field a, RationalConstant a) => Exp a -> Exp a -> Nice a a
- Synthesizer.LLVM.Causal.Process: comb :: (C a, PseudoRing a) => Exp a -> Exp Word -> MV a a
+ Synthesizer.LLVM.Causal.Process: comb :: (C a, PseudoRing a) => Exp a -> Exp Word -> Nice a a
- Synthesizer.LLVM.Causal.Process: frequencyModulationLinear :: (PseudoRing a, IntegerConstant a, Comparison a, C a) => MV a -> MV a a
+ Synthesizer.LLVM.Causal.Process: frequencyModulationLinear :: (PseudoRing a, IntegerConstant a, Comparison a, C a) => Nice a -> Nice a a
- Synthesizer.LLVM.Causal.Process: raise :: (C a, Additive a) => Exp a -> MV a a
+ Synthesizer.LLVM.Causal.Process: raise :: (C a, Additive a) => Exp a -> Nice a a
- Synthesizer.LLVM.Causal.Process: reverbExplicit :: (Natural n, (n :*: UnknownSize) ~ paramSize, Natural paramSize) => (C a, Field a, Real a, IntegerConstant a) => Exp (Array n (a, Word)) -> MV a a
+ Synthesizer.LLVM.Causal.Process: reverbExplicit :: (Natural n, (n :*: UnknownSize) ~ paramSize, Natural paramSize) => (C a, Field a, Real a, IntegerConstant a) => Exp (Array n (a, Word)) -> Nice a a
- Synthesizer.LLVM.Causal.Render: processIO :: (C p, Read a, Default a, Default d) => (Exp p -> T (Element a) (Element d)) -> IO (p -> T a d)
+ Synthesizer.LLVM.Causal.Render: processIO :: (C p, Consume a, Default a, Default d) => (Exp p -> T (Element a) (Element d)) -> IO (p -> T a d)
- Synthesizer.LLVM.Causal.Render: processIOParametric :: (C p, Read a, x ~ Value (Ptr (Struct p))) => T a b -> T x b c -> T c d -> IO (Creator p -> T a d)
+ Synthesizer.LLVM.Causal.Render: processIOParametric :: (C p, Consume a, x ~ Value (Ptr (Struct p))) => T a b -> T x b c -> T c d -> IO (Creator p -> T a d)
- Synthesizer.LLVM.Complex: (+:) :: () => a -> a -> T a
+ Synthesizer.LLVM.Complex: (+:) :: a -> a -> T a
- Synthesizer.LLVM.Complex: data T a
+ Synthesizer.LLVM.Complex: data () => T a
- Synthesizer.LLVM.Filter.Allpass: data Parameter a
+ Synthesizer.LLVM.Filter.Allpass: data () => Parameter a
- Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: causal :: (Vector n a, n ~ D3, PseudoRing a) => T (ParameterMV a, T (T a)) (T (T a))
+ Synthesizer.LLVM.Filter.ComplexFirstOrderPacked: causal :: (Vector n a, n ~ D3, PseudoRing a) => T (ParameterNice a, T (T a)) (T (T a))
- Synthesizer.LLVM.Filter.FirstOrder: data Parameter a
+ Synthesizer.LLVM.Filter.FirstOrder: data () => Parameter a
- Synthesizer.LLVM.Filter.FirstOrder: data Result a
+ Synthesizer.LLVM.Filter.FirstOrder: data () => Result a
- Synthesizer.LLVM.Filter.SecondOrder: data Parameter a
+ Synthesizer.LLVM.Filter.SecondOrder: data () => Parameter a
- Synthesizer.LLVM.Filter.Universal: data Parameter a
+ Synthesizer.LLVM.Filter.Universal: data () => Parameter a
- Synthesizer.LLVM.Filter.Universal: data Result a
+ Synthesizer.LLVM.Filter.Universal: data () => Result a
- Synthesizer.LLVM.Frame.Stereo: cons :: () => a -> a -> T a
+ Synthesizer.LLVM.Frame.Stereo: cons :: a -> a -> T a
- Synthesizer.LLVM.Frame.Stereo: data Channel
+ Synthesizer.LLVM.Frame.Stereo: data () => Channel
- Synthesizer.LLVM.Frame.Stereo: data T a
+ Synthesizer.LLVM.Frame.Stereo: data () => T a
- Synthesizer.LLVM.Frame.Stereo: interleave :: () => (T a, T b) -> T (a, b)
+ Synthesizer.LLVM.Frame.Stereo: interleave :: (T a, T b) -> T (a, b)
- Synthesizer.LLVM.Frame.Stereo: select :: () => T a -> Channel -> a
+ Synthesizer.LLVM.Frame.Stereo: select :: T a -> Channel -> a
- Synthesizer.LLVM.Frame.Stereo: swap :: () => T a -> T a
+ Synthesizer.LLVM.Frame.Stereo: swap :: T a -> T a
- Synthesizer.LLVM.Generator.Core: exponential :: (C a, PseudoRing a) => Exp a -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Core: exponential :: (C a, PseudoRing a) => Exp a -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Core: exponentialBounded :: (C a, PseudoRing a, Real a, IntegerConstant a) => Exp a -> Exp a -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Core: exponentialBounded :: (C a, PseudoRing a, Real a, IntegerConstant a) => Exp a -> Exp a -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Core: iterate :: C a => (Exp a -> Exp a) -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Core: iterate :: C a => (Exp a -> Exp a) -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Core: iterateParam :: (C a, C b) => (Exp b -> Exp a -> Exp a) -> Exp b -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Core: iterateParam :: (C a, C b) => (Exp b -> Exp a -> Exp a) -> Exp b -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Core: noise :: Exp Word32 -> MV Word32
+ Synthesizer.LLVM.Generator.Core: noise :: Exp Word32 -> Nice Word32
- Synthesizer.LLVM.Generator.Core: noiseAlt :: Exp Word32 -> MV Word32
+ Synthesizer.LLVM.Generator.Core: noiseAlt :: Exp Word32 -> Nice Word32
- Synthesizer.LLVM.Generator.Core: osci :: (Fraction t, C t) => Exp t -> Exp t -> MV t
+ Synthesizer.LLVM.Generator.Core: osci :: (Fraction t, C t) => Exp t -> Exp t -> Nice t
- Synthesizer.LLVM.Generator.Core: parabola :: (C a, Additive a) => Exp a -> Exp a -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Core: parabola :: (C a, Additive a) => Exp a -> Exp a -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Core: ramp :: (C a, Additive a) => Exp a -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Core: ramp :: (C a, Additive a) => Exp a -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Signal: exponential2 :: C a => Real a => RationalConstant a => Transcendental a => Exp a -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Signal: exponential2 :: C a => Real a => RationalConstant a => Transcendental a => Exp a -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Signal: exponentialBounded2 :: C a => Real a => RationalConstant a => Transcendental a => Exp a -> Exp a -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Signal: exponentialBounded2 :: C a => Real a => RationalConstant a => Transcendental a => Exp a -> Exp a -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Signal: fromArray :: (Natural n, C a) => ((n :*: SizeOf (Struct a)) ~ arrSize, Natural arrSize) => Exp (Array n a) -> MV a
+ Synthesizer.LLVM.Generator.Signal: fromArray :: (Natural n, C a) => ((n :*: SizeOf (Struct a)) ~ arrSize, Natural arrSize) => Exp (Array n a) -> Nice a
- Synthesizer.LLVM.Generator.Signal: iterate :: C a => (Exp a -> Exp a) -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Signal: iterate :: C a => (Exp a -> Exp a) -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Signal: noise :: (C a, Transcendental a, RationalConstant a, NativeFloating a ar) => Exp Word32 -> Exp a -> MV a
+ Synthesizer.LLVM.Generator.Signal: noise :: (C a, Transcendental a, RationalConstant a, NativeFloating a ar) => Exp Word32 -> Exp a -> Nice a
- Synthesizer.LLVM.Generator.Signal: parabolaFadeIn :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a
+ Synthesizer.LLVM.Generator.Signal: parabolaFadeIn :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> Nice a
- Synthesizer.LLVM.Generator.Signal: parabolaFadeInInf :: (C a, Field a, IntegerConstant a) => Exp a -> MV a
+ Synthesizer.LLVM.Generator.Signal: parabolaFadeInInf :: (C a, Field a, IntegerConstant a) => Exp a -> Nice a
- Synthesizer.LLVM.Generator.Signal: parabolaFadeInMap :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a
+ Synthesizer.LLVM.Generator.Signal: parabolaFadeInMap :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> Nice a
- Synthesizer.LLVM.Generator.Signal: parabolaFadeOut :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a
+ Synthesizer.LLVM.Generator.Signal: parabolaFadeOut :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> Nice a
- Synthesizer.LLVM.Generator.Signal: parabolaFadeOutInf :: (C a, Field a, IntegerConstant a) => Exp a -> MV a
+ Synthesizer.LLVM.Generator.Signal: parabolaFadeOutInf :: (C a, Field a, IntegerConstant a) => Exp a -> Nice a
- Synthesizer.LLVM.Generator.Signal: parabolaFadeOutMap :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a
+ Synthesizer.LLVM.Generator.Signal: parabolaFadeOutMap :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> Nice a
- Synthesizer.LLVM.Generator.Signal: ramp :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> MV a
+ Synthesizer.LLVM.Generator.Signal: ramp :: (C a, Field a, IntegerConstant a, NativeFloating a ar) => Exp Word -> Nice a
- Synthesizer.LLVM.Generator.Signal: rampInf :: (C a, Field a, IntegerConstant a) => Exp a -> MV a
+ Synthesizer.LLVM.Generator.Signal: rampInf :: (C a, Field a, IntegerConstant a) => Exp a -> Nice a
- Synthesizer.LLVM.Generator.Signal: rampSlope :: (C a, Field a, IntegerConstant a) => Exp a -> MV a
+ Synthesizer.LLVM.Generator.Signal: rampSlope :: (C a, Field a, IntegerConstant a) => Exp a -> Nice a
- Synthesizer.LLVM.MIDI.BendModulation: data T a
+ Synthesizer.LLVM.MIDI.BendModulation: data () => T a
- Synthesizer.LLVM.Server.CausalPacked.Instrument: reorderEnvelopeControl :: (Arrow arrow, Read remainder) => arrow (WithEnvelopeControl remainder) (T EnvelopeControl remainder)
+ Synthesizer.LLVM.Server.CausalPacked.Instrument: reorderEnvelopeControl :: (Arrow arrow, Consume remainder) => arrow (WithEnvelopeControl remainder) (T EnvelopeControl remainder)
- Synthesizer.LLVM.Value: class Flatten value
+ Synthesizer.LLVM.Value: class () => Flatten value
- Synthesizer.LLVM.Value: constantValue :: () => a -> T a
+ Synthesizer.LLVM.Value: constantValue :: a -> T a
- Synthesizer.LLVM.Value: data T a
+ Synthesizer.LLVM.Value: data () => T a
- Synthesizer.LLVM.Value: decons :: () => T a -> forall r. () => CodeGenFunction r a
+ Synthesizer.LLVM.Value: decons :: T a -> forall r. () => CodeGenFunction r a
- Synthesizer.LLVM.Value: lift0 :: () => (forall r. () => CodeGenFunction r a) -> T a
+ Synthesizer.LLVM.Value: lift0 :: (forall r. () => CodeGenFunction r a) -> T a
- Synthesizer.LLVM.Value: lift1 :: () => (forall r. () => a -> CodeGenFunction r b) -> T a -> T b
+ Synthesizer.LLVM.Value: lift1 :: (forall r. () => a -> CodeGenFunction r b) -> T a -> T b
- Synthesizer.LLVM.Value: lift2 :: () => (forall r. () => a -> b -> CodeGenFunction r c) -> T a -> T b -> T c
+ Synthesizer.LLVM.Value: lift2 :: (forall r. () => a -> b -> CodeGenFunction r c) -> T a -> T b -> T c
- Synthesizer.LLVM.Value: lift3 :: () => (forall r. () => a -> b -> c -> CodeGenFunction r d) -> T a -> T b -> T c -> T d
+ Synthesizer.LLVM.Value: lift3 :: (forall r. () => a -> b -> c -> CodeGenFunction r d) -> T a -> T b -> T c -> T d
- Synthesizer.LLVM.Value: type family Registers value :: Type
+ Synthesizer.LLVM.Value: type family Registers value
Files
- alsa/Synthesizer/LLVM/Server/CausalPacked/Run.hs +2/−2
- alsa/Synthesizer/LLVM/Server/CausalPacked/Test.hs +5/−5
- alsa/Synthesizer/LLVM/Server/Packed/Run.hs +5/−5
- alsa/Synthesizer/LLVM/Server/Packed/Test.hs +10/−10
- alsa/Synthesizer/LLVM/Server/Scalar/Run.hs +2/−2
- example/Synthesizer/LLVM/Experiment.hs +243/−0
- example/Synthesizer/LLVM/LAC2011.hs +10/−10
- example/Synthesizer/LLVM/LNdW2011.hs +13/−13
- example/Synthesizer/LLVM/Test.hs +95/−94
- server/Synthesizer/LLVM/Server/CausalPacked/Arrange.hs +9/−9
- src/Synthesizer/LLVM/Causal/Controlled.hs +17/−17
- src/Synthesizer/LLVM/Causal/ControlledPacked.hs +6/−6
- src/Synthesizer/LLVM/Causal/Exponential2.hs +58/−58
- src/Synthesizer/LLVM/Causal/Functional.hs +3/−3
- src/Synthesizer/LLVM/Causal/FunctionalPlug.hs +3/−3
- src/Synthesizer/LLVM/Causal/Helix.hs +88/−88
- src/Synthesizer/LLVM/Causal/Parametric.hs +4/−4
- src/Synthesizer/LLVM/Causal/Private.hs +7/−7
- src/Synthesizer/LLVM/Causal/Process.hs +118/−67
- src/Synthesizer/LLVM/Causal/ProcessPacked.hs +15/−15
- src/Synthesizer/LLVM/Causal/Render.hs +27/−25
- src/Synthesizer/LLVM/Causal/RingBufferForward.hs +13/−13
- src/Synthesizer/LLVM/Complex.hs +18/−18
- src/Synthesizer/LLVM/EventIterator.hs +1/−1
- src/Synthesizer/LLVM/Filter/Allpass.hs +119/−120
- src/Synthesizer/LLVM/Filter/Butterworth.hs +11/−11
- src/Synthesizer/LLVM/Filter/Chebyshev.hs +19/−19
- src/Synthesizer/LLVM/Filter/ComplexFirstOrder.hs +4/−4
- src/Synthesizer/LLVM/Filter/ComplexFirstOrderPacked.hs +39/−39
- src/Synthesizer/LLVM/Filter/FirstOrder.hs +51/−8
- src/Synthesizer/LLVM/Filter/Moog.hs +4/−4
- src/Synthesizer/LLVM/Filter/NonRecursive.hs +15/−15
- src/Synthesizer/LLVM/Filter/SecondOrder.hs +42/−42
- src/Synthesizer/LLVM/Filter/SecondOrderCascade.hs +18/−18
- src/Synthesizer/LLVM/Filter/SecondOrderPacked.hs +25/−25
- src/Synthesizer/LLVM/Filter/Universal.hs +66/−47
- src/Synthesizer/LLVM/ForeignPtr.hs +6/−6
- src/Synthesizer/LLVM/Frame/SerialVector.hs +18/−18
- src/Synthesizer/LLVM/Frame/SerialVector/Class.hs +21/−21
- src/Synthesizer/LLVM/Frame/SerialVector/Code.hs +117/−117
- src/Synthesizer/LLVM/Frame/Stereo.hs +72/−72
- src/Synthesizer/LLVM/Frame/StereoInterleaved.hs +5/−5
- src/Synthesizer/LLVM/Frame/StereoInterleavedCode.hs +49/−49
- src/Synthesizer/LLVM/Generator/Core.hs +19/−19
- src/Synthesizer/LLVM/Generator/Extra.hs +5/−5
- src/Synthesizer/LLVM/Generator/Render.hs +39/−37
- src/Synthesizer/LLVM/Generator/Signal.hs +33/−33
- src/Synthesizer/LLVM/Generator/SignalPacked.hs +21/−21
- src/Synthesizer/LLVM/Generator/Source.hs +16/−16
- src/Synthesizer/LLVM/Interpolation.hs +22/−22
- src/Synthesizer/LLVM/MIDI.hs +10/−10
- src/Synthesizer/LLVM/MIDI/BendModulation.hs +25/−25
- src/Synthesizer/LLVM/Plug/Input.hs +25/−25
- src/Synthesizer/LLVM/Plug/Output.hs +10/−10
- src/Synthesizer/LLVM/Private.hs +3/−3
- src/Synthesizer/LLVM/Private/Render.hs +39/−39
- src/Synthesizer/LLVM/Server/CausalPacked/Instrument.hs +32/−32
- src/Synthesizer/LLVM/Server/CausalPacked/InstrumentPlug.hs +6/−6
- src/Synthesizer/LLVM/Server/CausalPacked/Speech.hs +22/−21
- src/Synthesizer/LLVM/Server/CausalPacked/SpeechExplore.hs +3/−3
- src/Synthesizer/LLVM/Server/Common.hs +24/−24
- src/Synthesizer/LLVM/Server/Packed/Instrument.hs +47/−47
- src/Synthesizer/LLVM/Server/Scalar/Instrument.hs +5/−5
- src/Synthesizer/LLVM/Storable/Process.hs +3/−3
- src/Synthesizer/LLVM/Storable/Signal.hs +8/−8
- synthesizer-llvm.cabal +16/−15
- testsuite/Test/Synthesizer/LLVM/Filter.hs +21/−21
- testsuite/Test/Synthesizer/LLVM/Helix.hs +4/−4
- testsuite/Test/Synthesizer/LLVM/RingBufferForward.hs +2/−2
- testsuite/Test/Synthesizer/LLVM/Utility.hs +20/−20
alsa/Synthesizer/LLVM/Server/CausalPacked/Run.hs view
@@ -172,13 +172,13 @@ formant = do opt <- Option.get proc <-- Arrange.keyboardDetuneFMCore (arr Stereo.multiValue)+ Arrange.keyboardDetuneFMCore (arr Stereo.niceValue) (Option.sampleDirectory opt) form <- Speech.filterFormant mix <- CausalRender.run Causal.mix interleave <- CausalRender.run- (Causal.map StereoInt.interleave <<^ Stereo.unMultiValue)+ (Causal.map StereoInt.interleave <<^ Stereo.unNiceValue) playFromEvents opt $ \ sampleRate -> arr SigStL.unpackStereoStrict
alsa/Synthesizer/LLVM/Server/CausalPacked/Test.hs view
@@ -104,7 +104,7 @@ -- see playFromEvents writeTest ::- (CutG.Read t, Storable a) =>+ (CutG.Consume t, Storable a) => PIO.T t (SV.Vector a) -> [t] -> IO () writeTest (PIO.Cons next create delete) evsChunky = IO.withFile "/tmp/test.f32" IO.WriteMode $ \h ->@@ -236,7 +236,7 @@ CausalRender.run (Causal.map StereoInt.interleave <<< Causal.envelopeStereo <<<- Causal.map Serial.upsample *** arr Stereo.unMultiValue)+ Causal.map Serial.upsample *** arr Stereo.unNiceValue) ping <- Instr.pingStereoReleaseFM @@ -326,7 +326,7 @@ amp <- CausalRender.run- (Causal.map StereoInt.interleave <<^ Stereo.unMultiValue)+ (Causal.map StereoInt.interleave <<^ Stereo.unNiceValue) tomatoSmps <- makeSampledSounds opt @@ -398,7 +398,7 @@ amp <- CausalRender.run- (Causal.map StereoInt.interleave <<^ Stereo.unMultiValue)+ (Causal.map StereoInt.interleave <<^ Stereo.unNiceValue) tomatoSmps <- makeSampledSounds opt @@ -531,7 +531,7 @@ makeUnpackStereoStrict = fmap (SigStL.unpackStereoStrict ^<<) $ CausalRender.run- (Causal.map StereoInt.interleave <<^ Stereo.unMultiValue)+ (Causal.map StereoInt.interleave <<^ Stereo.unNiceValue) {- makeUnpackStereoStrict :: IO (SV.Vector (Stereo.T Vector) -> SV.Vector (Stereo.T Real))
alsa/Synthesizer/LLVM/Server/Packed/Run.hs view
@@ -142,7 +142,7 @@ amp <- CausalRender.run $ \vol -> Causal.map StereoInt.interleave <<<- CausalPS.amplifyStereo vol <<^ Stereo.unMultiValue+ CausalPS.amplifyStereo vol <<^ Stereo.unNiceValue arrange <- SigStL.makeArranger withMIDIEventsStereo opt play $ \vectorChunkSize sampleRate -> pioApply (amp (0.2 :: Real)) .@@ -158,7 +158,7 @@ amp <- CausalRender.run $ \vol -> Causal.map StereoInt.interleave <<<- CausalPS.amplifyStereo vol <<^ Stereo.unMultiValue+ CausalPS.amplifyStereo vol <<^ Stereo.unNiceValue arrange <- SigStL.makeArranger withMIDIEventsStereo opt play $ \vectorChunkSize sampleRate -> pioApply (amp (0.2 :: Real)) .@@ -176,7 +176,7 @@ amp <- CausalRender.run $ \vol -> Causal.map StereoInt.interleave <<<- CausalPS.amplifyStereo vol <<^ Stereo.unMultiValue+ CausalPS.amplifyStereo vol <<^ Stereo.unNiceValue arrange <- SigStL.makeArranger withMIDIEventsStereo opt play $ \vectorChunkSize sampleRate -> pioApply (amp (0.2 :: Real)) .@@ -246,7 +246,7 @@ CausalRender.run $ \ctrl -> (Causal.map StereoInt.interleave <<< Causal.envelopeStereo $< Instr.piecewiseConstantVector ctrl)- <<^ Stereo.unMultiValue+ <<^ Stereo.unNiceValue return $ \chan pgm vcsize sr -> do let evHead =@@ -463,7 +463,7 @@ (Causal.stereoFromMonoControlled (UniFilter.lowpass ^<< UniFilterL.causalExp) $< Sig.interpolateConstant (fromIntegral vectorSize :: Exp Int)- (UniFilterL.unMultiValueParameter <$> piecewiseConstant cutoff))+ (UniFilterL.unNiceValueParameter <$> piecewiseConstant cutoff)) <<< Causal.map StereoInt.deinterleave let lowpass ::
alsa/Synthesizer/LLVM/Server/Packed/Test.hs view
@@ -213,7 +213,7 @@ (\osc smp _fm _vel _freq _dur -> osc chunkSize (Sample.body smp)) (Render.run $ \smp ->- fmap (\x -> Stereo.consMultiValue x x) $ SigPS.pack smp)+ fmap (\x -> Stereo.consNiceValue x x) $ SigPS.pack smp) sampledSoundTest1 :: IO (Sample.T ->@@ -224,7 +224,7 @@ (\osc smp _fm _vel _freq _dur -> osc chunkSize (Sample.body smp)) (Render.run $ \smp ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.stereoFromMono (CausalPS.pack (Causal.frequencyModulationLinear smp)) $* liftA2 Stereo.cons@@ -249,7 +249,7 @@ (Render.run $ wrapped $ \(Signal smp) (Modulation fm) -> constant frequency 3 $ \speed _sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> ((Causal.stereoFromMono (CausalPS.pack (Causal.frequencyModulationLinear smp)) <<<@@ -287,7 +287,7 @@ `SigSt.append` pioApply (osc amp release) releaseFM) (CausalRender.run $ \amp smp ->- Stereo.multiValue <$>+ Stereo.niceValue <$> (CausalPS.amplifyStereo amp <<< Causal.stereoFromMono@@ -355,7 +355,7 @@ sustainFM `SigSt.append` pioApply (osc amp release) releaseFM)- (CausalRender.run $ \ _amp _smp -> arr (\x -> Stereo.consMultiValue x x))+ (CausalRender.run $ \ _amp _smp -> arr (\x -> Stereo.consNiceValue x x)) (CausalRender.run $ wrapped $ \(Modulation fm) -> constant frequency 3 $ \speed _sr ->@@ -378,7 +378,7 @@ in pioApply osc sustainFM `SigSt.append` SigSt.map (\x -> Stereo.cons x x) releaseFM)- (CausalRender.run $ arr (\x -> Stereo.consMultiValue x x))+ (CausalRender.run $ arr (\x -> Stereo.consNiceValue x x)) sampledSoundSmallSpaceLeak4a :: IO (Sample.T ->@@ -394,7 +394,7 @@ pioApply osc (sustainFM :: SigSt.T Vector) `SigSt.append` SigSt.map (\x -> Stereo.cons x x) releaseFM)- (CausalRender.run $ arr (\x -> Stereo.consMultiValue x x))+ (CausalRender.run $ arr (\x -> Stereo.consNiceValue x x)) sampledSoundNoSmallSpaceLeak3 :: IO (Sample.T ->@@ -434,7 +434,7 @@ (amplifySVL sustainFM `SigSt.append` amplifySVL releaseFM))- (CausalRender.run $ arr (\x -> Stereo.consMultiValue x x))+ (CausalRender.run $ arr (\x -> Stereo.consNiceValue x x)) sampledSoundSmallSpaceLeak1 :: IO (Sample.T ->@@ -452,7 +452,7 @@ in pioApply osc sustainFM `SigSt.append` pioApply osc releaseFM)- (CausalRender.run $ arr (\x -> Stereo.consMultiValue x x))+ (CausalRender.run $ arr (\x -> Stereo.consNiceValue x x)) sampledSoundSmallSpaceLeak0 :: IO (Sample.T ->@@ -482,7 +482,7 @@ sustainFM `SigSt.append` pioApply (osc amp release) releaseFM)- (CausalRender.run $ \ _amp _smp -> arr (\x -> Stereo.consMultiValue x x))+ (CausalRender.run $ \ _amp _smp -> arr (\x -> Stereo.consNiceValue x x)) makeSample :: Int -> Sample.T makeSample size =
alsa/Synthesizer/LLVM/Server/Scalar/Run.hs view
@@ -82,7 +82,7 @@ Causal.osci WaveL.triangle $< zero $* (MIDIL.frequencyFromBendModulation speed- $* piecewiseConstant (fmap BM.unMultiValue <$> fm))+ $* piecewiseConstant (fmap BM.unNiceValue <$> fm)) withMIDIEvents opt play $ \chunkSize sampleRate -> (id :: SigSt.T Real -> SigSt.T Real) . osc chunkSize sampleRate . transposeModulation sampleRate 880 .@@ -116,7 +116,7 @@ sound <- Instr.pingStereoRelease $/ 0.4 $/ 0.1 amp <- CausalRender.run $ \vol ->- Stereo.multiValue ^<< Causal.amplifyStereo vol <<^ Stereo.unMultiValue+ Stereo.niceValue ^<< Causal.amplifyStereo vol <<^ Stereo.unNiceValue arrange <- SigStL.makeArranger withMIDIEvents opt play $ \chunkSize sampleRate -> pioApply (amp (0.2 :: Real)) .
+ example/Synthesizer/LLVM/Experiment.hs view
@@ -0,0 +1,243 @@+module Synthesizer.LLVM.Experiment where++import Synthesizer.LLVM.ExampleUtility++import qualified Synthesizer.LLVM.Filter.FirstOrder as Filt1+import qualified Synthesizer.LLVM.Filter.Universal as UniFilter+import qualified Synthesizer.LLVM.Causal.Controlled as Ctrl+import qualified Synthesizer.LLVM.Causal.Process as Causal+import qualified Synthesizer.LLVM.Generator.Render as Render+import qualified Synthesizer.LLVM.Generator.Source as Source+import qualified Synthesizer.LLVM.Generator.Signal as Sig+import qualified Synthesizer.LLVM.Wave as Wave+import Synthesizer.LLVM.Causal.Process (($<), ($*), ($<#))++import qualified LLVM.DSL.Expression as Expr+import LLVM.DSL.Expression (Exp, (==*), (<=*), (.&.*))++import qualified LLVM.Extra.Nice.Value as NiceValue++import qualified Synthesizer.Plain.Filter.Recursive.FirstOrder as Filt1Core++import Control.Arrow ((^<<), (<<^))+import Control.Category ((.))++import qualified Data.StorableVector as SV++import Data.Tuple.HT (mapFst)+import Data.Word (Word8)+import System.Random (randomRs, randoms, mkStdGen)++import NumericPrelude.Numeric (fromIntegral, sum, (+), (-), (/), (*))+import Prelude hiding (fst, snd, id, (.), fromIntegral, sum, (+), (-), (/), (*))++++phaserSawSymmetric :: Exp Float -> Sig.T (NiceValue.T Float)+phaserSawSymmetric freq =+ (0.3*) $+ Sig.osci Wave.saw 0.0 (freq*1.003) ++ Sig.osci Wave.saw 0.2 (freq*0.997) ++ Sig.osci Wave.saw 0.1 freq++phaserSawAsymmetric :: Exp Float -> Sig.T (NiceValue.T Float)+phaserSawAsymmetric freq =+ (0.3*) $+ Sig.osci Wave.saw 0.0 (freq*1.001) ++ Sig.osci Wave.saw 0.2 (freq*1.003) ++ Sig.osci Wave.saw 0.1 (freq*0.996)++sigZipWith3 ::+ (Expr.Aggregate ae a) =>+ (Expr.Aggregate be b) =>+ (Expr.Aggregate ce c) =>+ (Expr.Aggregate de d) =>+ (ae -> be -> ce -> de) ->+ Sig.T a -> Sig.T b -> Sig.T c -> Sig.T d+sigZipWith3 f sa sb sc =+ Causal.map (\(a,(b,c)) -> f a b c) $< sa $< sb $* sc++phaserSawMinMax :: Exp Float -> Sig.T (NiceValue.T Float)+phaserSawMinMax freq =+ sigZipWith3+ (\a b c -> (Expr.min a (Expr.min b c) + Expr.max a (Expr.max b c)) / 2)+ (Sig.osci Wave.saw 0.0 (freq*1.001))+ (Sig.osci Wave.saw 0.2 (freq*1.003))+ (Sig.osci Wave.saw 0.1 (freq*0.996))++median3 ::+ (NiceValue.Comparison a, NiceValue.Select a) =>+ Exp a -> Exp a -> Exp a -> Exp a+median3 a b c =+ Expr.with (a<=*b) $ \a_le_b ->+ Expr.with (b<=*c) $ \b_le_c ->+ Expr.with (a<=*c) $ \a_le_c ->+ Expr.select a_le_b+ (Expr.select b_le_c b (Expr.select a_le_c c a))+ (Expr.select a_le_c a (Expr.select b_le_c c b))++phaserSawMedian :: Exp Float -> Sig.T (NiceValue.T Float)+phaserSawMedian freq =+ sigZipWith3 median3+ (Sig.osci Wave.saw 0.0 (freq*1.0001))+ (Sig.osci Wave.saw 0.2 (freq*1.0003))+ (Sig.osci Wave.saw 0.1 (freq*0.9996))++phaserSineMedian :: Exp Float -> Sig.T (NiceValue.T Float)+phaserSineMedian freq =+ sigZipWith3 median3+ (Sig.osci Wave.approxSine4 0.0 (freq*1.0001))+ (Sig.osci Wave.approxSine4 0.2 (freq*1.0003))+ (Sig.osci Wave.approxSine4 0.1 (freq*0.9996))+++harmonicsTremolo0 :: Exp Float -> Sig.T (NiceValue.T Float)+harmonicsTremolo0 freq =+ 0.5 *+ sum (map (\k ->+ recip (fromInteger k) *+ Sig.osci Wave.sine 0 (fromInteger k * freq))+ [1..10])++harmonicsTremolo1 :: Exp Float -> Sig.T (NiceValue.T Float)+harmonicsTremolo1 freq =+ 0.5 *+ sum+ (zipWith3+ (\k lfoPhase lfoFreq ->+ recip (fromInteger k) *+ Sig.osci Wave.sine (Expr.cons lfoPhase)+ (Expr.cons (fromInteger k * lfoFreq)) *+ Sig.osci Wave.sine 0 (fromInteger k * freq))+ [1..10]+{-+ (repeat 0)+ (repeat 1e-5))+-}+ (randomRs (0,1) (mkStdGen 42))+ (let f = 1e-5 in randomRs (0.5*f,3*f) (mkStdGen 23)))++param1 :: NiceValue.T (Filt1.Parameter a) -> Filt1.Parameter (NiceValue.T a)+param1 = NiceValue.decompose (Filt1Core.Parameter NiceValue.atom)++param2 ::+ NiceValue.T (UniFilter.Parameter a) -> UniFilter.Parameter (NiceValue.T a)+param2 = NiceValue.decompose UniFilter.parameterAtoms++harmonicsTremolo2 :: Exp Float -> Sig.T (NiceValue.T Float)+harmonicsTremolo2 freq =+ 100 *+ sum+ (zipWith+ (\k seed ->+ recip (fromInteger k) *+ ((Filt1.lowpassCausal <<^ mapFst param1)+ $<# Filt1.parameter (1e-6 * fromInteger k)+ $* Sig.noise (Expr.cons seed) 1) *+ Sig.osci Wave.sine 0 (fromInteger k * freq))+ [1..10]+ (randoms (mkStdGen 23)))++harmonicsTremolo :: Exp Float -> Sig.T (NiceValue.T Float)+harmonicsTremolo freq =+ 4 *+ sum+ (zipWith+ (\k seed ->+ recip (fromInteger k) *+ ((UniFilter.lowpass ^<< Ctrl.process <<^ mapFst param2)+ -- lower resonance frequency seems to exceed Float precision+ $<# UniFilter.parameter 10 (0.5e-4 * fromInteger k)+ $* Sig.noise (Expr.cons seed) 1) *+ Sig.osci Wave.sine 0 (fromInteger k * freq))+ [1..10]+ (randoms (mkStdGen 23)))++bandpassHarmonics :: Exp Float -> Sig.T (NiceValue.T Float)+bandpassHarmonics freq =+ 0.02 *+ sum+ (zipWith+ (\k seed ->+ recip (fromInteger k) *+ ((UniFilter.lowpass ^<< Ctrl.process)+ $< Sig.constant+ (UniFilter.parameter 1000+ (fromInteger k * freq :: Exp Float))+ $* Sig.noise (Expr.cons seed) 1))+ [1..10]+ (randoms (mkStdGen 23)))+++asciiWave0 :: Exp Float -> Sig.T (NiceValue.T Float)+asciiWave0 freq =+ let char :: Exp Word8+ char = Expr.cons $ fromIntegral $ fromEnum 'Y' in+ let wave t =+ Expr.select+ (Expr.shr char (Expr.floorToInt (t*8)) .&.* 1 ==* 0) (-1) 1 in+ Sig.osci (Expr.unliftM1 wave) 0 freq++asciiWave1 :: Exp Float -> Sig.T (NiceValue.T Float)+asciiWave1 freq =+ let char :: Exp Word8+ char = Expr.cons $ fromIntegral $ fromEnum 'Y' in+ let wave t =+ Expr.select+ (Expr.shr char (Expr.floorToInt (t*8)) .&.* 1 ==* 0) (-1) 1 in+ (0.7 *) $+ ((Filt1.highpassCausal <<^ mapFst param1)+ $<# Filt1.parameter (1e-4)+ $* Sig.osci (Expr.unliftM1 wave) 0 freq)++asciiWavePulse ::+ Exp (Source.StorableVector Word8) ->+ Exp Float -> Sig.T (NiceValue.T Float)+asciiWavePulse str freq =+ let wave char t =+ Expr.select+ (Expr.shr char (Expr.floorToInt (t*8)) .&.* 1 ==* 0) (-1) 1 in+ (0.5 *) $+ ((Filt1.highpassCausal <<^ mapFst param1)+ $<# Filt1.parameter (1e-3)+ $* (Causal.shapeModOsci (Expr.unliftM2 wave)+ $< Sig.interpolateConstant+ (10000::Exp Float) (Source.storableVector str)+ $* Sig.constant (Expr.zero, freq)))++asciiWaveSaw ::+ Exp (Source.StorableVector Word8) ->+ Exp Float -> Sig.T (NiceValue.T Float)+asciiWaveSaw str freq =+ let wave char t =+ Expr.with (8*t) $ \t8 ->+ Expr.select+ (Expr.shr char (Expr.floorToInt t8) .&.* 1 ==* 0)+ (2 * Expr.fraction t8 - 1)+ (1 - 2 * Expr.fraction t8) in+ Causal.shapeModOsci (Expr.unliftM2 wave)+ $< Sig.interpolateConstant+ (10000::Exp Float) (Source.storableVector str)+ $* Sig.constant (Expr.zero, freq)+++render :: Sig.T (NiceValue.T Float) -> IO ()+render sig =+ SV.writeFile "experiment.f32" . asMono . ($ 1000000) =<<+ Render.run sig+++main :: IO ()+main =+ case fromInteger 4 :: Integer of+ 0 -> render (phaserSawMedian 0.01)+ 1 -> render (harmonicsTremolo 0.01)+ 2 -> render (bandpassHarmonics 0.01)+ 3 -> render (asciiWave1 0.01)+ _4 ->+ SV.writeFile "experiment.f32" . asMono+ . ($ Render.buffer+ (SV.pack (map (fromIntegral.fromEnum) "Hello World!")))+ . ($ 1000000)+ =<<+ Render.run (flip asciiWaveSaw 0.01)
example/Synthesizer/LLVM/LAC2011.hs view
@@ -29,8 +29,8 @@ import qualified LLVM.Extra.ScalarOrVector as SoV import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A-import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Core as LLVM@@ -84,18 +84,18 @@ import qualified NumericPrelude.Base as P -playStereo :: Gen.T (Stereo.T (MultiValue.T Float)) -> IO ()+playStereo :: Gen.T (Stereo.T (NiceValue.T Float)) -> IO () playStereo sig = playStereoStream . ($ SVL.chunkSize 100000) =<<- Render.run (fmap Stereo.multiValue sig)+ Render.run (fmap Stereo.niceValue sig) playStereoStream :: SVL.Vector (Stereo.T Float) -> IO () playStereoStream = playStreamSox -playMono :: Gen.MV Float -> IO ()+playMono :: Gen.Nice Float -> IO () playMono sig = playMonoStream . ($ SVL.chunkSize 100000) =<< Render.run sig -playMonoPacked :: Gen.T (MultiValue.T (Serial.T D4 Float)) -> IO ()+playMonoPacked :: Gen.T (NiceValue.T (Serial.T D4 Float)) -> IO () playMonoPacked = playMonoStream . SigStL.unpack .@@ -109,7 +109,7 @@ {- play :: (C.MakeValueTuple y, Tuple.ValueOf y ~ a, Memory.C a struct) =>- Gen.MV a -> IO ()+ Gen.Nice a -> IO () play = playStreamSox . Gen.renderChunky (SVL.chunkSize 100000)@@ -198,7 +198,7 @@ playMonoStream $ SVL.concat $ map (SVL.take (intSecond 0.2) . png) $ zip (map sin $ [0,0.1..]) (cycle $ map hertz [440, 550, 660, 880]) -retard :: Gen.MV Float -> Gen.MV Float+retard :: Gen.Nice Float -> Gen.Nice Float retard xs = Causal.frequencyModulationLinear xs . Causal.map Field.recip $*@@ -212,7 +212,7 @@ -pingGen :: Gen.MV Float+pingGen :: Gen.Nice Float pingGen = Gen.exponential2 (second 0.5) 0.7 * Gen.osci Wave.triangle 0 (hertz 440)@@ -236,7 +236,7 @@ pingGen) -lfoSine :: Exp Float -> Gen.T (Moog.Parameter D8 (MultiValue.T Float))+lfoSine :: Exp Float -> Gen.T (Moog.Parameter D8 (NiceValue.T Float)) lfoSine reduct = Causal.map (Moog.parameter d8 30 . (hertz 700 *) . (2**)) $*
example/Synthesizer/LLVM/LNdW2011.hs view
@@ -19,7 +19,7 @@ import qualified Synthesizer.MIDI.EventList as Ev import qualified Synthesizer.MIDI.CausalIO.ControllerSelection as MCS import qualified Synthesizer.MIDI.CausalIO.Process as PMIDI-import qualified Synthesizer.MIDI.Value as MV+import qualified Synthesizer.MIDI.Value as Nice import qualified Synthesizer.ALSA.CausalIO.Process as PALSA import qualified Synthesizer.CausalIO.Process as PIO import qualified Synthesizer.Zip as Zip@@ -46,7 +46,7 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.ScalarOrVector as SoV import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A@@ -116,15 +116,15 @@ import qualified NumericPrelude.Base as P -playStereo :: Gen.T (Stereo.T (MultiValue.T Float)) -> IO ()+playStereo :: Gen.T (Stereo.T (NiceValue.T Float)) -> IO () playStereo sig = playStereoStream . ($ SVL.chunkSize 100000) =<<- SigRender.run (fmap Stereo.multiValue sig)+ SigRender.run (fmap Stereo.niceValue sig) playStereoStream :: SVL.Vector (Stereo.T Float) -> IO () playStereoStream = playStreamSox -playMono :: Gen.MV Float -> IO ()+playMono :: Gen.Nice Float -> IO () playMono sig = playMonoStream . ($ SVL.chunkSize 100000) =<< SigRender.run sig @@ -158,7 +158,7 @@ type Vector = Serial.T VectorSize Float type VectorSize = TypeNum.D4-type VectorValue = MultiValue.T Vector+type VectorValue = NiceValue.T Vector vectorSize :: Int vectorSize =@@ -368,8 +368,8 @@ Causal.map (Spatial.moveAround att sonicDelay ear) moveAround2d ::- (ve ~ Exp v, vl ~ MultiValue.T v,- MultiValue.Algebraic v, MultiValue.RationalConstant v) =>+ (ve ~ Exp v, vl ~ NiceValue.T v,+ NiceValue.Algebraic v, NiceValue.RationalConstant v) => ve -> ve -> (ve, ve) -> Causal.T (vl, vl) (vl, vl) moveAround2d att sonicDelay ear = Causal.map $@@ -377,12 +377,12 @@ euclideanNorm2d . subtract ear euclideanNorm2d ::- (MultiValue.Algebraic a) =>+ (NiceValue.Algebraic a) => (Exp a, Exp a) -> Exp a euclideanNorm2d (x,y) = Expr.sqrt $ Expr.sqr x + Expr.sqr y flyChannel ::- (ae ~ Exp Float, al ~ MultiValue.T Float) =>+ (ae ~ Exp Float, al ~ NiceValue.T Float) => (ae, ae) -> Causal.T (al, (al, al)) al flyChannel ear = ((snd ^>> moveAround2d 1 0.1 ear >>> Arr.first (negate id))@@ -400,7 +400,7 @@ fly :: IO () fly = do- let slow, fast :: Causal.T (MultiValue.T Float) (MultiValue.T Float)+ let slow, fast :: Causal.T (NiceValue.T Float) (NiceValue.T Float) slow = Filt1.lowpassCausal $< Gen.constant (Filt1Core.parameter (1/sampleRate :: Exp Float))@@ -431,7 +431,7 @@ >>> Causal.envelopeStereo >>^- Stereo.multiValue)+ Stereo.niceValue) POut.storableVector playFromEvents 0.01 (0.015::Double) ((proc :: PIO.T (PCS.T Int Float) (SV.Vector (Stereo.T Float)))@@ -501,7 +501,7 @@ >>> Causal.envelopeStereo >>^- Stereo.multiValueSerial)+ Stereo.niceValueSerial) POut.storableVector playFromEvents 0.01 (vectorBlockSize/sampleRate) (arr SigStL.unpackStrict
example/Synthesizer/LLVM/Test.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE FlexibleContexts #-} module Main where +import Synthesizer.LLVM.Experiment () import Synthesizer.LLVM.LAC2011 () import Synthesizer.LLVM.ExampleUtility @@ -46,10 +47,10 @@ 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.Vector.Instance as MultiVectorI-import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Vector.Instance as NiceVectorI+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Extra.Maybe as Maybe@@ -123,16 +124,16 @@ {- | > playStereo (Sig.amplifyStereo 0.3 $ stereoOsciSaw 0.01) -}-playStereo :: Sig.T (Stereo.T (MultiValue.T Float)) -> IO ()+playStereo :: Sig.T (Stereo.T (NiceValue.T Float)) -> IO () playStereo sig = playStereoVector . ($ SVL.chunkSize 100000) =<<- Render.run (Stereo.multiValue <$> sig)+ Render.run (Stereo.niceValue <$> sig) playStereoVector :: SVL.Vector (Stereo.T Float) -> IO () playStereoVector = void . SoxPlay.simple SVL.hPut SoxOption.none 44100 -playMono :: Sig.MV Float -> IO ()+playMono :: Sig.Nice Float -> IO () playMono sig = playMonoVector . ($ SVL.chunkSize 100000) =<< Render.run sig playMonoVector :: SVL.Vector Float -> IO ()@@ -226,7 +227,7 @@ rationalSineStereo = (SV.writeFile "speedtest.f32" . asStereoPacked =<<) $ fmap ($ div 10000000 4) $ Render.run $- fmap Stereo.multiValueSerial $+ fmap Stereo.niceValueSerial $ liftA2 Stereo.cons (CausalPS.shapeModOsci Wave.rationalApproxSine1 $< (0.001 + SigPS.rampInf 10000000)@@ -238,13 +239,13 @@ $* SigPS.constant 0.01001) -pingSig :: Float -> Sig.MV Float+pingSig :: Float -> Sig.Nice Float pingSig freq = Sig.exponential2 50000 1 * Sig.osci Wave.saw 0.5 (Expr.cons freq) -pingSigP :: Exp Float -> Sig.MV Float+pingSigP :: Exp Float -> Sig.Nice Float pingSigP freq = Sig.exponential2 50000 1 *@@ -290,7 +291,7 @@ $< fmap Filt1Core.Parameter (1 - Sig.exponential2 (50000/4) 1) $* SigPS.osci Wave.triangle 0 0.01) -stereoOsciSaw :: Exp Float -> Sig.T (Stereo.T (MultiValue.T Float))+stereoOsciSaw :: Exp Float -> Sig.T (Stereo.T (NiceValue.T Float)) stereoOsciSaw freq = liftA2 Stereo.cons (Sig.osci Wave.saw 0.0 (freq*1.001) +@@ -300,9 +301,9 @@ Sig.osci Wave.saw 0.7 (freq*0.997) + Sig.osci Wave.saw 0.5 (freq*0.999)) -stereoOsciSawPacked :: Float -> Sig.T (Stereo.T (MultiValue.T Float))+stereoOsciSawPacked :: Float -> Sig.T (Stereo.T (NiceValue.T Float)) stereoOsciSawPacked freq =- let mix4 = Expr.liftM $ MultiVector.sum . MultiVectorI.fromMultiValue+ let mix4 = Expr.liftM $ NiceVector.sum . NiceVectorI.fromNiceValue in liftA2 Stereo.cons ((Causal.map mix4 $*) $ Sig.osci Wave.saw@@ -327,21 +328,21 @@ in go xs mixVectorToStereo ::- (TypeNum.Positive n, MultiVector.Additive a) =>- MultiVector.T n a -> LLVM.CodeGenFunction r (Stereo.T (MultiValue.T a))+ (TypeNum.Positive n, NiceVector.Additive a) =>+ NiceVector.T n a -> LLVM.CodeGenFunction r (Stereo.T (NiceValue.T a)) mixVectorToStereo = NonEmpty.foldBalanced (\x y -> join $ liftA2 A.add x y) .- fmap sequenceA . stereoDeinterleave . MultiVector.dissectList1+ fmap sequenceA . stereoDeinterleave . NiceVector.dissectList1 mixVec ::- (TypeNum.Positive n, MultiVector.Additive a) =>+ (TypeNum.Positive n, NiceVector.Additive a) => Exp (LLVM.Vector n a) -> Stereo.T (Exp a) mixVec = Stereo.unExpression . Expr.liftM- (fmap Stereo.multiValue . mixVectorToStereo . MultiVectorI.fromMultiValue)+ (fmap Stereo.niceValue . mixVectorToStereo . NiceVectorI.fromNiceValue) -stereoOsciSawPacked2 :: Float -> Sig.T (Stereo.T (MultiValue.T Float))+stereoOsciSawPacked2 :: Float -> Sig.T (Stereo.T (NiceValue.T Float)) stereoOsciSawPacked2 freq = (Causal.map mixVec $*) $ Sig.osci (Wave.trapezoidSlope (A.fromRational' 5))@@ -353,7 +354,7 @@ stereo = SV.writeFile "speedtest.f32" . asStereo . ($ 10000000) =<< Render.run- (Stereo.multiValue <$> Causal.amplifyStereo 0.25+ (Stereo.niceValue <$> Causal.amplifyStereo 0.25 $* stereoOsciSawPacked2 0.01) lazy :: IO ()@@ -370,7 +371,7 @@ (SVL.writeFile "speedtest.f32" . asStereo . SVL.take 10000000 =<<) $ fmap ($ SVL.chunkSize 100000) $ Render.run- (Stereo.multiValue <$> Causal.amplifyStereo 0.25+ (Stereo.niceValue <$> Causal.amplifyStereo 0.25 $* stereoOsciSawPacked 0.01) packTake :: IO ()@@ -379,7 +380,7 @@ (Render.run . SigPS.packRotate) (Causal.take 5 $* Sig.osci Wave.saw 0 (frequency 0.01)) -chord :: Float -> Sig.T (Stereo.T (MultiValue.T Float))+chord :: Float -> Sig.T (Stereo.T (NiceValue.T Float)) chord base = {- This exceeds available vector registers@@ -398,7 +399,7 @@ lazyChord = (SVL.writeFile "speedtest.f32" . asStereo . SVL.take 10000000 =<<) $ fmap ($ SVL.chunkSize 100000) $- Render.run (Stereo.multiValue <$> Causal.amplifyStereo 0.1 $* chord 0.005)+ Render.run (Stereo.niceValue <$> Causal.amplifyStereo 0.1 $* chord 0.005) filterSweepComplex :: IO () filterSweepComplex =@@ -409,7 +410,7 @@ $* chord 0.005) lfoSineCausal ::- Causal.T (MultiValue.T Float) a -> Exp Float -> Sig.T a+ Causal.T (NiceValue.T Float) a -> Exp Float -> Sig.T a lfoSineCausal f reduct = f . Causal.map (\x -> 0.01 * exp (2*x)) $* Sig.osci Wave.sine 0 (reduct * 0.1/44100)@@ -498,8 +499,8 @@ filterSweepControlRateCausal :: Causal.T- (Stereo.T (MultiValue.T Float))- (Stereo.T (MultiValue.T Float))+ (Stereo.T (NiceValue.T Float))+ (Stereo.T (NiceValue.T Float)) filterSweepControlRateCausal = Causal.amplifyStereo 0.3 <<< BandPass.causal $< (let reduct = 128 :: Exp Float@@ -519,15 +520,15 @@ (SVL.writeFile "speedtest.f32" . asStereo . SVL.take 10000000 =<<) $ fmap ($ SVL.chunkSize 100000) $ Render.run- (Stereo.multiValue <$> filterSweepControlRateCausal $* chord 0.005)+ (Stereo.niceValue <$> filterSweepControlRateCausal $* chord 0.005) filterSweepMusic :: IO () filterSweepMusic = do proc <- Render.run $ \music ->- Stereo.multiValue ^<< Causal.amplifyStereo 20 .- filterSweepControlRateCausal <<^ Stereo.unMultiValue $* music+ Stereo.niceValue ^<< Causal.amplifyStereo 20 .+ filterSweepControlRateCausal <<^ Stereo.unNiceValue $* music music <- SV.readFile "lichter.f32" SVL.writeFile "speedtest.f32" . asStereo =<< proc (SVL.chunkSize 100000) music@@ -537,8 +538,8 @@ playFilterSweepMusicLazy = do proc <- Render.run $ \vol music ->- Stereo.multiValue ^<< Causal.amplifyStereo vol .- filterSweepControlRateCausal <<^ Stereo.unMultiValue $* music+ Stereo.niceValue ^<< Causal.amplifyStereo vol .+ filterSweepControlRateCausal <<^ Stereo.unNiceValue $* music IO.withFile "lichter.f32" IO.ReadMode $ \h -> playStereoVector . proc (SVL.chunkSize 100000) (20::Float) {-1.125-} . snd =<< SVL.hGetContentsAsync (SVL.chunkSize 4321) h@@ -547,8 +548,8 @@ playFilterSweepMusicCausal = do proc <- CausalRender.run $- Stereo.multiValue ^<< Causal.amplifyStereo 20 .- filterSweepControlRateCausal <<^ Stereo.unMultiValue+ Stereo.niceValue ^<< Causal.amplifyStereo 20 .+ filterSweepControlRateCausal <<^ Stereo.unNiceValue music <- SV.readFile "lichter.f32" void $ SoxPlay.simple SV.hPut SoxOption.none 44100 =<< pioApplyStrict proc music@@ -557,8 +558,8 @@ playFilterSweepMusicCausalLazy = do proc <- CausalRender.run $- Stereo.multiValue ^<< Causal.amplifyStereo 20 .- filterSweepControlRateCausal <<^ Stereo.unMultiValue+ Stereo.niceValue ^<< Causal.amplifyStereo 20 .+ filterSweepControlRateCausal <<^ Stereo.unNiceValue IO.withFile "lichter.f32" IO.ReadMode $ \h -> playStereoVector =<< pioApply proc . snd =<< SVL.hGetContentsAsync (SVL.chunkSize 43210) h@@ -984,7 +985,7 @@ iterate (0.999*) 0.01)) -vibes :: (Exp Float, Exp Float) -> Sig.MV Float+vibes :: (Exp Float, Exp Float) -> Sig.Nice Float vibes (modDepth, freq) = let halfLife = 5000 -- sine = Wave.sine@@ -1062,7 +1063,7 @@ proc <- CausalRender.run (\params ->- Stereo.multiValue+ Stereo.niceValue ^<< Causal.amplifyStereo 0.3 <<<@@ -1095,7 +1096,7 @@ filterBass = do proc <- Render.run $ \xs ->- (fmap Stereo.multiValue BandPass.causal+ (fmap Stereo.niceValue BandPass.causal <<< CausalClass.feedSnd (liftA2 Stereo.cons@@ -1145,7 +1146,7 @@ =<< ((\(x:xs) -> Fold.foldlM (pioApply . mix) x xs) $ take numTones $ map (pingp 1000000) $ iterate (*(2/3)) 0.01) -fadeEnvelope :: Exp Word -> Exp Word -> Sig.MV Float+fadeEnvelope :: Exp Word -> Exp Word -> Sig.Nice Float fadeEnvelope intro len = Sig.parabolaFadeIn intro <>@@ -1169,7 +1170,7 @@ stereoOsciParams :: (TypeNum.Integer n) =>- Proxy n -> Float -> (Float, Stereo.T (MultiValue.Array n (Float,Float)))+ Proxy n -> Float -> (Float, Stereo.T (NiceValue.Array n (Float,Float))) stereoOsciParams np freq = let n = TypeNum.integralFromProxy np volume :: Float@@ -1181,7 +1182,7 @@ phases :: [Float] phases = randomRs (0,1) $ mkStdGen 54 in (,) volume $- fmap MultiValue.Array $+ fmap NiceValue.Array $ uncurry Stereo.cons $ splitAt n $ zipWith (\phase detune -> (phase, detune*freq))@@ -1191,10 +1192,10 @@ (TypeNum.Natural n) => (TypeNum.Natural arrSize, arrSize ~ (n :*: LLVM.UnknownSize)) => (TypeNum.Natural stereoSize, stereoSize ~ (D2 :*: arrSize)) =>- Exp Float -> Stereo.T (Exp (MultiValue.Array n (Float,Float))) ->- Sig.MV (Stereo.T Float)+ Exp Float -> Stereo.T (Exp (NiceValue.Array n (Float,Float))) ->+ Sig.Nice (Stereo.T Float) stereoOsciSawP volume =- fmap Stereo.multiValue+ fmap Stereo.niceValue . stereoFromMonoParametricSignal (\params ->@@ -1210,8 +1211,8 @@ (Marshal.C x) => (D2 :*: LLVM.SizeOf (Marshal.Struct x) ~ arrSize, TypeNum.Natural arrSize) =>- (Exp x -> Sig.MV Float) ->- Stereo.T (Exp x) -> Sig.T (Stereo.T (MultiValue.T Float))+ (Exp x -> Sig.Nice Float) ->+ Stereo.T (Exp x) -> Sig.T (Stereo.T (NiceValue.T Float)) stereoFromMonoParametricSignal f ps = Causal.toSignal $ Causal.stereoFromMonoParametric (Causal.fromSignal . f) ps@@ -1224,7 +1225,7 @@ TypeNum.Natural arraySize, Tuple.Undefined a, Tuple.Phi a, A.Additive a) => (Exp x -> Sig.T a) ->- Exp (MultiValue.Array n x) -> Sig.T a+ Exp (NiceValue.Array n x) -> Sig.T a multiMixSignal f = Causal.toSignal . multiMix (Causal.fromSignal . f) @@ -1234,7 +1235,7 @@ TypeNum.Natural arraySize, Tuple.Undefined b, Tuple.Phi b, A.Additive b) => (Exp x -> Causal.T a b) ->- Exp (MultiValue.Array n x) -> Causal.T a b+ Exp (NiceValue.Array n x) -> Causal.T a b multiMix f ps = Causal.replicateControlledParam (\x -> Causal.mix <<< first (f x)) ps <<^@@ -1261,9 +1262,9 @@ pioApply (f attack (dur-attack)) (stereoOsciSawChord pitches)) $ CausalRender.run (\intro len ->- Stereo.multiValue <$>+ Stereo.niceValue <$> (Causal.envelopeStereo $< fadeEnvelope intro len)- <<^ Stereo.unMultiValue)+ <<^ Stereo.unNiceValue) a0, as0, b0, c1, cs1, d1, ds1, e1, f1, fs1, g1, gs1, a1, as1, b1, c2, cs2, d2, ds2, e2, f2, fs2, g2, gs2,@@ -1311,9 +1312,9 @@ arrange <- SigStL.makeArranger amplify <- CausalRender.run $ \volume ->- Stereo.multiValue ^<<+ Stereo.niceValue ^<< Causal.amplifyStereo volume <<^- Stereo.unMultiValue+ Stereo.unNiceValue (playStereoVector =<<) $ pioApply (amplify (0.1::Float)) $ arrange tonesChunkSize $@@ -1326,8 +1327,8 @@ lowpassSweepControlRateCausal :: Causal.T- (Stereo.T (MultiValue.T Float))- (Stereo.T (MultiValue.T Float))+ (Stereo.T (NiceValue.T Float))+ (Stereo.T (NiceValue.T Float)) lowpassSweepControlRateCausal = -- Causal.stereoFromVector $ Causal.stereoFromMono $@@ -1338,8 +1339,8 @@ moogSweepControlRateCausal :: Causal.T- (Stereo.T (MultiValue.T Float))- (Stereo.T (MultiValue.T Float))+ (Stereo.T (NiceValue.T Float))+ (Stereo.T (NiceValue.T Float)) moogSweepControlRateCausal = -- Causal.stereoFromVector $ Causal.stereoFromMono $@@ -1353,10 +1354,10 @@ pad <- stereoOsciSawPadIO proc <- CausalRender.run $ \volume ->- Stereo.multiValue ^<<+ Stereo.niceValue ^<< Causal.amplifyStereo volume <<< moogSweepControlRateCausal <<^- Stereo.unMultiValue+ Stereo.unNiceValue (playStereoVector =<<) $ pioApply (proc (0.05::Float)) $ arrange tonesChunkSize $@@ -1383,9 +1384,9 @@ Unsafe.performIO $ pioApply (f attack (dur-attack)) sig) $ CausalRender.run (\intro len ->- Stereo.multiValue <$>+ Stereo.niceValue <$> (Causal.envelopeStereo $< fadeEnvelope intro len)- <<^ Stereo.unMultiValue)+ <<^ Stereo.unNiceValue) stereoOsciSawChordIO :: IO (NonEmpty.T [] Float -> SVL.Vector (Stereo.T Float)) stereoOsciSawChordIO = do@@ -1407,9 +1408,9 @@ pad <- stereoOsciSawPadIO amplify <- CausalRender.run $ \volume ->- Stereo.multiValue ^<<+ Stereo.niceValue ^<< Causal.amplifyStereo volume <<^- Stereo.unMultiValue+ Stereo.unNiceValue (playStereoVector =<<) $ pioApply (amplify (0.08::Float)) $ arrange tonesChunkSize $@@ -1430,9 +1431,9 @@ env <- applyFadeEnvelopeIO amplify <- CausalRender.run $ \volume ->- Stereo.multiValue ^<<+ Stereo.niceValue ^<< Causal.amplifyStereo volume <<^- Stereo.unMultiValue+ Stereo.unNiceValue (playStereoVector =<<) $ pioApply (amplify (0.08::Float)) $ arrange tonesChunkSize $@@ -1459,7 +1460,7 @@ (SVL.writeFile "speedtest.f32" . asStereo =<<) $ fmap (\f -> f tonesChunkSize (7::Word) (10000::Word)) $ Render.run $ \del dur ->- Causal.take dur . liftA2 Stereo.consMultiValue id (Causal.delayZero del)+ Causal.take dur . liftA2 Stereo.consNiceValue id (Causal.delayZero del) $* Sig.osci Wave.saw 0 (frequency 0.01) @@ -1474,7 +1475,7 @@ Func.fromSignal $ Sig.osci Wave.triangle 0 $ frequency (1/20000) in Causal.take dur $&- liftA2 Stereo.consMultiValue+ liftA2 Stereo.consNiceValue osci (Causal.delayControlledInterpolated Interpolation.cubic 0 100 $&@@ -1485,15 +1486,15 @@ allpassControl :: (TypeNum.Natural n) => Proxy n -> Exp Float ->- Sig.T (Allpass.CascadeParameter n (MultiValue.T Float))+ Sig.T (Allpass.CascadeParameter n (NiceValue.T Float)) allpassControl order reduct = Sig.interpolateConstant reduct $ lfoSine (Allpass.flangerParameter order) reduct allpassPhaserCausal, allpassPhaserPipeline :: Exp Float ->- Sig.MV Float ->- Sig.MV Float+ Sig.Nice Float ->+ Sig.Nice Float allpassPhaserCausal reduct xs = let order = TypeNum.d16 in 0.5 * Allpass.phaser $< allpassControl order reduct $* xs@@ -1555,7 +1556,7 @@ sample <- Render.run $ Sig.osci Wave.saw 0 (frequency 0.01) f <- Render.run $ \smp ->- Stereo.multiValue ^<<+ Stereo.niceValue ^<< Causal.stereoFromMono (Causal.frequencyModulationLinear smp) $* Sig.constant (Stereo.cons 0.2999 0.3001) SVL.writeFile "speedtest.f32" . asStereo $@@ -1611,7 +1612,7 @@ fmap ($ SVL.chunkSize 100000) $ Render.run (let osci = Causal.osci Wave.approxSine2- in liftA2 Stereo.consMultiValue osci osci $* Sig.constant (0, 0.01))+ in liftA2 Stereo.consNiceValue osci osci $* Sig.constant (0, 0.01)) arrowShared :: IO () arrowShared =@@ -1620,7 +1621,7 @@ fmap ($ SVL.chunkSize 100000) $ Render.run (let osci = Func.lift $ Causal.osci Wave.approxSine2- in Func.compile (liftA2 Stereo.consMultiValue osci osci) $*+ in Func.compile (liftA2 Stereo.consNiceValue osci osci) $* Sig.constant (0, 0.01)) arrowIndependent :: IO ()@@ -1631,7 +1632,7 @@ Render.run (let osci = Causal.osci Wave.approxSine2 in Func.compile- (uncurry Stereo.consMultiValue <$>+ (uncurry Stereo.consNiceValue <$> (osci *** osci $& Func.lift id)) $* Sig.constant ((0, 0.01), (0.25, 0.01001))) @@ -1692,15 +1693,15 @@ word <- Sample.load (Default.sampleDirectory </> name) return (Sample.period $ head positions, word) -helixOsci :: Exp Float -> Func.T a (MultiValue.T Float)+helixOsci :: Exp Float -> Func.T a (NiceValue.T Float) helixOsci period = Causal.osciCore $& 0 &|& Func.fromSignal (Sig.constant (recip period)) helixSpeechStaticSig ::- Func.T () (MultiValue.T Float) ->+ Func.T () (NiceValue.T Float) -> Exp (Source.StorableVector Float) -> Exp Float ->- Sig.MV Float+ Sig.Nice Float helixSpeechStaticSig shape word period = Func.compileSignal (Helix.static Interpolation.linear Interpolation.linear@@ -1714,7 +1715,7 @@ Exp Float -> Exp (Source.StorableVector Float) -> Exp Float ->- Sig.MV Float+ Sig.Nice Float helixSpeechStaticSpeed speed word = helixSpeechStaticSig (Func.fromSignal@@ -1735,10 +1736,10 @@ mapSnd (Render.buffer . SV.concat . SVL.chunks) smp helixSpeechDynamicSig ::- Func.T () (MultiValue.T Float) ->- Sig.MV Float ->+ Func.T () (NiceValue.T Float) ->+ Sig.Nice Float -> Exp Float ->- Sig.MV Float+ Sig.Nice Float helixSpeechDynamicSig shape word period = Func.compileSignal (Helix.dynamicLimited Interpolation.linear Interpolation.linear@@ -1750,9 +1751,9 @@ helixSpeechDynamicSpeed :: Exp Float ->- Sig.MV Float ->+ Sig.Nice Float -> Exp Float ->- Sig.MV Float+ Sig.Nice Float helixSpeechDynamicSpeed speed = helixSpeechDynamicSig (Func.fromSignal $ Sig.constant speed) @@ -1770,7 +1771,7 @@ (per,smp) <- loadTomato stretched <- Render.run $ \speed period word wordBuffer ->- fmap Stereo.multiValue $+ fmap Stereo.niceValue $ sequenceA $ Stereo.cons (helixSpeechStaticSpeed speed wordBuffer period)@@ -1784,13 +1785,13 @@ (per,smp) <- loadTomato stretched <- Render.run $ \period word wordBuffer ->- fmap Stereo.multiValue $+ fmap Stereo.niceValue $ sequenceA $ let speed = Func.fromSignal $ Sig.cycle $ Sig.fromArray $ Expr.cons $- (MultiValue.Array [0.2, 0.5, 1, 1.5, 1.8]- :: MultiValue.Array TypeNum.D5 Float)+ (NiceValue.Array [0.2, 0.5, 1, 1.5, 1.8]+ :: NiceValue.Array TypeNum.D5 Float) in Stereo.cons (helixSpeechStaticSig (Causal.integrateZero $& speed)@@ -1833,7 +1834,7 @@ &|& helixOsci period stretched osciBuffer =- liftA2 Stereo.consMultiValue+ liftA2 Stereo.consNiceValue (stretchedStatic osciBuffer) stretchedDynamic renderHelix <- Render.run $ Func.compileSignal . stretched SV.writeFile "helix-stretched.f32" $ asStereo $@@ -1873,10 +1874,10 @@ Render.run (let pause len = CausalClass.applyConst (Causal.take len) Maybe.nothing- pulse :: Float -> Exp Word -> Sig.T (Maybe.T (MultiValue.T Float))+ pulse :: Float -> Exp Word -> Sig.T (Maybe.T (NiceValue.T Float)) pulse freq len = Causal.take len .- arr (flip Maybe.fromBool (MultiValue.cons freq) . unbool) .+ arr (flip Maybe.fromBool (NiceValue.cons freq) . unbool) . Causal.delay1 Expr.true $*# False in (Causal.zipWith ExprMaybe.select $> Sig.noise 0 (0.01 :: Exp Float)) $*@@ -1887,23 +1888,23 @@ pulse 0.006 400000)) -- FixMe: duplicate of CausalExp.ProcessPrivate-unbool :: MultiValue.T Bool -> LLVM.Value Bool-unbool (MultiValue.Cons b) = b+unbool :: NiceValue.T Bool -> LLVM.Value Bool+unbool (NiceValue.Cons b) = b -triggerLFO :: Sig.MV Float+triggerLFO :: Sig.Nice Float triggerLFO = Sig.osci Wave.approxSine2 0 0.00015 + Sig.osci Wave.approxSine2 0 0.000037 -trackZeros :: Causal.MV Float Bool+trackZeros :: Causal.Nice Float Bool trackZeros = Causal.zipWith (\x y -> x &&* Expr.not y) . (id &&& Causal.delay1 Expr.false) . Causal.map (>* 0) -fmPingSig :: Exp Float -> Exp Float -> Sig.MV Float+fmPingSig :: Exp Float -> Exp Float -> Sig.Nice Float fmPingSig freq depth = Sig.exponential2 5000 1 *
server/Synthesizer/LLVM/Server/CausalPacked/Arrange.hs view
@@ -126,7 +126,7 @@ arrange <- CausalSt.makeArranger amp <- CausalRender.run- (emitStereo <<< CausalPS.amplifyStereo 0.2 <<^ Stereo.unMultiValue)+ (emitStereo <<< CausalPS.amplifyStereo 0.2 <<^ Stereo.unNiceValue) ping <- Instr.pingStereoReleaseFM @@ -213,7 +213,7 @@ CausalRender.run (emitStereo <<< Causal.envelopeStereo <<<- Causal.map Serial.upsample *** arr Stereo.unMultiValue)+ Causal.map Serial.upsample *** arr Stereo.unNiceValue) return $ \chan initPgm rate -> amp <<<@@ -493,9 +493,9 @@ IO (ChannelMsg.Channel -> VoiceMsg.Program -> SampleRate Real -> PIO.T (MIO.Events msg) b) voder emitStereo voice smpDir = do- carrier <- keyboardDetuneFMCore (arr Stereo.multiValue) smpDir+ carrier <- keyboardDetuneFMCore (arr Stereo.niceValue) smpDir arrange <- CausalSt.makeArranger- interleave <- CausalRender.run (emitStereo <<^ Stereo.unMultiValue)+ interleave <- CausalRender.run (emitStereo <<^ Stereo.unNiceValue) return $ \chan initPgm sampleRate -> interleave@@ -552,7 +552,7 @@ CausalRender.run (emitStereo <<< Causal.envelopeStereo <<<- Causal.map Serial.upsample *** arr Stereo.unMultiValue)+ Causal.map Serial.upsample *** arr Stereo.unNiceValue) return $ \chan initPgm sampleRate -> amp@@ -586,7 +586,7 @@ voderSeparated ::- (PathClass.AbsRel ar, Render.RunArg p,+ (PathClass.AbsRel ar, Render.Argument p, Check.C msg, Construct.C msg, POut.Default b) => (Render.DSLArg p -> Causal.T (Stereo.T VectorValue) (POut.Element b)) -> Speech.VowelSynthEnv ->@@ -594,13 +594,13 @@ IO (ChannelMsg.Channel -> ChannelMsg.Channel -> VoiceMsg.Program -> SampleRate Real -> p -> PIO.T (MIO.Events msg) b) voderSeparated emitStereo voice smpDir = do- carrier <- keyboardDetuneFMCore (arr Stereo.multiValue) smpDir+ carrier <- keyboardDetuneFMCore (arr Stereo.niceValue) smpDir arrange <- CausalSt.makeArranger amp <- CausalRender.run $ \p -> (emitStereo p <<< Causal.envelopeStereo <<<- Causal.map Serial.upsample *** arr Stereo.unMultiValue)+ Causal.map Serial.upsample *** arr Stereo.unNiceValue) return $ \carrierChan phonemeChan initPgm sampleRate p -> amp p@@ -621,7 +621,7 @@ (carrier carrierChan initPgm sampleRate))) voderMaskSeparated ::- (PathClass.AbsRel ar, Render.RunArg p,+ (PathClass.AbsRel ar, Render.Argument p, Check.C msg, Construct.C msg, POut.Default b) => (Render.DSLArg p -> Causal.T (Stereo.T VectorValue) (POut.Element b)) -> Path.Dir ar ->
src/Synthesizer/LLVM/Causal/Controlled.hs view
@@ -36,9 +36,9 @@ 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 qualified LLVM.Extra.Multi.Vector as MultiVector+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue+import qualified LLVM.Extra.Nice.Vector as NiceVector import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A @@ -53,8 +53,8 @@ processCtrlRate :: (C parameter a b, Memory.C parameter) =>- (Marshal.C r, MultiValue.IntegerConstant r,- MultiValue.Additive r, MultiValue.Comparison r) =>+ (Marshal.C r, NiceValue.IntegerConstant r,+ NiceValue.Additive r, NiceValue.Comparison r) => Exp r -> (Exp r -> Sig.T parameter) -> Causal.T a b processCtrlRate reduct ctrlGen = process $< Sig.interpolateConstant reduct (ctrlGen reduct)@@ -93,17 +93,17 @@ process = Filt2.causal instance- (Marshal.C a, Marshal.Vector TypeNum.D4 a, MultiVector.PseudoRing a) =>- C (Filt2P.Parameter a) (MultiValue.T a) (MultiValue.T a) where- type Input (Filt2P.Parameter a) (MultiValue.T a) = MultiValue.T a- type Output (Filt2P.Parameter a) (MultiValue.T a) = MultiValue.T a+ (Marshal.C a, Marshal.Vector TypeNum.D4 a, NiceVector.PseudoRing a) =>+ C (Filt2P.Parameter a) (NiceValue.T a) (NiceValue.T a) where+ type Input (Filt2P.Parameter a) (NiceValue.T a) = NiceValue.T a+ type Output (Filt2P.Parameter a) (NiceValue.T a) = NiceValue.T a process = Filt2P.causal instance- (a ~ MultiValue.Scalar v, MultiValue.PseudoModule v,- Marshal.C a, MultiValue.IntegerConstant a, Marshal.C v,+ (a ~ NiceValue.Scalar v, NiceValue.PseudoModule v,+ Marshal.C a, NiceValue.IntegerConstant a, Marshal.C v, TypeNum.Natural n, TypeNum.Positive (n :*: LLVM.UnknownSize),- inp ~ MultiValue.T v, out ~ MultiValue.T v) =>+ inp ~ NiceValue.T v, out ~ NiceValue.T v) => C (Cascade.ParameterValue n a) inp out where type Input (Cascade.ParameterValue n a) out = out type Output (Cascade.ParameterValue n a) inp = inp@@ -152,9 +152,9 @@ process = ComplexFilt.causal instance- (Marshal.Vector n a, n ~ TypeNum.D3, MultiVector.PseudoRing a,- inp ~ MultiValue.T a, out ~ MultiValue.T a) =>- C (ComplexFiltPack.ParameterMV a) (Stereo.T inp) (Stereo.T out) where- type Input (ComplexFiltPack.ParameterMV a) (Stereo.T out) = Stereo.T out- type Output (ComplexFiltPack.ParameterMV a) (Stereo.T inp) = Stereo.T inp+ (Marshal.Vector n a, n ~ TypeNum.D3, NiceVector.PseudoRing a,+ inp ~ NiceValue.T a, out ~ NiceValue.T a) =>+ C (ComplexFiltPack.ParameterNice a) (Stereo.T inp) (Stereo.T out) where+ type Input (ComplexFiltPack.ParameterNice a) (Stereo.T out) = Stereo.T out+ type Output (ComplexFiltPack.ParameterNice a) (Stereo.T inp) = Stereo.T inp process = ComplexFiltPack.causal
src/Synthesizer/LLVM/Causal/ControlledPacked.hs view
@@ -30,8 +30,8 @@ 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 qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Extra.Arithmetic as A@@ -52,8 +52,8 @@ (C parameter av bv, Memory.C parameter, Serial.Read av, n ~ Serial.Size av, Serial.Write bv, n ~ Serial.Size bv) =>- (Marshal.C r, MultiValue.RationalConstant r,- MultiValue.Field r, MultiValue.Comparison r) =>+ (Marshal.C r, NiceValue.RationalConstant r,+ NiceValue.Field r, NiceValue.Comparison r) => Exp r -> (Exp r -> Sig.T parameter) -> Causal.T av bv processCtrlRate reduct ctrlGen = Serial.withSize $ \n -> process $<@@ -97,9 +97,9 @@ process = Filt2.causalPacked instance- (Serial.Write v, Serial.Element v ~ MultiValue.T a,+ (Serial.Write v, Serial.Element v ~ NiceValue.T a, Memory.C v, A.PseudoRing v, A.IntegerConstant v,- Marshal.C a, MultiValue.PseudoRing a, MultiValue.IntegerConstant a,+ Marshal.C a, NiceValue.PseudoRing a, NiceValue.IntegerConstant a, TypeNum.Positive (n :*: LLVM.UnknownSize), TypeNum.Natural n) => C (Cascade.ParameterValue n a) v v where
src/Synthesizer/LLVM/Causal/Exponential2.hs view
@@ -11,16 +11,16 @@ Parameter, parameter, parameterPlain,- multiValueParameter,- unMultiValueParameter,+ niceValueParameter,+ unNiceValueParameter, causal, ParameterPacked, parameterPacked, parameterPackedExp, parameterPackedPlain,- multiValueParameterPacked,- unMultiValueParameterPacked,+ niceValueParameterPacked,+ unNiceValueParameterPacked, causalPacked, ) where @@ -36,9 +36,9 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Value.Marshal as MarshalMV-import qualified LLVM.Extra.Multi.Value as MultiValue-import qualified LLVM.Extra.Multi.Vector as MultiVector+import qualified LLVM.Extra.Nice.Value.Marshal as MarshalNice+import qualified LLVM.Extra.Nice.Value as NiceValue+import qualified LLVM.Extra.Nice.Vector as NiceVector import qualified LLVM.Extra.ScalarOrVector as SoV import qualified LLVM.Extra.Vector as Vector import qualified LLVM.Extra.Storable as Storable@@ -114,9 +114,9 @@ pack (Parameter k) = Marshal.pack k unpack = Parameter . Marshal.unpack -instance (MarshalMV.C a) => MarshalMV.C (Parameter a) where- pack (Parameter k) = MarshalMV.pack k- unpack = Parameter . MarshalMV.unpack+instance (MarshalNice.C a) => MarshalNice.C (Parameter a) where+ pack (Parameter k) = MarshalNice.pack k+ unpack = Parameter . MarshalNice.unpack instance (Storable.C a) => Storable.C (Parameter a) where load = Storable.loadNewtype Parameter Parameter@@ -126,26 +126,26 @@ type ValueOf (Parameter a) = Parameter (Tuple.ValueOf a) valueOf = Tuple.valueOfFunctor -instance (MultiValue.C a) => MultiValue.C (Parameter a) where- type Repr (Parameter a) = Parameter (MultiValue.Repr a)- cons = multiValueParameter . fmap MultiValue.cons- undef = multiValueParameter $ pure MultiValue.undef- zero = multiValueParameter $ pure MultiValue.zero+instance (NiceValue.C a) => NiceValue.C (Parameter a) where+ type Repr (Parameter a) = Parameter (NiceValue.Repr a)+ cons = niceValueParameter . fmap NiceValue.cons+ undef = niceValueParameter $ pure NiceValue.undef+ zero = niceValueParameter $ pure NiceValue.zero phi bb =- fmap multiValueParameter .- traverse (MultiValue.phi bb) . unMultiValueParameter+ fmap niceValueParameter .+ traverse (NiceValue.phi bb) . unNiceValueParameter addPhi bb a b = Fold.sequence_ $- liftA2 (MultiValue.addPhi bb)- (unMultiValueParameter a) (unMultiValueParameter b)+ liftA2 (NiceValue.addPhi bb)+ (unNiceValueParameter a) (unNiceValueParameter b) -multiValueParameter ::- Parameter (MultiValue.T a) -> MultiValue.T (Parameter a)-multiValueParameter = MultiValue.Cons . fmap (\(MultiValue.Cons a) -> a)+niceValueParameter ::+ Parameter (NiceValue.T a) -> NiceValue.T (Parameter a)+niceValueParameter = NiceValue.Cons . fmap (\(NiceValue.Cons a) -> a) -unMultiValueParameter ::- MultiValue.T (Parameter a) -> Parameter (MultiValue.T a)-unMultiValueParameter (MultiValue.Cons x) = fmap MultiValue.Cons x+unNiceValueParameter ::+ NiceValue.T (Parameter a) -> Parameter (NiceValue.T a)+unNiceValueParameter (NiceValue.Cons x) = fmap NiceValue.Cons x instance (Value.Flatten a) => Value.Flatten (Parameter a) where@@ -165,10 +165,10 @@ instance- (Expr.Aggregate exp mv) =>- Expr.Aggregate (Parameter exp) (Parameter mv) where- type MultiValuesOf (Parameter exp) = Parameter (Expr.MultiValuesOf exp)- type ExpressionsOf (Parameter mv) = Parameter (Expr.ExpressionsOf mv)+ (Expr.Aggregate exp nv) =>+ Expr.Aggregate (Parameter exp) (Parameter nv) where+ type NiceValuesOf (Parameter exp) = Parameter (Expr.NiceValuesOf exp)+ type ExpressionsOf (Parameter nv) = Parameter (Expr.ExpressionsOf nv) bundle (Parameter p) = fmap Parameter $ Expr.bundle p dissect (Parameter p) = Parameter $ Expr.dissect p @@ -187,7 +187,7 @@ causal ::- (MarshalMV.C a, MultiValue.T a ~ am, MultiValue.PseudoRing a) =>+ (MarshalNice.C a, NiceValue.T a ~ am, NiceValue.PseudoRing a) => Exp a -> Causal.T (Parameter am) am causal initial = Causal.loop initial@@ -277,9 +277,9 @@ pack (ParameterPacked bend depth) = Marshal.pack (bend, depth) unpack = uncurry ParameterPacked . Marshal.unpack -instance (MarshalMV.C a) => MarshalMV.C (ParameterPacked a) where- pack (ParameterPacked bend depth) = MarshalMV.pack (bend, depth)- unpack = uncurry ParameterPacked . MarshalMV.unpack+instance (MarshalNice.C a) => MarshalNice.C (ParameterPacked a) where+ pack (ParameterPacked bend depth) = MarshalNice.pack (bend, depth)+ unpack = uncurry ParameterPacked . MarshalNice.unpack instance (Storable.C a) => Storable.C (ParameterPacked a) where load = Storable.loadApplicative@@ -290,26 +290,26 @@ type ValueOf (ParameterPacked a) = ParameterPacked (Tuple.ValueOf a) valueOf = Tuple.valueOfFunctor -instance (MultiValue.C a) => MultiValue.C (ParameterPacked a) where- type Repr (ParameterPacked a) = ParameterPacked (MultiValue.Repr a)- cons = multiValueParameterPacked . fmap MultiValue.cons- undef = multiValueParameterPacked $ pure MultiValue.undef- zero = multiValueParameterPacked $ pure MultiValue.zero+instance (NiceValue.C a) => NiceValue.C (ParameterPacked a) where+ type Repr (ParameterPacked a) = ParameterPacked (NiceValue.Repr a)+ cons = niceValueParameterPacked . fmap NiceValue.cons+ undef = niceValueParameterPacked $ pure NiceValue.undef+ zero = niceValueParameterPacked $ pure NiceValue.zero phi bb =- fmap multiValueParameterPacked .- traverse (MultiValue.phi bb) . unMultiValueParameterPacked+ fmap niceValueParameterPacked .+ traverse (NiceValue.phi bb) . unNiceValueParameterPacked addPhi bb a b = Fold.sequence_ $- liftA2 (MultiValue.addPhi bb)- (unMultiValueParameterPacked a) (unMultiValueParameterPacked b)+ liftA2 (NiceValue.addPhi bb)+ (unNiceValueParameterPacked a) (unNiceValueParameterPacked b) -multiValueParameterPacked ::- ParameterPacked (MultiValue.T a) -> MultiValue.T (ParameterPacked a)-multiValueParameterPacked = MultiValue.Cons . fmap (\(MultiValue.Cons a) -> a)+niceValueParameterPacked ::+ ParameterPacked (NiceValue.T a) -> NiceValue.T (ParameterPacked a)+niceValueParameterPacked = NiceValue.Cons . fmap (\(NiceValue.Cons a) -> a) -unMultiValueParameterPacked ::- MultiValue.T (ParameterPacked a) -> ParameterPacked (MultiValue.T a)-unMultiValueParameterPacked (MultiValue.Cons x) = fmap MultiValue.Cons x+unNiceValueParameterPacked ::+ NiceValue.T (ParameterPacked a) -> ParameterPacked (NiceValue.T a)+unNiceValueParameterPacked (NiceValue.Cons x) = fmap NiceValue.Cons x instance (Value.Flatten a) => Value.Flatten (ParameterPacked a) where@@ -318,12 +318,12 @@ unfoldCode = Value.unfoldCodeTraversable instance- (Expr.Aggregate exp mv) =>- Expr.Aggregate (ParameterPacked exp) (ParameterPacked mv) where- type MultiValuesOf (ParameterPacked exp) =- ParameterPacked (Expr.MultiValuesOf exp)- type ExpressionsOf (ParameterPacked mv) =- ParameterPacked (Expr.ExpressionsOf mv)+ (Expr.Aggregate exp nv) =>+ Expr.Aggregate (ParameterPacked exp) (ParameterPacked nv) where+ type NiceValuesOf (ParameterPacked exp) =+ ParameterPacked (Expr.NiceValuesOf exp)+ type ExpressionsOf (ParameterPacked nv) =+ ParameterPacked (Expr.ExpressionsOf nv) bundle p = liftA2 ParameterPacked (Expr.bundle $ ppFeedback p) (Expr.bundle $ ppCurrent p)@@ -389,8 +389,8 @@ parameterPackedExp :: (TypeNum.Positive n) =>- (MultiValue.Transcendental a, MultiValue.RationalConstant a) =>- (MultiVector.C a) =>+ (NiceValue.Transcendental a, NiceValue.RationalConstant a) =>+ (NiceVector.C a) => Exp a -> ParameterPacked (Exp (Serial.T n a)) parameterPackedExp halfLife = withSizeExp $ \n ->@@ -401,8 +401,8 @@ causalPacked ::- (MultiVector.PseudoRing a, MultiValue.IntegerConstant a,- TypeNum.Positive n, MarshalMV.Vector n a, MarshalMV.C a) =>+ (NiceVector.PseudoRing a, NiceValue.IntegerConstant a,+ TypeNum.Positive n, MarshalNice.Vector n a, MarshalNice.C a) => Exp a -> Causal.T (ParameterPacked (SerialCode.Value n a)) (SerialCode.Value n a) causalPacked initial =
src/Synthesizer/LLVM/Causal/Functional.hs view
@@ -34,7 +34,7 @@ import qualified Synthesizer.Causal.Class as CausalClass import Synthesizer.LLVM.Private (getPairPtrs, noLocalPtr) -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Memory as Memory@@ -291,8 +291,8 @@ instance MakeArguments (LLVM.Value a) where makeArgs = id -type instance Arguments f (MultiValue.T a) = f (MultiValue.T a)-instance MakeArguments (MultiValue.T a) where+type instance Arguments f (NiceValue.T a) = f (NiceValue.T a)+instance MakeArguments (NiceValue.T a) where makeArgs = id {- |
src/Synthesizer/LLVM/Causal/FunctionalPlug.hs view
@@ -30,7 +30,7 @@ import LLVM.DSL.Expression (Exp(Exp)) -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Arithmetic as A import LLVM.Core (CodeGenFunction)@@ -89,7 +89,7 @@ and then we could not define numeric instances. -} data Core pp inp out =- forall x y. CutG.Read x =>+ forall x y. CutG.Consume x => Plugged (pp -> inp -> x) (PIn.T x y)@@ -277,7 +277,7 @@ type Input pp a = MR.Reader (pp, a) plug ::- (CutG.Read b, PIn.Default b) =>+ (CutG.Consume b, PIn.Default b) => Input pp a b -> T pp a (PIn.Element b) plug accessor =
src/Synthesizer/LLVM/Causal/Helix.hs view
@@ -41,11 +41,11 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp, (<*), (>=*)) -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value.Vector as MultiValueVec-import qualified LLVM.Extra.Multi.Value as MultiValue-import qualified LLVM.Extra.Multi.Vector as MultiVector+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value.Vector as NiceValueVec+import qualified LLVM.Extra.Nice.Value as NiceValue+import qualified LLVM.Extra.Nice.Vector as NiceVector import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Memory as Memory @@ -79,10 +79,10 @@ -} static :: (Ip.C nodesStep, Ip.C nodesLeap) =>- (Storable.C vh, MultiValue.T vh ~ v) =>- (Marshal.C a, MultiValue.Field a, MultiValue.RationalConstant a) =>- (MultiValue.Fraction a, MultiValue.NativeFloating a ar) =>- (MultiValueVec.NativeFloating a ar, MultiValue.T a ~ am) =>+ (Storable.C vh, NiceValue.T vh ~ v) =>+ (Marshal.C a, NiceValue.Field a, NiceValue.RationalConstant a) =>+ (NiceValue.Fraction a, NiceValue.NativeFloating a ar) =>+ (NiceValueVec.NativeFloating a ar, NiceValue.T a ~ am) => (forall r. Ip.T r nodesLeap am v) -> (forall r. Ip.T r nodesStep am v) -> Exp Int ->@@ -110,15 +110,15 @@ staticPacked :: (Ip.C nodesStep, Ip.C nodesLeap) =>- (Storable.C vh, MultiValue.T vh ~ ve, SerialClass.Element v ~ ve) =>+ (Storable.C vh, NiceValue.T vh ~ ve, SerialClass.Element v ~ ve) => (SerialClass.Size (nodesLeap (nodesStep v)) ~ n, SerialClass.Write (nodesLeap (nodesStep v)), SerialClass.Element (nodesLeap (nodesStep v)) ~ nodesLeap (nodesStep (SerialClass.Element v))) => (TypeNum.Positive n) =>- (Marshal.C a, MultiVector.Field a, MultiVector.Real a,- MultiVector.Fraction a, MultiVector.RationalConstant a,- MultiVector.NativeFloating n a ar) =>+ (Marshal.C a, NiceVector.Field a, NiceVector.Real a,+ NiceVector.Fraction a, NiceVector.RationalConstant a,+ NiceVector.NativeFloating n a ar) => (forall r. Ip.T r nodesLeap (Serial.Value n a) v) -> (forall r. Ip.T r nodesStep (Serial.Value n a) v) -> Exp Int ->@@ -146,12 +146,12 @@ -} dynamicLimited :: (Ip.C nodesStep, Ip.C nodesLeap) =>- (Marshal.C a, MultiValue.Field a, MultiValue.Fraction a,- MultiValue.Select a, MultiValue.Comparison a,- MultiValue.NativeFloating a ar,- MultiValue.RationalConstant a,- MultiValueVec.NativeFloating a ar) =>- (MultiValue.T a ~ am) =>+ (Marshal.C a, NiceValue.Field a, NiceValue.Fraction a,+ NiceValue.Select a, NiceValue.Comparison a,+ NiceValue.NativeFloating a ar,+ NiceValue.RationalConstant a,+ NiceValueVec.NativeFloating a ar) =>+ (NiceValue.T a ~ am) => (Memory.C v) => (forall r. Ip.T r nodesLeap am v) -> (forall r. Ip.T r nodesStep am v) ->@@ -178,12 +178,12 @@ -} dynamic :: (Ip.C nodesStep, Ip.C nodesLeap) =>- (Marshal.C a, MultiValue.Field a, MultiValue.Fraction a,- MultiValue.Select a, MultiValue.Comparison a,- MultiValue.NativeFloating a ar,- MultiValue.RationalConstant a,- MultiValueVec.NativeFloating a ar) =>- (MultiValue.T a ~ am) =>+ (Marshal.C a, NiceValue.Field a, NiceValue.Fraction a,+ NiceValue.Select a, NiceValue.Comparison a,+ NiceValue.NativeFloating a ar,+ NiceValue.RationalConstant a,+ NiceValueVec.NativeFloating a ar) =>+ (NiceValue.T a ~ am) => (Memory.C v) => (forall r. Ip.T r nodesLeap am v) -> (forall r. Ip.T r nodesStep am v) ->@@ -214,18 +214,18 @@ dynamicGen :: (Ip.C nodesStep, Ip.C nodesLeap) =>- (Marshal.C a, MultiValue.Field a, MultiValue.Fraction a,- MultiValue.Select a, MultiValue.Comparison a,- MultiValue.NativeFloating a ar,- MultiValue.RationalConstant a,- MultiValueVec.NativeFloating a ar) =>- (MultiValue.T a ~ am) =>+ (Marshal.C a, NiceValue.Field a, NiceValue.Fraction a,+ NiceValue.Select a, NiceValue.Comparison a,+ NiceValue.NativeFloating a ar,+ NiceValue.RationalConstant a,+ NiceValueVec.NativeFloating a ar) =>+ (NiceValue.T a ~ am) => (Memory.C v) => (Exp (Ip.Margin (nodesLeap (nodesStep v))) ->- (Func.T (am, am) (MultiValue.T Word),+ (Func.T (am, am) (NiceValue.T Word), Func.T (am, am) am) -> (Func.T (am, am) (RingBuffer.T v),- Func.T (am, am) (MultiValue.T Word),+ Func.T (am, am) (NiceValue.T Word), Func.T (am, am) am)) -> (forall r. Ip.T r nodesLeap am v) -> (forall r. Ip.T r nodesStep am v) ->@@ -265,16 +265,16 @@ shapePhases constantFromWord ::- (MultiValue.NativeFloating a ar) =>- Exp Word -> Func.T inp (MultiValue.T a)+ (NiceValue.NativeFloating a ar) =>+ Exp Word -> Func.T inp (NiceValue.T a) constantFromWord x = Func.fromSignal (Causal.map Expr.fromIntegral $* Sig.constant x) limitMinShape ::- (Marshal.C a, MultiValue.Select a, MultiValue.Comparison a,- MultiValue.NativeFloating a ar) =>+ (Marshal.C a, NiceValue.Select a, NiceValue.Comparison a,+ NiceValue.NativeFloating a ar) => Exp Word ->- Causal.T (MultiValue.T a) (MultiValue.T a)+ Causal.T (NiceValue.T a) (NiceValue.T a) limitMinShape xLim = Causal.mapAccum (\x lim ->@@ -283,9 +283,9 @@ (Expr.fromIntegral xLim) integrateFrac ::- (Marshal.C a, MultiValue.Additive a,- MultiValueVec.NativeFloating a ar, LLVM.IsPrimitive ar) =>- Causal.T (MultiValue.T a) (MultiValue.T Word, MultiValue.T a)+ (Marshal.C a, NiceValue.Additive a,+ NiceValueVec.NativeFloating a ar, LLVM.IsPrimitive ar) =>+ Causal.T (NiceValue.T a) (NiceValue.T Word, NiceValue.T a) integrateFrac = Causal.mapAccum (\a frac ->@@ -306,9 +306,9 @@ cellFromBuffer :: (Memory.C a, Ip.C nodesLeap, Ip.C nodesStep) =>- MultiValue.T Word ->+ NiceValue.T Word -> RingBuffer.T a ->- MultiValue.T Word ->+ NiceValue.T Word -> LLVM.CodeGenFunction r (nodesLeap (nodesStep a)) cellFromBuffer periodInt buffer offset = Ip.indexNodesExp@@ -321,16 +321,16 @@ elementMargin = Expr.liftReprM return peekCell ::- (Storable.C a, MultiValue.T a ~ value, Ip.C nodesLeap, Ip.C nodesStep) =>+ (Storable.C a, NiceValue.T a ~ value, Ip.C nodesLeap, Ip.C nodesStep) => Exp (Ip.Margin (nodesLeap (nodesStep value))) -> Exp Word -> Exp (Source.StorableVector a) ->- Causal.T (MultiValue.T Word) (nodesLeap (nodesStep value))+ Causal.T (NiceValue.T Word) (nodesLeap (nodesStep value)) peekCell margin periodWord vec = CausalPriv.map (\n -> do- ~(MultiValue.Cons (ptr,_l)) <- Expr.unExp vec- ~(MultiValue.Cons offset) <-+ ~(NiceValue.Cons (ptr,_l)) <- Expr.unExp vec+ ~(NiceValue.Cons offset) <- Expr.unExp $ intFromWord (Expr.lift0 n) - Ip.marginOffsetExp margin perInt <- Expr.unExp $ intFromWord periodWord Ip.loadNodesExp (Ip.loadNodesExp Storable.load A.one) perInt@@ -338,25 +338,25 @@ flattenShapePhaseProc ::- (MultiValue.Field a, MultiValue.RationalConstant a, MultiValue.Fraction a) =>- (MultiValue.NativeFloating a ar, MultiValueVec.NativeFloating a ar) =>+ (NiceValue.Field a, NiceValue.RationalConstant a, NiceValue.Fraction a) =>+ (NiceValue.NativeFloating a ar, NiceValueVec.NativeFloating a ar) => Exp Word -> Exp a -> Causal.T- (MultiValue.T a, MultiValue.T a)- (MultiValue.T Word, (MultiValue.T a, MultiValue.T a))+ (NiceValue.T a, NiceValue.T a)+ (NiceValue.T Word, (NiceValue.T a, NiceValue.T a)) flattenShapePhaseProc periodInt period = Causal.map (\(shape, phase) -> flattenShapePhase periodInt period shape phase) _flattenShapePhaseProc ::- (MultiValue.Field a, MultiValue.RationalConstant a, MultiValue.Fraction a) =>- (MultiValue.NativeFloating a ar) =>+ (NiceValue.Field a, NiceValue.RationalConstant a, NiceValue.Fraction a) =>+ (NiceValue.NativeFloating a ar) => Exp Word -> Exp a -> Causal.T- (MultiValue.T a, MultiValue.T a)- (MultiValue.T Word, (MultiValue.T a, MultiValue.T a))+ (NiceValue.T a, NiceValue.T a)+ (NiceValue.T Word, (NiceValue.T a, NiceValue.T a)) _flattenShapePhaseProc period32 period = CausalPriv.map (\(shape, phase) -> do@@ -365,8 +365,8 @@ _flattenShapePhase perInt per shape phase) flattenShapePhaseProcPacked ::- (TypeNum.Positive n, MultiVector.Field a, MultiVector.RationalConstant a) =>- (MultiVector.Fraction a, MultiVector.NativeFloating n a ar) =>+ (TypeNum.Positive n, NiceVector.Field a, NiceVector.RationalConstant a) =>+ (NiceVector.Fraction a, NiceVector.NativeFloating n a ar) => Exp Word -> Exp a -> Causal.T@@ -378,8 +378,8 @@ (SerialExp.upsample periodInt) (SerialExp.upsample period)) flattenShapePhase ::- (MultiValue.Field a, MultiValue.RationalConstant a, MultiValue.Fraction a) =>- (MultiValueVec.NativeFloating a ar, MultiValueVec.NativeInteger i ir) =>+ (NiceValue.Field a, NiceValue.RationalConstant a, NiceValue.Fraction a) =>+ (NiceValueVec.NativeFloating a ar, NiceValueVec.NativeInteger i ir) => (LLVM.ShapeOf ir ~ LLVM.ShapeOf ar) => Exp i -> Exp a -> Exp a -> Exp a ->@@ -398,12 +398,12 @@ in (n,(qLeap,qStep)) _flattenShapePhase ::- (MultiValue.Field a, MultiValue.RationalConstant a, MultiValue.Fraction a) =>- (MultiValue.NativeFloating a ar, MultiValue.NativeInteger i ir) =>- MultiValue.T i ->- MultiValue.T a ->- MultiValue.T a -> MultiValue.T a ->- LLVM.CodeGenFunction r (MultiValue.T i, (MultiValue.T a, MultiValue.T a))+ (NiceValue.Field a, NiceValue.RationalConstant a, NiceValue.Fraction a) =>+ (NiceValue.NativeFloating a ar, NiceValue.NativeInteger i ir) =>+ NiceValue.T i ->+ NiceValue.T a ->+ NiceValue.T a -> NiceValue.T a ->+ LLVM.CodeGenFunction r (NiceValue.T i, (NiceValue.T a, NiceValue.T a)) _flattenShapePhase = Expr.unliftM4 $ \periodInt period shape phase -> let qLeap = Expr.fraction $ shape/period - phase (n,qStep) =@@ -420,10 +420,10 @@ limitShape :: (Ip.C nodesStep, Ip.C nodesLeap) =>- (Marshal.C t, MultiValue.Real t, MultiValue.NativeFloating t tr) =>+ (Marshal.C t, NiceValue.Real t, NiceValue.NativeFloating t tr) => (i ~ Int) => Exp (Ip.Margin (nodesLeap (nodesStep value))) ->- Exp i -> Exp i -> Causal.MV t t+ Exp i -> Exp i -> Causal.Nice t t limitShape margin periodInt len = Causal.zipWith Expr.limit $<@@ -431,8 +431,8 @@ limitShapePacked :: (Ip.C nodesStep, Ip.C nodesLeap) =>- (Marshal.C t, MultiValue.NativeFloating t tr) =>- (TypeNum.Positive n, MultiVector.Real t) =>+ (Marshal.C t, NiceValue.NativeFloating t tr) =>+ (TypeNum.Positive n, NiceVector.Real t) => (i ~ Int) => Exp (Ip.Margin (nodesLeap (nodesStep value))) -> Exp i ->@@ -450,12 +450,12 @@ limitShapeSignal :: (Ip.C nodesStep, Ip.C nodesLeap) =>- (Marshal.C t, MultiValue.NativeFloating t tr) =>+ (Marshal.C t, NiceValue.NativeFloating t tr) => (i ~ Int) => Exp (Ip.Margin (nodesLeap (nodesStep value))) -> Exp i -> Exp i ->- Sig.T (MultiValue.T t, MultiValue.T t)+ Sig.T (NiceValue.T t, NiceValue.T t) limitShapeSignal margin periodInt len = SigPriv.Cons (\minMax -> noLocalPtr $ \() -> return (minMax, ()))@@ -483,15 +483,15 @@ shapeMargin margin periodInt = let (marginNumber, marginOffset) = Expr.unzip $- Expr.lift1 (uncurry MultiValue.zip . Ip.unzipMargin) margin+ Expr.lift1 (uncurry NiceValue.zip . Ip.unzipMargin) margin leftMargin = marginOffset + periodInt rightMargin = marginNumber - leftMargin in (leftMargin, rightMargin) _shapeLimits :: (Ip.C nodesLeap, Ip.C nodesStep) =>- (MultiValue.NativeFloating t tr) =>- (MultiValue.Additive t) =>+ (NiceValue.NativeFloating t tr) =>+ (NiceValue.Additive t) => Ip.Margin (nodesLeap (nodesStep value)) -> Exp Word -> Exp t -> (Exp t, Exp t) _shapeLimits margin periodInt len =@@ -553,23 +553,23 @@ -} zigZagLong :: (Marshal.C a) =>- (MultiValue.Select a, MultiValue.Comparison a, MultiValue.Fraction a) =>- (MultiValue.Field a, MultiValue.RationalConstant a) =>- Exp a -> Exp a -> Causal.MV a a+ (NiceValue.Select a, NiceValue.Comparison a, NiceValue.Fraction a) =>+ (NiceValue.Field a, NiceValue.RationalConstant a) =>+ Exp a -> Exp a -> Causal.Nice a a zigZagLong = zigZagLongGen (Causal.fromSignal . Sig.constant) zigZag zigZagLongPacked :: (Marshal.Vector n a) =>- (MultiVector.Field a, MultiVector.Fraction a) =>- (MultiVector.RationalConstant a) =>- (MultiVector.Select a, MultiVector.Comparison a) =>+ (NiceVector.Field a, NiceVector.Fraction a) =>+ (NiceVector.RationalConstant a) =>+ (NiceVector.Select a, NiceVector.Comparison a) => Exp a -> Exp a -> Causal.T (Serial.Value n a) (Serial.Value n a) zigZagLongPacked = zigZagLongGen (Causal.fromSignal . SigPS.constant) zigZagPacked zigZagLongGen ::- (MultiValue.RationalConstant a, MultiValue.Field a) =>+ (NiceValue.RationalConstant a, NiceValue.Field a) => (A.RationalConstant al, A.Field al) => (Exp a -> Causal.T al al) -> (Exp a -> Causal.T al al) ->@@ -588,9 +588,9 @@ -} zigZag :: (Marshal.C a) =>- (MultiValue.Select a, MultiValue.Comparison a, MultiValue.Fraction a) =>- (MultiValue.Field a, MultiValue.RationalConstant a) =>- Exp a -> Causal.MV a a+ (NiceValue.Select a, NiceValue.Comparison a, NiceValue.Fraction a) =>+ (NiceValue.Field a, NiceValue.RationalConstant a) =>+ Exp a -> Causal.Nice a a zigZag start = Causal.map (\x -> 1 - abs (1-x)) <<<@@ -601,9 +601,9 @@ zigZagPacked :: (TypeNum.Positive n) => (Marshal.C a) =>- (MultiVector.Field a, MultiVector.Fraction a) =>- (MultiVector.RationalConstant a) =>- (MultiVector.Select a, MultiVector.Comparison a) =>+ (NiceVector.Field a, NiceVector.Fraction a) =>+ (NiceVector.RationalConstant a) =>+ (NiceVector.Select a, NiceVector.Comparison a) => Exp a -> Causal.T (Serial.Value n a) (Serial.Value n a) zigZagPacked start = Causal.map (\x -> 1 - abs (1-x))@@ -615,7 +615,7 @@ start wrap ::- (MultiValue.Field a, MultiValue.Fraction a, MultiValue.RationalConstant a) =>+ (NiceValue.Field a, NiceValue.Fraction a, NiceValue.RationalConstant a) => (Exp b -> Exp a -> Exp a -> Exp a) -> (Exp a -> Exp b) -> Exp a -> Exp a
src/Synthesizer/LLVM/Causal/Parametric.hs view
@@ -7,8 +7,8 @@ import LLVM.DSL.Expression (Exp(Exp)) -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Tuple as Tuple@@ -31,7 +31,7 @@ (forall r. p -> global -> LLVM.CodeGenFunction r ()) -fromProcess :: String -> (Exp p -> Causal.T a b) -> IO (T (MultiValue.T p) a b)+fromProcess :: String -> (Exp p -> Causal.T a b) -> IO (T (NiceValue.T p) a b) fromProcess name f = do ref <- newIORef $ error $ name ++ ": uninitialized parameter reference" return $@@ -63,7 +63,7 @@ loadParam :: (Marshal.C param) =>- IORef (MultiValue.T param) ->+ IORef (NiceValue.T param) -> LLVM.Value (MarshalPtr param) -> LLVM.CodeGenFunction r () loadParam ref ptr = liftIO . writeIORef ref =<< Memory.load ptr
src/Synthesizer/LLVM/Causal/Private.hs view
@@ -13,8 +13,8 @@ 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 qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Control as C@@ -241,7 +241,7 @@ LLVM.getElementPtr0 globalStatePtr (TypeNum.d1, ()) return a1) (do- MultiValue.Cons len <- Expr.unExp n+ NiceValue.Cons len <- Expr.unExp n globalStates <- LLVM.arrayMalloc len C.arrayLoop len globalStates () $ \globalStatePtr () -> flip Memory.store globalStatePtr =<< start@@ -271,9 +271,9 @@ quantizeLift ::- (Memory.C b, Marshal.C c, MultiValue.IntegerConstant c,- MultiValue.Additive c, MultiValue.Comparison c) =>- T a b -> T (MultiValue.T c, a) b+ (Memory.C b, Marshal.C c, NiceValue.IntegerConstant c,+ NiceValue.Additive c, NiceValue.Comparison c) =>+ T a b -> T (NiceValue.T c, a) b quantizeLift (Cons next start stop) = Cons (\global local (k, a0) yState0 -> do (yState1, frac1) <-@@ -282,7 +282,7 @@ (LLVM.valueOf True, yState0) (\(cont1, (_, frac0)) -> LLVM.and cont1 . unbool- =<< MultiValue.cmp LLVM.CmpLE frac0 A.zero)+ =<< NiceValue.cmp LLVM.CmpLE frac0 A.zero) (\(_,((_,state01), frac0)) -> MaybeCont.toBool $ liftA2 (,) (next global local a0 state01)
src/Synthesizer/LLVM/Causal/Process.hs view
@@ -2,7 +2,7 @@ {-# LANGUAGE TypeOperators #-} {-# LANGUAGE Rank2Types #-} module Synthesizer.LLVM.Causal.Process (- Causal.T, MV,+ Causal.T, Nice, CausalClass.fromSignal, CausalClass.toSignal, (CausalClass.$<), (CausalClass.$>), (CausalClass.$*),@@ -36,6 +36,8 @@ osci, shapeModOsci, skip,+ foldChunks,+ foldChunksPartial, frequencyModulation, frequencyModulationLinear, Causal.quantizeLift,@@ -61,6 +63,7 @@ import qualified Synthesizer.LLVM.Causal.Private as Causal import qualified Synthesizer.LLVM.Generator.Private as SigPriv import qualified Synthesizer.LLVM.Generator.Signal as Sig+import qualified Synthesizer.LLVM.Fold as Fold import qualified Synthesizer.LLVM.RingBuffer as RingBuffer import qualified Synthesizer.LLVM.Interpolation as Interpolation import qualified Synthesizer.LLVM.Frame.Stereo as Stereo@@ -75,9 +78,9 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Maybe as Maybe@@ -114,7 +117,7 @@ import Prelude () -type MV a b = Causal.T (MultiValue.T a) (MultiValue.T b)+type Nice a b = Causal.T (NiceValue.T a) (NiceValue.T b) infixl 0 $<#, $>#, $*#@@ -124,19 +127,19 @@ -} ($*#) :: (CausalClass.C process, CausalClass.SignalOf process ~ signal,- MultiValue.C a) =>- process (MultiValue.T a) b -> a -> signal b-proc $*# x = CausalClass.applyConst proc $ MultiValue.cons x+ NiceValue.C a) =>+ process (NiceValue.T a) b -> a -> signal b+proc $*# x = CausalClass.applyConst proc $ NiceValue.cons x ($<#) ::- (CausalClass.C process, MultiValue.C a) =>- process (MultiValue.T a, b) c -> a -> process b c-proc $<# x = CausalClass.applyConstFst proc $ MultiValue.cons x+ (CausalClass.C process, NiceValue.C a) =>+ process (NiceValue.T a, b) c -> a -> process b c+proc $<# x = CausalClass.applyConstFst proc $ NiceValue.cons x ($>#) ::- (CausalClass.C process, MultiValue.C b) =>- process (a, MultiValue.T b) c -> b -> process a c-proc $># x = CausalClass.applyConstSnd proc $ MultiValue.cons x+ (CausalClass.C process, NiceValue.C b) =>+ process (a, NiceValue.T b) c -> b -> process a c+proc $># x = CausalClass.applyConstSnd proc $ NiceValue.cons x @@ -171,7 +174,7 @@ {- | You may also use '(+)' and a 'Sig.constant' signal or a number literal. -}-raise :: (Marshal.C a, MultiValue.Additive a) => Exp a -> MV a a+raise :: (Marshal.C a, NiceValue.Additive a) => Exp a -> Nice a a raise x = mix $< Sig.constant x @@ -193,21 +196,21 @@ amplify x = envelope $< Sig.constant x amplifyStereo ::- (Marshal.C a, MultiValue.PseudoRing a, Stereo.T (MultiValue.T a) ~ stereo) =>+ (Marshal.C a, NiceValue.PseudoRing a, Stereo.T (NiceValue.T a) ~ stereo) => Exp a -> Causal.T stereo stereo amplifyStereo x = envelopeStereo $< Sig.constant x mapLinear ::- (Marshal.C a, MultiValue.T a ~ am,- MultiValue.PseudoRing a, MultiValue.IntegerConstant a) =>+ (Marshal.C a, NiceValue.T a ~ am,+ NiceValue.PseudoRing a, NiceValue.IntegerConstant a) => Exp a -> Exp a -> Causal.T am am mapLinear depth center = map (\x -> center + depth*x) -- ToDo: use base 2 mapExponential ::- (Marshal.C a, MultiValue.T a ~ am,- MultiValue.Transcendental a, MultiValue.RationalConstant a) =>+ (Marshal.C a, NiceValue.T a ~ am,+ NiceValue.Transcendental a, NiceValue.RationalConstant a) => Exp a -> Exp a -> Causal.T am am mapExponential depth center = let logDepth = log depth@@ -271,7 +274,7 @@ (Marshal.C b, (n TypeNum.:*: LLVM.SizeOf (Marshal.Struct b)) ~ bSize, TypeNum.Natural bSize) => (Exp b -> Causal.T (c,a) a) ->- Exp (MultiValue.Array n b) -> Causal.T (c,a) a+ Exp (NiceValue.Array n b) -> Causal.T (c,a) a replicateControlledParam f ps = Unsafe.performIO $ do let n :: Word n = TypeNum.integralFromProxy $ arraySize ps@@ -364,11 +367,11 @@ arrayFromStereo :: (Marshal.C a) =>- Stereo.T (MultiValue.T a) ->- LLVM.CodeGenFunction r (MultiValue.T (MultiValue.Array TypeNum.D2 a))+ Stereo.T (NiceValue.T a) ->+ LLVM.CodeGenFunction r (NiceValue.T (NiceValue.Array TypeNum.D2 a)) arrayFromStereo a =- MultiValue.insertArrayValue TypeNum.d0 (Stereo.left a) =<<- MultiValue.insertArrayValue TypeNum.d1 (Stereo.right a) MultiValue.undef+ NiceValue.insertArrayValue TypeNum.d0 (Stereo.left a) =<<+ NiceValue.insertArrayValue TypeNum.d1 (Stereo.right a) NiceValue.undef stereoFromMonoParametric :: (Marshal.C x,@@ -478,9 +481,9 @@ -} skip :: (Tuple.Undefined a, Tuple.Phi a, Memory.C a) =>- Sig.T a -> Causal.T (MultiValue.T Word) a+ Sig.T a -> Causal.T (NiceValue.T Word) a skip (SigPriv.Cons next start stop) = Causal.Cons- (\global local n1 (yState0, MultiValue.Cons n0) -> do+ (\global local n1 (yState0, NiceValue.Cons n0) -> do yState1@(y,_) <- MaybeCont.fromMaybe $ fmap snd $ MaybeCont.fixedLengthLoop n0 yState0 $@@ -489,14 +492,62 @@ (mapSnd (\s -> ((Tuple.undef, s), A.one)) <$> start) stop +{- |+The input of the process is a sequence of chunk sizes.+The signal is chopped into chunks of these sizes+and each chunk is folded using+the given initial value and the accumulation function.+A trailing incomplete chunk will be ignored.+-}+foldChunks ::+ (Tuple.Undefined b, Tuple.Phi b) =>+ Fold.T a b -> Sig.T a -> Causal.T (NiceValue.T Word) b+foldChunks (Fold.Cons accum initial) (SigPriv.Cons next start stop) =+ Causal.Cons+ (\global local (NiceValue.Cons n) state ->+ MaybeCont.fromMaybe $ fmap snd $+ MaybeCont.fixedLengthLoop n (initial,state) $ \(b0,state0) -> do+ (a,state1) <- next global local state0+ b1 <- MaybeCont.lift $ accum b0 a+ return (b1,state1))+ start+ stop++{- |+Like 'foldChunks' but an incomplete chunk at the end+is treated like a complete one.+-}+foldChunksPartial ::+ (Tuple.Undefined a, Tuple.Phi a, Tuple.Undefined b, Tuple.Phi b) =>+ Fold.T a b -> Sig.T a -> Causal.T (NiceValue.T Word) b+foldChunksPartial (Fold.Cons accum initial) (SigPriv.Cons next start stop) =+ Causal.Cons+ (\global local (NiceValue.Cons n) runState0 -> do+ ((i,b), runState1) <-+ MaybeCont.lift $+ C.whileLoopShared ((n, initial), runState0) $+ \((i0,b0), (run,s0)) ->+ (A.and run =<< A.cmp LLVM.CmpGT i0 A.zero,+ do mas1 <- MaybeCont.toMaybe $ next global local s0+ Maybe.run mas1+ (return ((i0,b0), (LLVM.valueOf False, s0)))+ (\(a,s1) -> do+ b1 <- accum b0 a+ i1 <- A.dec i0+ return ((i1,b1), (LLVM.valueOf True, s1))))+ MaybeCont.guard =<< MaybeCont.lift (A.cmp LLVM.CmpLT i n)+ return (b, runState1))+ (fmap (mapSnd ((,) (LLVM.valueOf True))) $ start)+ stop+ frequencyModulation :: (Marshal.C a,- MultiValue.IntegerConstant a,- MultiValue.Additive a,- MultiValue.Comparison a,+ NiceValue.IntegerConstant a,+ NiceValue.Additive a,+ NiceValue.Comparison a, Tuple.Undefined nodes, Tuple.Phi nodes, Memory.C nodes) =>- (forall r. MultiValue.T a -> nodes -> LLVM.CodeGenFunction r v) ->- SigPriv.T nodes -> Causal.T (MultiValue.T a) v+ (forall r. NiceValue.T a -> nodes -> LLVM.CodeGenFunction r v) ->+ SigPriv.T nodes -> Causal.T (NiceValue.T a) v frequencyModulation ip (SigPriv.Cons next start stop) = Causal.Cons (\global local k yState0 -> do ((nodes2,state2), ss2) <-@@ -504,7 +555,7 @@ C.whileLoop (LLVM.valueOf True, yState0) (\(cont0, (_, ss0)) ->- LLVM.and cont0 . unbool =<< MultiValue.cmp LLVM.CmpGE ss0 A.one)+ LLVM.and cont0 . unbool =<< NiceValue.cmp LLVM.CmpGE ss0 A.one) (\(_,((_,state0), ss0)) -> MaybeCont.toBool $ liftA2 (,) (next global local state0)@@ -518,9 +569,9 @@ stop frequencyModulationLinear ::- (MultiValue.PseudoRing a, MultiValue.IntegerConstant a,- MultiValue.Comparison a, Marshal.C a) =>- Sig.MV a -> MV a a+ (NiceValue.PseudoRing a, NiceValue.IntegerConstant a,+ NiceValue.Comparison a, Marshal.C a) =>+ Sig.Nice a -> Nice a a frequencyModulationLinear sig = frequencyModulation Interpolation.linear (Sig.adjacentNodes02 sig) @@ -536,7 +587,7 @@ size1 <- A.inc size0 return (RingBuffer.Cons ptr size1 remain0 remain1, remain1)) (do- MultiValue.Cons size0 <- Expr.unExp time+ NiceValue.Cons size0 <- Expr.unExp time size1 <- A.inc size0 ptr <- LLVM.arrayMalloc size1 a <- Expr.bundle initial@@ -562,13 +613,13 @@ Delay time must be greater than zero! -} comb ::- (Marshal.C a, MultiValue.PseudoRing a) =>- Exp a -> Exp Word -> MV a a+ (Marshal.C a, NiceValue.PseudoRing a) =>+ Exp a -> Exp Word -> Nice a a comb gain time = loopZero (mix >>> (Cat.id &&& (delayZero (time-1) >>> amplify gain))) combStereo ::- (Marshal.C a, MultiValue.PseudoRing a, Stereo.T (MultiValue.T a) ~ stereo) =>+ (Marshal.C a, NiceValue.PseudoRing a, Stereo.T (NiceValue.T a) ~ stereo) => Exp a -> Exp Word -> Causal.T stereo stereo combStereo gain time = loopZero (mix >>> (Cat.id &&& (delayZero (time-1) >>> amplifyStereo gain)))@@ -577,8 +628,8 @@ (TypeNum.Natural n, (n TypeNum.:*: LLVM.UnknownSize) ~ paramSize, TypeNum.Natural paramSize) => (Marshal.C a,- MultiValue.Field a, MultiValue.Real a, MultiValue.IntegerConstant a) =>- Exp (MultiValue.Array n (a,Word)) -> MV a a+ NiceValue.Field a, NiceValue.Real a, NiceValue.IntegerConstant a) =>+ Exp (NiceValue.Array n (a,Word)) -> Nice a a reverbExplicit params = amplify (Expr.recip $ TypeNum.integralFromProxy $ arraySize params) <<<@@ -590,7 +641,7 @@ reverbParams :: (RandomGen g, TypeNum.Integer n, Random a) =>- g -> Proxy n -> (a,a) -> (Word, Word) -> MultiValue.Array n (a, Word)+ g -> Proxy n -> (a,a) -> (Word, Word) -> NiceValue.Array n (a, Word) reverbParams rnd Proxy gainRange timeRange = flip MS.evalState rnd $ sequenceA $ pure $@@ -606,11 +657,11 @@ -} delayControlled :: (Expr.Aggregate ae al, Memory.C al) =>- ae -> Exp Word -> Causal.T (MultiValue.T Word, al) al+ ae -> Exp Word -> Causal.T (NiceValue.T Word, al) al delayControlled initial maxTime = Causal.zipWith RingBuffer.index <<<- arr (\(MultiValue.Cons i) -> i) *** track initial maxTime+ arr (\(NiceValue.Cons i) -> i) *** track initial maxTime {- | Delay by a variable fractional amount of samples.@@ -619,8 +670,8 @@ -} delayControlledInterpolated :: (Interpolation.C nodes) =>- (MultiValue.T a ~ am) =>- (MultiValue.NativeFloating a ar, MultiValue.Additive a) =>+ (NiceValue.T a ~ am) =>+ (NiceValue.NativeFloating a ar, NiceValue.Additive a) => (Expr.Aggregate ve v, Memory.C v) => (forall r. Interpolation.T r nodes am v) -> ve -> Exp Word -> Causal.T (am, v) v@@ -631,9 +682,9 @@ let offset = A.fromInteger' $ fromIntegral $ Interpolation.marginOffset margin- n <- A.max offset =<< MultiValue.truncateToInt del- k <- A.sub del =<< MultiValue.fromIntegral n- ~(MultiValue.Cons m) <- A.sub n (offset :: MultiValue.T Word)+ n <- A.max offset =<< NiceValue.truncateToInt del+ k <- A.sub del =<< NiceValue.fromIntegral n+ ~(NiceValue.Cons m) <- A.sub n (offset :: NiceValue.T Word) ip k =<< Interpolation.indexNodes (flip RingBuffer.index buf) A.one m) <<<@@ -669,14 +720,14 @@ then we may add a more sensible initialization. -} pipeline ::- (TypeNum.Positive n, MultiVector.C x,- v ~ MultiVector.T n x,- a ~ MultiValue.T x,+ (TypeNum.Positive n, NiceVector.C x,+ v ~ NiceVector.T n x,+ a ~ NiceValue.T x, Tuple.Zero v, Memory.C v) => Causal.T v v -> Causal.T a a pipeline vectorProcess =- loopConst MultiVector.zero $- Causal.map (uncurry MultiVector.shiftUp)+ loopConst NiceVector.zero $+ Causal.map (uncurry NiceVector.shiftUp) >>> Arrow.second vectorProcess @@ -689,8 +740,8 @@ -} vectorize :: (TypeNum.Positive n,- MultiVector.C x, MultiValue.T x ~ a, MultiVector.T n x ~ va,- MultiVector.C y, MultiValue.T y ~ b, MultiVector.T n y ~ vb) =>+ NiceVector.C x, NiceValue.T x ~ a, NiceVector.T n x ~ va,+ NiceVector.C y, NiceValue.T y ~ b, NiceVector.T n y ~ vb) => Causal.T a b -> Causal.T va vb vectorize proc = withSize $ \n ->@@ -700,7 +751,7 @@ List.take (TypeNum.integralFromSingleton n) [0 ..] withSize ::- (TypeNum.Positive n, MultiVector.T n a ~ v) =>+ (TypeNum.Positive n, NiceVector.T n a ~ v) => (TypeNum.Singleton n -> f v) -> f v withSize f = f TypeNum.singleton@@ -711,13 +762,13 @@ -} replaceChannel :: (TypeNum.Positive n,- MultiVector.C x, MultiValue.T x ~ a, MultiVector.T n x ~ va,- MultiVector.C y, MultiValue.T y ~ b, MultiVector.T n y ~ vb) =>+ NiceVector.C x, NiceValue.T x ~ a, NiceVector.T n x ~ va,+ NiceVector.C y, NiceValue.T y ~ b, NiceVector.T n y ~ vb) => Int -> Causal.T a b -> Causal.T va vb -> Causal.T va vb replaceChannel i channel proc = let li = LLVM.valueOf $ fromIntegral i- in Causal.zipWith (MultiVector.insert li) <<<- (channel <<< Causal.map (MultiVector.extract li)) &&&+ in Causal.zipWith (NiceVector.insert li) <<<+ (channel <<< Causal.map (NiceVector.extract li)) &&& proc @@ -727,8 +778,8 @@ arrayElement :: (Marshal.C a, Marshal.Struct a ~ aStruct, LLVM.IsFirstClass aStruct, TypeNum.Natural i, TypeNum.Natural n, i :<: n) =>- Proxy i -> Causal.T (MultiValue.T (MultiValue.Array n a)) (MultiValue.T a)-arrayElement i = Causal.map (MultiValue.extractArrayValue i)+ Proxy i -> Causal.T (NiceValue.T (NiceValue.Array n a)) (NiceValue.T a)+arrayElement i = Causal.map (NiceValue.extractArrayValue i) {- |@@ -740,7 +791,7 @@ trigger :: (Marshal.C a, Tuple.Undefined b, Tuple.Phi b) => (Exp a -> Sig.T b) ->- Causal.T (Maybe.T (MultiValue.T a)) (Maybe.T b)+ Causal.T (Maybe.T (NiceValue.T a)) (Maybe.T b) trigger f = Unsafe.performIO $ do paramd <- Parametric.fromProcess "Causal.trigger" (CausalClass.fromSignal . f)@@ -780,8 +831,8 @@ Maybe.for maybeGlobal $ \(a,global) -> stop a global nothingFromFunc ::- (MultiValue.C a, Tuple.Undefined global) =>+ (NiceValue.C a, Tuple.Undefined global) => (Exp a -> Sig.T b) -> (ap -> global -> code) ->- Maybe.T (MultiValue.T a, global)+ Maybe.T (NiceValue.T a, global) nothingFromFunc _ _ = Maybe.nothing
src/Synthesizer/LLVM/Causal/ProcessPacked.hs view
@@ -14,9 +14,9 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Extra.MaybeContinuation as Maybe import qualified LLVM.Extra.Control as C@@ -42,7 +42,7 @@ import Prelude () -type Serial n a = MultiValue.T (Serial.T n a)+type Serial n a = NiceValue.T (Serial.T n a) {- |@@ -103,21 +103,21 @@ raise ::- (TypeNum.Positive n, MultiVector.Additive a) =>+ (TypeNum.Positive n, NiceVector.Additive a) => Exp a -> Causal.T (Serial n a) (Serial n a) raise x = CausalPriv.map (\y -> Expr.unExp (Serial.upsample x) >>= flip Frame.mix y) amplify ::- (TypeNum.Positive n, MultiVector.PseudoRing a) =>+ (TypeNum.Positive n, NiceVector.PseudoRing a) => Exp a -> Causal.T (Serial n a) (Serial n a) amplify x = CausalPriv.map (\y -> Expr.unExp (Serial.upsample x) >>= flip Frame.amplifyMono y) amplifyStereo ::- (TypeNum.Positive n, MultiVector.PseudoRing a) =>+ (TypeNum.Positive n, NiceVector.PseudoRing a) => Exp a -> Causal.T (Stereo.T (Serial n a)) (Stereo.T (Serial n a)) amplifyStereo x = CausalPriv.map@@ -126,7 +126,7 @@ delay1 :: (LLVM.Positive n, Marshal.C a,- MultiVector.C a, SerialCode.Value n a ~ v) =>+ NiceVector.C a, SerialCode.Value n a ~ v) => Exp a -> Causal.T v v delay1 initial = Causal.loop initial $@@ -134,20 +134,20 @@ differentiate :: (LLVM.Positive n, Marshal.C a,- MultiVector.Additive a, SerialCode.Value n a ~ v) =>+ NiceVector.Additive a, SerialCode.Value n a ~ v) => Exp a -> Causal.T v v differentiate initial = Cat.id - delay1 initial integrate :: (LLVM.Positive n, Marshal.C a,- MultiVector.Additive a, SerialCode.Value n a ~ v) =>+ NiceVector.Additive a, SerialCode.Value n a ~ v) => Exp a -> Causal.T v v integrate = Causal.mapAccum (\a acc0 -> swap $ Serial.cumulate acc0 a) osciCore ::- (TypeNum.Positive n, Marshal.C t, MultiVector.Fraction t) =>+ (TypeNum.Positive n, Marshal.C t, NiceVector.Fraction t) => Causal.T (Serial n t, Serial n t) (Serial n t) osciCore = CausalPriv.zipWith A.addToPhase <<<@@ -159,13 +159,13 @@ Expr.zero) osci ::- (TypeNum.Positive n, Marshal.C t, MultiVector.Fraction t) =>+ (TypeNum.Positive n, Marshal.C t, NiceVector.Fraction t) => (forall r. Serial n t -> LLVM.CodeGenFunction r y) -> Causal.T (Serial n t, Serial n t) y osci wave = CausalPriv.map wave <<< osciCore shapeModOsci ::- (TypeNum.Positive n, Marshal.C t, MultiVector.Fraction t) =>+ (TypeNum.Positive n, Marshal.C t, NiceVector.Fraction t) => (forall r. c -> Serial n t -> LLVM.CodeGenFunction r y) -> Causal.T (c, (Serial n t, Serial n t)) y shapeModOsci wave = CausalPriv.zipWith wave <<< Arrow.second osciCore@@ -173,8 +173,8 @@ arrayElement :: (TypeNum.Positive n,- MultiVector.C a, Marshal.C a,+ NiceVector.C a, Marshal.C a, Marshal.Struct a ~ aStruct, LLVM.IsFirstClass aStruct, TypeNum.Natural i, TypeNum.Natural d, i :<: d) =>- Proxy i -> Causal.T (MultiValue.T (MultiValue.Array d a)) (Serial n a)+ Proxy i -> Causal.T (NiceValue.T (NiceValue.Array d a)) (Serial n a) arrayElement i = Causal.map Serial.upsample <<< Causal.arrayElement i
src/Synthesizer/LLVM/Causal/Render.hs view
@@ -5,7 +5,8 @@ {-# LANGUAGE ForeignFunctionInterface #-} module Synthesizer.LLVM.Causal.Render ( -- * type driven- RunArg, DSLArg,+ Argument, DSLArg,+ Run, DSL, In, Out, run, runPlugged, processIO,@@ -13,7 +14,8 @@ -- * explicit argument converters runPluggedExplicit,- build, -- ToDo: better name+ function,+ argument, Plugs, -- * internally used in FunctionalPlug@@ -24,7 +26,7 @@ import qualified Synthesizer.LLVM.Causal.Parametric as Parametric import Synthesizer.LLVM.Causal.Private (T(Cons)) import Synthesizer.LLVM.Private.Render- (RunArg (DSLArg, buildArg),+ (Argument (DSLArg, argument), Triple, tripleStruct, derefStartPtr, derefStopPtr) import qualified Synthesizer.LLVM.Plug.Input as PIn@@ -39,9 +41,9 @@ import LLVM.DSL.Render.Run ((*->)) import LLVM.DSL.Expression (Exp(Exp)) -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Maybe as Maybe@@ -70,8 +72,8 @@ compile ::- (Storable.C a, MultiValue.T a ~ al,- Storable.C b, MultiValue.T b ~ bl,+ (Storable.C a, NiceValue.T a ~ al,+ Storable.C b, NiceValue.T b ~ bl, Marshal.C param, Marshal.Struct param ~ paramStruct) => (Exp param -> T al bl) -> IO (LLVM.Ptr paramStruct -> Word -> Ptr a -> Ptr b -> IO Word)@@ -93,8 +95,8 @@ runAux :: (Marshal.C p,- Storable.C a, MultiValue.T a ~ al,- Storable.C b, MultiValue.T b ~ bl) =>+ Storable.C a, NiceValue.T a ~ al,+ Storable.C b, NiceValue.T b ~ bl) => (Exp p -> T al bl) -> IO (IO () -> p -> SV.Vector a -> IO (SV.Vector b)) runAux proc = do@@ -109,8 +111,8 @@ _run :: (Marshal.C p,- Storable.C a, MultiValue.T a ~ al,- Storable.C b, MultiValue.T b ~ bl) =>+ Storable.C a, NiceValue.T a ~ al,+ Storable.C b, NiceValue.T b ~ bl) => (Exp p -> T al bl) -> IO (p -> SV.Vector a -> IO (SV.Vector b)) _run = fmap ($ return ()) . runAux @@ -125,8 +127,8 @@ Memory.C global, Memory.Struct global ~ globalStruct, Triple paramStruct globalStruct stateStruct ~ triple, LLVM.IsSized local,- Storable.C a, MultiValue.T a ~ valueA,- Storable.C b, MultiValue.T b ~ valueB) =>+ Storable.C a, NiceValue.T a ~ valueA,+ Storable.C b, NiceValue.T b ~ valueB) => (forall r z. (Tuple.Phi z) => pPtr -> global -> LLVM.Value (LLVM.Ptr local) ->@@ -286,7 +288,7 @@ and thus to a processor of chunky storable vectors. -} processIOParametric ::- (Marshal.C p, Cut.Read a, x ~ LLVM.Value (LLVM.Ptr (Marshal.Struct p))) =>+ (Marshal.C p, Cut.Consume a, x ~ LLVM.Value (LLVM.Ptr (Marshal.Struct p))) => PIn.T a b -> Parametric.T x b c -> POut.T c d -> IO (Arg.Creator p -> PIO.T a d) processIOParametric@@ -324,7 +326,7 @@ (\(deleteContext, ptr) -> stopFunc ptr >> deleteContext) processIOCore ::- (Marshal.C p, Cut.Read a) =>+ (Marshal.C p, Cut.Consume a) => PIn.T a b -> (Exp p -> T b c) -> POut.T c d -> IO (Arg.Creator p -> PIO.T a d) processIOCore pin proc pout = do@@ -332,7 +334,7 @@ processIOParametric pin paramd pout processIO ::- (Marshal.C p, Cut.Read a, PIn.Default a, POut.Default d) =>+ (Marshal.C p, Cut.Consume a, PIn.Default a, POut.Default d) => (Exp p -> T (PIn.Element a) (POut.Element d)) -> IO (p -> PIO.T a d) processIO proc =@@ -346,21 +348,21 @@ type DSL f a b type In f type Out f- build :: (Marshal.C p) => Run.T (Plugs f a b) p (DSL f a b) f+ function :: (Marshal.C p) => Run.T (Plugs f a b) p (DSL f a b) f -instance (Cut.Read a) => Run (PIO.T a b) where+instance (Cut.Consume a) => Run (PIO.T a b) where type DSL (PIO.T a b) al bl = T al bl type In (PIO.T a b) = a type Out (PIO.T a b) = b- build =+ function = Run.Cons $ \proc -> MR.ReaderT $ \(pin,pout) -> processIOCore pin proc pout -instance (RunArg a, Run f) => Run (a -> f) where+instance (Argument a, Run f) => Run (a -> f) where type DSL (a -> f) al bl = DSLArg a -> DSL f al bl type In (a -> f) = In f type Out (a -> f) = Out f- build = buildArg *-> build+ function = argument *-> function runPluggedExplicit ::@@ -371,7 +373,7 @@ runPlugged :: (Run f) => PIn.T (In f) a -> DSL f a b -> POut.T b (Out f) -> IO f-runPlugged = runPluggedExplicit build+runPlugged = runPluggedExplicit function run :: (Run f) =>@@ -381,9 +383,9 @@ run proc = runPlugged PIn.deflt proc POut.deflt _exampleExplicit ::- (Exp Float -> Exp Word -> T (MultiValue.T Float) (MultiValue.T Word)) ->+ (Exp Float -> Exp Word -> T (NiceValue.T Float) (NiceValue.T Word)) -> IO (Float -> Word -> PIO.T (SV.Vector Float) (SV.Vector Word)) _exampleExplicit proc = runPluggedExplicit- (Arg.primitive *-> Arg.primitive *-> build)+ (Arg.primitive *-> Arg.primitive *-> function) PIn.storableVector proc POut.storableVector
src/Synthesizer/LLVM/Causal/RingBufferForward.hs view
@@ -17,7 +17,7 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Maybe as Maybe import qualified LLVM.Extra.Memory as Memory@@ -82,8 +82,8 @@ Index zero refers to the current sample and index @time-1@ refers to the one that is farthermost in the future. -}-index :: (Memory.C a) => MultiValue.T Word -> T a -> CodeGenFunction r a-index (MultiValue.Cons i) rb = do+index :: (Memory.C a) => NiceValue.T Word -> T a -> CodeGenFunction r a+index (NiceValue.Cons i) rb = do k <- flip A.irem (length rb) =<< A.add (current rb) i Memory.load =<< LLVM.getElementPtr (buffer rb) (k, ()) @@ -110,14 +110,14 @@ -} trackSkip :: (Memory.C a) =>- Exp Word -> Sig.T a -> Causal.T (MultiValue.T Word) (T a)+ Exp Word -> Sig.T a -> Causal.T (NiceValue.T Word) (T a) trackSkip time (Sig.Cons next start stop) = CausalPriv.Cons (trackNext next) (trackStart start time) (trackStop stop) <<^- (\(MultiValue.Cons skip) -> skip)+ (\(NiceValue.Cons skip) -> skip) {- | Like @trackSkip@ but repeats the last buffer content@@ -143,19 +143,19 @@ trackSkipHold :: (Memory.C a) => Exp Word -> Sig.T a ->- Causal.T (MultiValue.T Word) ((MultiValue.T Bool, MultiValue.T Word), T a)+ Causal.T (NiceValue.T Word) ((NiceValue.T Bool, NiceValue.T Word), T a) trackSkipHold time xs = Arrow.first- (Arrow.second clearFirst <<^ mapPair (MultiValue.Cons, MultiValue.Cons))+ (Arrow.second clearFirst <<^ mapPair (NiceValue.Cons, NiceValue.Cons)) <<< trackSkipHold_ time xs <<^- (\(MultiValue.Cons skip) -> skip)+ (\(NiceValue.Cons skip) -> skip) clearFirst ::- (MultiValue.PseudoRing a, MultiValue.Real a,- MultiValue.IntegerConstant a, MultiValue.Select a) =>- Causal.MV a a+ (NiceValue.PseudoRing a, NiceValue.Real a,+ NiceValue.IntegerConstant a, NiceValue.Select a) =>+ Causal.Nice a a clearFirst = Causal.zipWith (\b x -> Expr.select b x 0) $< (Causal.delay1 Expr.false $*# True)@@ -198,7 +198,7 @@ (Value Word, (state, Value Word))) trackStart start size = do (context, state) <- start- ~(MultiValue.Cons size0) <- Expr.unExp size+ ~(NiceValue.Cons size0) <- Expr.unExp size ptr <- LLVM.arrayMalloc size0 return ((context, (size0,ptr)), (size0, (state, A.zero))) @@ -267,7 +267,7 @@ (Value Word, (Maybe.T state, Value Word))) trackStartHold start size = do (context, state) <- start- ~(MultiValue.Cons size0) <- Expr.unExp size+ ~(NiceValue.Cons size0) <- Expr.unExp size ptr <- LLVM.arrayMalloc size0 return ((context, (size0,ptr)), (size0, (Maybe.just state, A.zero)))
src/Synthesizer/LLVM/Complex.hs view
@@ -11,8 +11,8 @@ import qualified Synthesizer.LLVM.Value as Value -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Tuple as Tuple @@ -75,28 +75,28 @@ -instance (MultiValue.C a) => MultiValue.C (Complex.T a) where- type Repr (Complex.T a) = Complex.T (MultiValue.Repr a)+instance (NiceValue.C a) => NiceValue.C (Complex.T a) where+ type Repr (Complex.T a) = Complex.T (NiceValue.Repr a) cons x =- consMV- (MultiValue.cons $ Complex.real x)- (MultiValue.cons $ Complex.imag x)- undef = consMV MultiValue.undef MultiValue.undef- zero = consMV MultiValue.zero MultiValue.zero+ consNice+ (NiceValue.cons $ Complex.real x)+ (NiceValue.cons $ Complex.imag x)+ undef = consNice NiceValue.undef NiceValue.undef+ zero = consNice NiceValue.zero NiceValue.zero phi bb a =- case deconsMV a of- (a0,a1) -> liftA2 consMV (MultiValue.phi bb a0) (MultiValue.phi bb a1)+ case deconsNice a of+ (a0,a1) -> liftA2 consNice (NiceValue.phi bb a0) (NiceValue.phi bb a1) addPhi bb a b =- case (deconsMV a, deconsMV b) of+ case (deconsNice a, deconsNice b) of ((a0,a1), (b0,b1)) ->- MultiValue.addPhi bb a0 b0 >> MultiValue.addPhi bb a1 b1+ NiceValue.addPhi bb a0 b0 >> NiceValue.addPhi bb a1 b1 -consMV :: MultiValue.T a -> MultiValue.T a -> MultiValue.T (Complex.T a)-consMV (MultiValue.Cons a) (MultiValue.Cons b) = MultiValue.Cons (a+:b)+consNice :: NiceValue.T a -> NiceValue.T a -> NiceValue.T (Complex.T a)+consNice (NiceValue.Cons a) (NiceValue.Cons b) = NiceValue.Cons (a+:b) -deconsMV :: MultiValue.T (Complex.T a) -> (MultiValue.T a, MultiValue.T a)-deconsMV (MultiValue.Cons x) =- (MultiValue.Cons $ Complex.real x, MultiValue.Cons $ Complex.imag x)+deconsNice :: NiceValue.T (Complex.T a) -> (NiceValue.T a, NiceValue.T a)+deconsNice (NiceValue.Cons x) =+ (NiceValue.Cons $ Complex.real x, NiceValue.Cons $ Complex.imag x) instance (Marshal.C a) => Marshal.C (Complex.T a) where
src/Synthesizer/LLVM/EventIterator.hs view
@@ -6,7 +6,7 @@ import qualified Data.EventList.Relative.BodyTime as EventList import qualified Numeric.NonNegative.Wrapper as NonNeg -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal import qualified LLVM.Core as LLVM import Foreign.StablePtr
src/Synthesizer/LLVM/Filter/Allpass.hs view
@@ -10,7 +10,7 @@ module Synthesizer.LLVM.Filter.Allpass ( Parameter, Allpass.parameter, CascadeParameter(CascadeParameter), flangerParameter,- cascadeParameterMultiValue, cascadeParameterUnMultiValue,+ niceValueCascadeParameter, unNiceValueCascadeParameter, causal, cascade, phaser, cascadePipeline, phaserPipeline, causalPacked, cascadePacked, phaserPacked,@@ -29,9 +29,9 @@ import qualified LLVM.DSL.Expression as Expr -import qualified LLVM.Extra.Multi.Value.Marshal as MarshalMV-import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Marshal as MarshalNice+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Vector as Vector import qualified LLVM.Extra.Scalar as Scalar import qualified LLVM.Extra.Storable as Storable@@ -71,10 +71,10 @@ zero = Tuple.zeroPointed instance- (Expr.Aggregate e mv) =>- Expr.Aggregate (Parameter e) (Parameter mv) where- type MultiValuesOf (Parameter e) = Parameter (Expr.MultiValuesOf e)- type ExpressionsOf (Parameter mv) = Parameter (Expr.ExpressionsOf mv)+ (Expr.Aggregate e nv) =>+ Expr.Aggregate (Parameter e) (Parameter nv) where+ type NiceValuesOf (Parameter e) = Parameter (Expr.NiceValuesOf e)+ type ExpressionsOf (Parameter nv) = Parameter (Expr.ExpressionsOf nv) bundle = Trav.traverse Expr.bundle dissect = fmap Expr.dissect @@ -89,9 +89,9 @@ pack (Parameter k) = Marshal.pack k unpack = Parameter . Marshal.unpack -instance (MarshalMV.C a) => MarshalMV.C (Parameter a) where- pack (Parameter k) = MarshalMV.pack k- unpack = Parameter . MarshalMV.unpack+instance (MarshalNice.C a) => MarshalNice.C (Parameter a) where+ pack (Parameter k) = MarshalNice.pack k+ unpack = Parameter . MarshalNice.unpack instance (Storable.C a) => Storable.C (Parameter a) where load = Storable.loadNewtype Parameter Parameter@@ -106,72 +106,72 @@ type VectorValueOf n (Parameter a) = Parameter (Tuple.VectorValueOf n a) vectorValueOf = fmap Tuple.vectorValueOf . Trav.sequenceA -instance (MultiValue.C a) => MultiValue.C (Allpass.Parameter a) where- type Repr (Parameter a) = Parameter (MultiValue.Repr a)- cons = paramFromPlainValue . MultiValue.cons . Allpass.getParameter+instance (NiceValue.C a) => NiceValue.C (Allpass.Parameter a) where+ type Repr (Parameter a) = Parameter (NiceValue.Repr a)+ cons = paramFromPlainValue . NiceValue.cons . Allpass.getParameter - undef = paramFromPlainValue MultiValue.undef- zero = paramFromPlainValue MultiValue.zero+ undef = paramFromPlainValue NiceValue.undef+ zero = paramFromPlainValue NiceValue.zero phi bb = fmap paramFromPlainValue .- MultiValue.phi bb .+ NiceValue.phi bb . plainFromParamValue addPhi bb a b =- MultiValue.addPhi bb+ NiceValue.addPhi bb (plainFromParamValue a) (plainFromParamValue b) -instance (MultiVector.C a) => MultiVector.C (Allpass.Parameter a) where- type Repr n (Parameter a) = Parameter (MultiVector.Repr n a)- cons = paramFromPlainVector . MultiVector.cons . fmap Allpass.getParameter- undef = paramFromPlainVector MultiVector.undef- zero = paramFromPlainVector MultiVector.zero+instance (NiceVector.C a) => NiceVector.C (Allpass.Parameter a) where+ type Repr n (Parameter a) = Parameter (NiceVector.Repr n a)+ cons = paramFromPlainVector . NiceVector.cons . fmap Allpass.getParameter+ undef = paramFromPlainVector NiceVector.undef+ zero = paramFromPlainVector NiceVector.zero phi bb = fmap paramFromPlainVector .- MultiVector.phi bb .+ NiceVector.phi bb . plainFromParamVector addPhi bb a b =- MultiVector.addPhi bb+ NiceVector.addPhi bb (plainFromParamVector a) (plainFromParamVector b) shuffle is a b = fmap paramFromPlainVector $- MultiVector.shuffle is (plainFromParamVector a) (plainFromParamVector b)+ NiceVector.shuffle is (plainFromParamVector a) (plainFromParamVector b) extract i v = fmap paramFromPlainValue $- MultiVector.extract i $+ NiceVector.extract i $ plainFromParamVector v insert i a v = fmap paramFromPlainVector $- MultiVector.insert i (plainFromParamValue a) $+ NiceVector.insert i (plainFromParamValue a) $ plainFromParamVector v paramFromPlainVector ::- MultiVector.T n a ->- MultiVector.T n (Allpass.Parameter a)+ NiceVector.T n a ->+ NiceVector.T n (Allpass.Parameter a) paramFromPlainVector =- MultiVector.lift1 Allpass.Parameter+ NiceVector.lift1 Allpass.Parameter plainFromParamVector ::- MultiVector.T n (Allpass.Parameter a) ->- MultiVector.T n a+ NiceVector.T n (Allpass.Parameter a) ->+ NiceVector.T n a plainFromParamVector =- MultiVector.lift1 Allpass.getParameter+ NiceVector.lift1 Allpass.getParameter paramFromPlainValue ::- MultiValue.T a ->- MultiValue.T (Allpass.Parameter a)+ NiceValue.T a ->+ NiceValue.T (Allpass.Parameter a) paramFromPlainValue =- MultiValue.lift1 Allpass.Parameter+ NiceValue.lift1 Allpass.Parameter plainFromParamValue ::- MultiValue.T (Allpass.Parameter a) ->- MultiValue.T a+ NiceValue.T (Allpass.Parameter a) ->+ NiceValue.T a plainFromParamValue =- MultiValue.lift1 Allpass.getParameter+ NiceValue.lift1 Allpass.getParameter instance (Vector.Simple v) => Vector.Simple (Parameter v) where@@ -210,9 +210,9 @@ pack (CascadeParameter k) = Marshal.pack k unpack = CascadeParameter . Marshal.unpack -instance (MarshalMV.C a) => MarshalMV.C (CascadeParameter n a) where- pack (CascadeParameter k) = MarshalMV.pack k- unpack = CascadeParameter . MarshalMV.unpack+instance (MarshalNice.C a) => MarshalNice.C (CascadeParameter n a) where+ pack (CascadeParameter k) = MarshalNice.pack k+ unpack = CascadeParameter . MarshalNice.unpack instance (Storable.C a) => Storable.C (CascadeParameter n a) where load = Storable.loadNewtype CascadeParameter id@@ -231,71 +231,71 @@ vectorValueOf = fmap Tuple.vectorValueOf . Trav.traverse (\(CascadeParameter k) -> k) -instance (MultiValue.C a) => MultiValue.C (CascadeParameter n a) where- type Repr (CascadeParameter n a) = Parameter (MultiValue.Repr a)- cons (CascadeParameter a) = cascadeFromParamValue $ MultiValue.cons a+instance (NiceValue.C a) => NiceValue.C (CascadeParameter n a) where+ type Repr (CascadeParameter n a) = Parameter (NiceValue.Repr a)+ cons (CascadeParameter a) = cascadeFromParamValue $ NiceValue.cons a - undef = cascadeFromParamValue MultiValue.undef- zero = cascadeFromParamValue MultiValue.zero+ undef = cascadeFromParamValue NiceValue.undef+ zero = cascadeFromParamValue NiceValue.zero phi bb = fmap cascadeFromParamValue .- MultiValue.phi bb .+ NiceValue.phi bb . paramFromCascadeValue addPhi bb a b =- MultiValue.addPhi bb+ NiceValue.addPhi bb (paramFromCascadeValue a) (paramFromCascadeValue b) -instance (MultiVector.C a) => MultiVector.C (CascadeParameter m a) where- type Repr n (CascadeParameter m a) = Parameter (MultiVector.Repr n a)+instance (NiceVector.C a) => NiceVector.C (CascadeParameter m a) where+ type Repr n (CascadeParameter m a) = Parameter (NiceVector.Repr n a) cons =- cascadeFromParamVector . MultiVector.cons .+ cascadeFromParamVector . NiceVector.cons . fmap (\(CascadeParameter a) -> a)- undef = cascadeFromParamVector MultiVector.undef- zero = cascadeFromParamVector MultiVector.zero+ undef = cascadeFromParamVector NiceVector.undef+ zero = cascadeFromParamVector NiceVector.zero phi bb = fmap cascadeFromParamVector .- MultiVector.phi bb .+ NiceVector.phi bb . paramFromCascadeVector addPhi bb a b =- MultiVector.addPhi bb+ NiceVector.addPhi bb (paramFromCascadeVector a) (paramFromCascadeVector b) shuffle is a b = fmap cascadeFromParamVector $- MultiVector.shuffle is+ NiceVector.shuffle is (paramFromCascadeVector a) (paramFromCascadeVector b) extract i v = fmap cascadeFromParamValue $- MultiVector.extract i $+ NiceVector.extract i $ paramFromCascadeVector v insert i a v = fmap cascadeFromParamVector $- MultiVector.insert i (paramFromCascadeValue a) $+ NiceVector.insert i (paramFromCascadeValue a) $ paramFromCascadeVector v cascadeFromParamVector ::- MultiVector.T n (Allpass.Parameter a) ->- MultiVector.T n (CascadeParameter m a)-cascadeFromParamVector = MultiVector.lift1 id+ NiceVector.T n (Allpass.Parameter a) ->+ NiceVector.T n (CascadeParameter m a)+cascadeFromParamVector = NiceVector.lift1 id paramFromCascadeVector ::- MultiVector.T n (CascadeParameter m a) ->- MultiVector.T n (Allpass.Parameter a)-paramFromCascadeVector = MultiVector.lift1 id+ NiceVector.T n (CascadeParameter m a) ->+ NiceVector.T n (Allpass.Parameter a)+paramFromCascadeVector = NiceVector.lift1 id cascadeFromParamValue ::- MultiValue.T (Allpass.Parameter a) ->- MultiValue.T (CascadeParameter m a)-cascadeFromParamValue = MultiValue.lift1 id+ NiceValue.T (Allpass.Parameter a) ->+ NiceValue.T (CascadeParameter m a)+cascadeFromParamValue = NiceValue.lift1 id paramFromCascadeValue ::- MultiValue.T (CascadeParameter m a) ->- MultiValue.T (Allpass.Parameter a)-paramFromCascadeValue = MultiValue.lift1 id+ NiceValue.T (CascadeParameter m a) ->+ NiceValue.T (Allpass.Parameter a)+paramFromCascadeValue = NiceValue.lift1 id instance (Vector.Simple v) => Vector.Simple (CascadeParameter n v) where@@ -313,12 +313,12 @@ instance- (Expr.Aggregate e mv, n ~ m) =>- Expr.Aggregate (CascadeParameter n e) (CascadeParameter m mv) where- type MultiValuesOf (CascadeParameter n e) =- CascadeParameter n (Expr.MultiValuesOf e)- type ExpressionsOf (CascadeParameter m mv) =- CascadeParameter m (Expr.ExpressionsOf mv)+ (Expr.Aggregate e nv, n ~ m) =>+ Expr.Aggregate (CascadeParameter n e) (CascadeParameter m nv) where+ type NiceValuesOf (CascadeParameter n e) =+ CascadeParameter n (Expr.NiceValuesOf e)+ type ExpressionsOf (CascadeParameter m nv) =+ CascadeParameter m (Expr.ExpressionsOf nv) bundle = Trav.traverse Expr.bundle dissect = fmap Expr.dissect @@ -373,24 +373,24 @@ paramFromCascadeParam ::- MultiValue.T (CascadeParameter n a) ->- Allpass.Parameter (MultiValue.T a)-paramFromCascadeParam (MultiValue.Cons a) =- fmap MultiValue.Cons a+ NiceValue.T (CascadeParameter n a) ->+ Allpass.Parameter (NiceValue.T a)+paramFromCascadeParam (NiceValue.Cons a) =+ fmap NiceValue.Cons a {- It shouldn't be too hard to use vector operations for the code we generate, but LLVM-2.6 does not yet do it. -} stage ::- (TypeNum.Positive n, MultiVector.C a,- MultiVector.T n (CascadeParameter n a, a) ~ v,- MultiValue.PseudoRing a, MultiValue.IntegerConstant a,- MarshalMV.C a) =>+ (TypeNum.Positive n, NiceVector.C a,+ NiceVector.T n (CascadeParameter n a, a) ~ v,+ NiceValue.PseudoRing a, NiceValue.IntegerConstant a,+ MarshalNice.C a) => Proxy n -> Causal.T v v stage _ = Causal.vectorize $- uncurry MultiValue.zip+ uncurry NiceValue.zip ^<< (arr fst &&& (Scalar.decons@@ -400,11 +400,11 @@ (\(p, v) -> (fmap Scalar.Cons $ paramFromCascadeParam p, Scalar.Cons v)))) <<^- MultiValue.unzip+ NiceValue.unzip withSize ::- (Proxy n -> Causal.T (mv (CascadeParameter n a), b) c) ->- Causal.T (mv (CascadeParameter n a), b) c+ (Proxy n -> Causal.T (nv (CascadeParameter n a), b) c) ->+ Causal.T (nv (CascadeParameter n a), b) c withSize f = f Proxy {- |@@ -414,22 +414,22 @@ and we get a delay by the number of pipeline stages. -} cascadePipeline ::- (TypeNum.Positive n, MultiVector.C a,+ (TypeNum.Positive n, NiceVector.C a, Tuple.ValueOf a ~ ar,- MultiValue.PseudoRing a, MultiValue.IntegerConstant a,- MarshalMV.C a, MarshalMV.Vector n a) =>+ NiceValue.PseudoRing a, NiceValue.IntegerConstant a,+ MarshalNice.C a, MarshalNice.Vector n a) => Causal.T- (MultiValue.T (CascadeParameter n a), MultiValue.T a)- (MultiValue.T a)+ (NiceValue.T (CascadeParameter n a), NiceValue.T a)+ (NiceValue.T a) cascadePipeline = withSize $ \order ->- MultiValue.snd+ NiceValue.snd ^<< Causal.pipeline (stage order) <<^- uncurry MultiValue.zip+ uncurry NiceValue.zip vectorId ::- Proxy n -> Causal.T (MultiVector.T n a) (MultiVector.T n a)+ Proxy n -> Causal.T (NiceVector.T n a) (NiceVector.T n a) vectorId _ = Cat.id half ::@@ -472,28 +472,27 @@ second (CausalPriv.map (A.mul (A.fromRational' 0.5))) --- ToDo: consistent naming with Exponential2-cascadeParameterMultiValue ::- CascadeParameter n (MultiValue.T a) ->- MultiValue.T (CascadeParameter n a)-cascadeParameterMultiValue (CascadeParameter k) =- MultiValue.Cons $ fmap (\(MultiValue.Cons a) -> a) k+niceValueCascadeParameter ::+ CascadeParameter n (NiceValue.T a) ->+ NiceValue.T (CascadeParameter n a)+niceValueCascadeParameter (CascadeParameter k) =+ NiceValue.Cons $ fmap (\(NiceValue.Cons a) -> a) k -cascadeParameterUnMultiValue ::- MultiValue.T (CascadeParameter n a) ->- CascadeParameter n (MultiValue.T a)-cascadeParameterUnMultiValue (MultiValue.Cons k) =- CascadeParameter $ fmap MultiValue.Cons k+unNiceValueCascadeParameter ::+ NiceValue.T (CascadeParameter n a) ->+ CascadeParameter n (NiceValue.T a)+unNiceValueCascadeParameter (NiceValue.Cons k) =+ CascadeParameter $ fmap NiceValue.Cons k -phaserPipelineMV ::+phaserPipelineNice :: (TypeNum.Positive n,- MultiValue.PseudoRing a, MultiValue.RationalConstant a,- Marshal.C a, MarshalMV.Vector n a) =>+ NiceValue.PseudoRing a, NiceValue.RationalConstant a,+ Marshal.C a, MarshalNice.Vector n a) => Causal.T- (MultiValue.T (CascadeParameter n a), MultiValue.T a)- (MultiValue.T a)-phaserPipelineMV = withSize $ \order ->+ (NiceValue.T (CascadeParameter n a), NiceValue.T a)+ (NiceValue.T a)+phaserPipelineNice = withSize $ \order -> Causal.mix <<< cascadePipeline &&& (Causal.pipeline (vectorId order) <<^ snd) <<<@@ -502,9 +501,9 @@ phaserPipeline :: (TypeNum.Positive n,- MultiValue.PseudoRing a, MultiValue.RationalConstant a,- Marshal.C a, MarshalMV.Vector n a) =>+ NiceValue.PseudoRing a, NiceValue.RationalConstant a,+ Marshal.C a, MarshalNice.Vector n a) => Causal.T- (CascadeParameter n (MultiValue.T a), MultiValue.T a)- (MultiValue.T a)-phaserPipeline = phaserPipelineMV <<^ mapFst cascadeParameterMultiValue+ (CascadeParameter n (NiceValue.T a), NiceValue.T a)+ (NiceValue.T a)+phaserPipeline = phaserPipelineNice <<^ mapFst niceValueCascadeParameter
src/Synthesizer/LLVM/Filter/Butterworth.hs view
@@ -19,8 +19,8 @@ import qualified LLVM.DSL.Expression as Expr -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Control as U@@ -45,9 +45,9 @@ (TypeNum.Positive (n :*: LLVM.SizeOf (Marshal.Struct a)), TypeNum.Natural (n :*: LLVM.UnknownSize), TypeNum.Natural n, Trans.C a,- Marshal.C a, MultiValue.RationalConstant a, MultiValue.Transcendental a) =>+ Marshal.C a, NiceValue.RationalConstant a, NiceValue.Transcendental a) => Proxy n -> Passband ->- Causal.T (MultiValue.T a, MultiValue.T a) (Cascade.ParameterValue n a)+ Causal.T (NiceValue.T a, NiceValue.T a) (Cascade.ParameterValue n a) parameterCausal n kind = Causal.map (\((psine, ps), (ratio, freq)) ->@@ -59,8 +59,8 @@ (TypeNum.Positive (n :*: LLVM.SizeOf (Marshal.Struct a)), TypeNum.Natural (n :*: LLVM.UnknownSize), TypeNum.Natural n, Trans.C a,- Marshal.C a, MultiValue.RationalConstant a, MultiValue.Transcendental a) =>- Proxy n -> Passband -> MultiValue.T a -> MultiValue.T a ->+ Marshal.C a, NiceValue.RationalConstant a, NiceValue.Transcendental a) =>+ Proxy n -> Passband -> NiceValue.T a -> NiceValue.T a -> LLVM.CodeGenFunction r (Cascade.ParameterValue n a) parameter n kind ratio freq = do psine <- LLVM.malloc@@ -74,16 +74,16 @@ (TypeNum.Positive (n :*: LLVM.SizeOf (Marshal.Struct a)), TypeNum.Natural (n :*: LLVM.UnknownSize), TypeNum.Natural n, Trans.C a,- Marshal.C a, MultiValue.RationalConstant a, MultiValue.Transcendental a) =>+ Marshal.C a, NiceValue.RationalConstant a, NiceValue.Transcendental a) => Proxy n -> Passband ->- LLVM.Value (LLVM.Ptr (Marshal.Struct (MultiValue.Array n a))) ->+ LLVM.Value (LLVM.Ptr (Marshal.Struct (NiceValue.Array n a))) -> LLVM.Value (LLVM.Ptr (Cascade.ParameterStruct n a)) ->- MultiValue.T a -> MultiValue.T a ->+ NiceValue.T a -> NiceValue.T a -> LLVM.CodeGenFunction r (Cascade.ParameterValue n a) parameterCore n kind psine ps ratio freq = do let order = 2 * TypeNum.integralFromProxy n partialRatio <- Expr.unliftM1 (Butterworth.partialRatio order) ratio- let evalSines :: (Trans.C a) => mv a -> Int -> [a]+ let evalSines :: (Trans.C a) => nv a -> Int -> [a] evalSines _ = Butterworth.makeSines let sines = Cascade.constArray n $ evalSines freq order Memory.store sines psine@@ -93,7 +93,7 @@ _ <- U.arrayLoop len p s $ \ptri si -> do sinw <- Memory.load si flip Memory.store ptri =<<- Filt2.composeParameterMV =<<+ Filt2.composeParameterNice =<< Expr.unliftM3 (Butterworth.partialParameter kind) partialRatio sinw freq A.advanceArrayElementPtr si
src/Synthesizer/LLVM/Filter/Chebyshev.hs view
@@ -21,8 +21,8 @@ import qualified LLVM.DSL.Expression as Expr -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Control as U@@ -53,11 +53,11 @@ -} parameterCausalA, parameterCausalB :: (TypeNum.Natural n, Trans.C a,- Marshal.C a, MultiValue.RationalConstant a, MultiValue.Transcendental a) =>+ Marshal.C a, NiceValue.RationalConstant a, NiceValue.Transcendental a) => (TypeNum.Positive (n :*: LLVM.SizeOf (Marshal.Struct a)), TypeNum.Positive (n :*: LLVM.UnknownSize)) => Proxy n -> Passband ->- Causal.T (MultiValue.T a, MultiValue.T a) (Cascade.ParameterValue n a)+ Causal.T (NiceValue.T a, NiceValue.T a) (Cascade.ParameterValue n a) parameterCausalA n kind = Causal.map (\((psine, ps), (ratio, freq)) ->@@ -82,10 +82,10 @@ parameterA, parameterB :: (TypeNum.Natural n, Trans.C a,- Marshal.C a, MultiValue.RationalConstant a, MultiValue.Transcendental a) =>+ Marshal.C a, NiceValue.RationalConstant a, NiceValue.Transcendental a) => (TypeNum.Positive (n :*: LLVM.SizeOf (Marshal.Struct a)), TypeNum.Positive (n :*: LLVM.UnknownSize)) =>- Proxy n -> Passband -> MultiValue.T a -> MultiValue.T a ->+ Proxy n -> Passband -> NiceValue.T a -> NiceValue.T a -> LLVM.CodeGenFunction r (Cascade.ParameterValue n a) parameterA n kind ratio freq = withArrays $ \psine ps ->@@ -115,31 +115,31 @@ -- | adjust amplification of the first filter adjustAmplitude :: (TypeNum.Natural n, Filt2.Parameter a ~ filt2,- Marshal.C a, MultiValue.IntegerConstant a, MultiValue.PseudoRing a) =>- MultiValue.T a -> MultiValue.T (MultiValue.Array n filt2) ->- LLVM.CodeGenFunction r (MultiValue.T (MultiValue.Array n filt2))-adjustAmplitude ratio (MultiValue.Cons pv) = do- filt0 <- Filt2.decomposeParameterMV =<< LLVM.extractvalue pv (0::Word)- fmap MultiValue.Cons $+ Marshal.C a, NiceValue.IntegerConstant a, NiceValue.PseudoRing a) =>+ NiceValue.T a -> NiceValue.T (NiceValue.Array n filt2) ->+ LLVM.CodeGenFunction r (NiceValue.T (NiceValue.Array n filt2))+adjustAmplitude ratio (NiceValue.Cons pv) = do+ filt0 <- Filt2.decomposeParameterNice =<< LLVM.extractvalue pv (0::Word)+ fmap NiceValue.Cons $ flip (LLVM.insertvalue pv) (0::Word) =<<- Filt2.composeParameterMV =<<+ Filt2.composeParameterNice =<< Expr.unliftM2 Filt2Core.amplify ratio filt0 parameter :: (TypeNum.Positive (n :*: LLVM.SizeOf (Marshal.Struct a)), TypeNum.Positive (n :*: LLVM.UnknownSize), TypeNum.Natural n, Trans.C a,- Marshal.C a, MultiValue.RationalConstant a, MultiValue.Transcendental a,+ Marshal.C a, NiceValue.RationalConstant a, NiceValue.Transcendental a, Expr.Exp a ~ ae) => (Passband -> Int -> ae -> Complex.T ae -> ae -> Filt2Core.Parameter ae) -> Proxy n -> Passband ->- LLVM.Value (LLVM.Ptr (Marshal.Struct (MultiValue.Array n (Complex.T a)))) ->+ LLVM.Value (LLVM.Ptr (Marshal.Struct (NiceValue.Array n (Complex.T a)))) -> LLVM.Value (LLVM.Ptr (Cascade.ParameterStruct n a)) ->- MultiValue.T a -> MultiValue.T a ->- LLVM.CodeGenFunction r (MultiValue.T (Cascade.Parameter n a))+ NiceValue.T a -> NiceValue.T a ->+ LLVM.CodeGenFunction r (NiceValue.T (Cascade.Parameter n a)) parameter partialParameter n kind psine ps ratio freq = do let order = TypeNum.integralFromProxy n- let evalSines :: (Trans.C a) => mv a -> Int -> [Complex.T a]+ let evalSines :: (Trans.C a) => nv a -> Int -> [Complex.T a] evalSines _ = Chebyshev.makeCirclePoints let sines = Cascade.constArray n $ evalSines freq order Memory.store sines psine@@ -149,7 +149,7 @@ _ <- U.arrayLoop len p s $ \ptri si -> do c <- Memory.load si flip Memory.store ptri =<<- Filt2.composeParameterMV =<<+ Filt2.composeParameterNice =<< Expr.unliftM3 (partialParameter kind order) ratio c freq A.advanceArrayElementPtr si
src/Synthesizer/LLVM/Filter/ComplexFirstOrder.hs view
@@ -98,10 +98,10 @@ unfoldCode = Value.unfoldCodeTraversable instance- (Expr.Aggregate e mv) =>- Expr.Aggregate (Parameter e) (Parameter mv) where- type MultiValuesOf (Parameter e) = Parameter (Expr.MultiValuesOf e)- type ExpressionsOf (Parameter mv) = Parameter (Expr.ExpressionsOf mv)+ (Expr.Aggregate e nv) =>+ Expr.Aggregate (Parameter e) (Parameter nv) where+ type NiceValuesOf (Parameter e) = Parameter (Expr.NiceValuesOf e)+ type ExpressionsOf (Parameter nv) = Parameter (Expr.ExpressionsOf nv) bundle = Trav.traverse Expr.bundle dissect = fmap Expr.dissect
src/Synthesizer/LLVM/Filter/ComplexFirstOrderPacked.hs view
@@ -7,7 +7,7 @@ {-# LANGUAGE Rank2Types #-} module Synthesizer.LLVM.Filter.ComplexFirstOrderPacked ( Parameter(Parameter), parameterPlain, parameter, causal,- ParameterMV,+ ParameterNice, ) where import qualified Synthesizer.LLVM.Filter.ComplexFirstOrder as ComplexFilter@@ -19,9 +19,9 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp(Exp)) -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue-import qualified LLVM.Extra.Multi.Vector as MultiVector+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue+import qualified LLVM.Extra.Nice.Vector as NiceVector import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Tuple as Tuple@@ -42,35 +42,35 @@ data Parameter a = Parameter (LLVM.Vector D3 a) (LLVM.Vector D3 a) -data ParameterMV a = ParameterMV (MultiVector.T D3 a) (MultiVector.T D3 a)+data ParameterNice a = ParameterNice (NiceVector.T D3 a) (NiceVector.T D3 a) -instance (MultiVector.C a) => Tuple.Phi (ParameterMV a) where- phi bb (ParameterMV r i) = do+instance (NiceVector.C a) => Tuple.Phi (ParameterNice a) where+ phi bb (ParameterNice r i) = do r' <- Tuple.phi bb r i' <- Tuple.phi bb i- return (ParameterMV r' i')+ return (ParameterNice r' i') addPhi bb- (ParameterMV r i)- (ParameterMV r' i') = do+ (ParameterNice r i)+ (ParameterNice r' i') = do Tuple.addPhi bb r r' Tuple.addPhi bb i i' -instance (MultiVector.C a) => Tuple.Undefined (ParameterMV a) where- undef = ParameterMV Tuple.undef Tuple.undef+instance (NiceVector.C a) => Tuple.Undefined (ParameterNice a) where+ undef = ParameterNice Tuple.undef Tuple.undef type ParameterStruct a = Marshal.Struct (LLVM.Vector D3 a, LLVM.Vector D3 a) parameterMemory :: (Marshal.Vector D3 a) =>- Memory.Record r (ParameterStruct a) (ParameterMV a)+ Memory.Record r (ParameterStruct a) (ParameterNice a) parameterMemory =- liftA2 ParameterMV- (Memory.element (\(ParameterMV kr _) -> kr) d0)- (Memory.element (\(ParameterMV _ ki) -> ki) d1)+ liftA2 ParameterNice+ (Memory.element (\(ParameterNice kr _) -> kr) d0)+ (Memory.element (\(ParameterNice _ ki) -> ki) d1) -instance (Marshal.Vector D3 a) => Memory.C (ParameterMV a) where- type Struct (ParameterMV a) = ParameterStruct a+instance (Marshal.Vector D3 a) => Memory.C (ParameterNice a) where+ type Struct (ParameterNice a) = ParameterStruct a load = Memory.loadRecord parameterMemory store = Memory.storeRecord parameterMemory decompose = Memory.decomposeRecord parameterMemory@@ -78,11 +78,11 @@ data ParameterExp a =- ParameterExp (forall r. LLVM.CodeGenFunction r (ParameterMV a))+ ParameterExp (forall r. LLVM.CodeGenFunction r (ParameterNice a)) -instance Expr.Aggregate (ParameterExp a) (ParameterMV a) where- type MultiValuesOf (ParameterExp a) = ParameterMV a- type ExpressionsOf (ParameterMV a) = ParameterExp a+instance Expr.Aggregate (ParameterExp a) (ParameterNice a) where+ type NiceValuesOf (ParameterExp a) = ParameterNice a+ type ExpressionsOf (ParameterNice a) = ParameterExp a dissect x = ParameterExp (return x) bundle (ParameterExp code) = code @@ -97,7 +97,7 @@ (LLVM.consVector ki kr amp) parameter ::- (MultiVector.Transcendental a, MultiVector.RationalConstant a) =>+ (NiceVector.Transcendental a, NiceVector.RationalConstant a) => Exp a -> Exp a -> ParameterExp a parameter (Exp reson) (Exp freq) = ParameterExp (do@@ -107,31 +107,31 @@ let kr = Complex.real k let ki = Complex.imag k kin <- A.neg ki- liftA2 ParameterMV- (MultiVector.assembleFromVector $ LLVM.consVector kr kin amp)- (MultiVector.assembleFromVector $ LLVM.consVector ki kr amp))+ liftA2 ParameterNice+ (NiceVector.consVarArg kr kin amp)+ (NiceVector.consVarArg ki kr amp)) -type State a = MultiVector.T D3 a+type State a = NiceVector.T D3 a next ::- (MultiVector.PseudoRing a) =>- (ParameterMV a, Stereo.T (MultiValue.T a)) ->- State a -> LLVM.CodeGenFunction r (Stereo.T (MultiValue.T a), State a)-next (ParameterMV kr ki, x) s = do+ (NiceVector.PseudoRing a) =>+ (ParameterNice a, Stereo.T (NiceValue.T a)) ->+ State a -> LLVM.CodeGenFunction r (Stereo.T (NiceValue.T a), State a)+next (ParameterNice kr ki, x) s = do let two = LLVM.valueOf 2- sr <- MultiVector.insert two (Stereo.left x) s- yr <- MultiVector.dotProduct kr sr+ sr <- NiceVector.insert two (Stereo.left x) s+ yr <- NiceVector.dotProduct kr sr - si <- MultiVector.insert two (Stereo.right x) s- yi <- MultiVector.dotProduct ki si+ si <- NiceVector.insert two (Stereo.right x) s+ yi <- NiceVector.dotProduct ki si - sv <- MultiVector.assembleFromVector $ LLVM.consVector yr yi Tuple.undef+ sv <- NiceVector.consVarArg yr yi Tuple.undef return (Stereo.cons yr yi, sv) causal ::- (Marshal.Vector n a, n ~ D3, MultiVector.PseudoRing a) =>+ (Marshal.Vector n a, n ~ D3, NiceVector.PseudoRing a) => Causal.T- (ParameterMV a, Stereo.T (MultiValue.T a))- (Stereo.T (MultiValue.T a))+ (ParameterNice a, Stereo.T (NiceValue.T a))+ (Stereo.T (NiceValue.T a)) causal = Causal.mapAccum next (return A.zero)
src/Synthesizer/LLVM/Filter/FirstOrder.hs view
@@ -23,6 +23,7 @@ import qualified LLVM.DSL.Expression as Expr +import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A@@ -31,8 +32,11 @@ import Control.Arrow (arr, (&&&), (<<<)) import Control.Monad (foldM)-import Control.Applicative (liftA2)+import Control.Applicative (liftA2, pure) +import qualified Data.Foldable as Fold+import Data.Traversable (traverse)+ import qualified Algebra.Module as Module import NumericPrelude.Numeric@@ -54,18 +58,57 @@ compose = Memory.composeNewtype (\(Parameter k) -> k) +instance (NiceValue.C a) => NiceValue.C (Parameter a) where+ type Repr (Parameter a) = Parameter (NiceValue.Repr a)+ cons = niceValueParameter . fmap NiceValue.cons+ undef = niceValueParameter $ pure NiceValue.undef+ zero = niceValueParameter $ pure NiceValue.zero+ phi bb =+ fmap niceValueParameter .+ traverse (NiceValue.phi bb) . unNiceValueParameter+ addPhi bb a b =+ Fold.sequence_ $+ liftA2 (NiceValue.addPhi bb)+ (unNiceValueParameter a) (unNiceValueParameter b)++instance (NiceValue.Compose a) => NiceValue.Compose (Parameter a) where+ type Composed (Parameter a) = Parameter (NiceValue.Composed a)+ compose = niceValueParameter . fmap NiceValue.compose++instance (NiceValue.Decompose a) => NiceValue.Decompose (Parameter a) where+ decompose pat =+ fmap (NiceValue.decompose (FirstOrder.getParameter pat)) .+ unNiceValueParameter++type instance+ NiceValue.Decomposed f (Parameter p) =+ Parameter (NiceValue.Decomposed f p)+type instance+ NiceValue.PatternTuple (Parameter p) =+ Parameter (NiceValue.PatternTuple p)++niceValueParameter ::+ Parameter (NiceValue.T a) -> NiceValue.T (Parameter a)+niceValueParameter = NiceValue.Cons . fmap (\(NiceValue.Cons a) -> a)++unNiceValueParameter ::+ NiceValue.T (Parameter a) -> Parameter (NiceValue.T a)+unNiceValueParameter (NiceValue.Cons x) = fmap NiceValue.Cons x+++ instance- (Expr.Aggregate e mv) =>- Expr.Aggregate (Parameter e) (Parameter mv) where- type MultiValuesOf (Parameter e) = Parameter (Expr.MultiValuesOf e)- type ExpressionsOf (Parameter mv) = Parameter (Expr.ExpressionsOf mv)+ (Expr.Aggregate e nv) =>+ Expr.Aggregate (Parameter e) (Parameter nv) where+ type NiceValuesOf (Parameter e) = Parameter (Expr.NiceValuesOf e)+ type ExpressionsOf (Parameter nv) = Parameter (Expr.ExpressionsOf nv) bundle (Parameter p) = fmap Parameter $ Expr.bundle p dissect (Parameter p) = Parameter $ Expr.dissect p -instance (Expr.Aggregate e mv) => Expr.Aggregate (Result e) (Result mv) where- type MultiValuesOf (Result e) = Result (Expr.MultiValuesOf e)- type ExpressionsOf (Result mv) = Result (Expr.ExpressionsOf mv)+instance (Expr.Aggregate e nv) => Expr.Aggregate (Result e) (Result nv) where+ type NiceValuesOf (Result e) = Result (Expr.NiceValuesOf e)+ type ExpressionsOf (Result nv) = Result (Expr.ExpressionsOf nv) bundle (Result f k) = liftA2 Result (Expr.bundle f) (Expr.bundle k) dissect (Result f k) = Result (Expr.dissect f) (Expr.dissect k)
src/Synthesizer/LLVM/Filter/Moog.hs view
@@ -101,10 +101,10 @@ Moog.parameter (TypeNum.integralFromProxy order) (Pole reson freq) instance- (n ~ m, Expr.Aggregate e mv) =>- Expr.Aggregate (Parameter n e) (Parameter m mv) where- type MultiValuesOf (Parameter n e) = Parameter n (Expr.MultiValuesOf e)- type ExpressionsOf (Parameter m mv) = Parameter m (Expr.ExpressionsOf mv)+ (n ~ m, Expr.Aggregate e nv) =>+ Expr.Aggregate (Parameter n e) (Parameter m nv) where+ type NiceValuesOf (Parameter n e) = Parameter n (Expr.NiceValuesOf e)+ type ExpressionsOf (Parameter m nv) = Parameter m (Expr.ExpressionsOf nv) bundle (Parameter (Moog.Parameter f k)) = fmap Parameter $ liftA2 Moog.Parameter (Expr.bundle f) (Expr.bundle k) dissect (Parameter (Moog.Parameter f k)) =
src/Synthesizer/LLVM/Filter/NonRecursive.hs view
@@ -18,10 +18,10 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue-import qualified LLVM.Extra.Multi.Vector as MultiVector+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue+import qualified LLVM.Extra.Nice.Vector as NiceVector import qualified LLVM.Extra.Control as C import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Tuple as Tuple@@ -46,28 +46,28 @@ No Karatsuba, No Toom-Cook, No Fourier. -} convolve ::- (Storable.C a, Marshal.C a, MultiValue.PseudoRing a, MultiValue.T a ~ am) =>+ (Storable.C a, Marshal.C a, NiceValue.PseudoRing a, NiceValue.T a ~ am) => Exp (Source.StorableVector a) -> Causal.T am am convolve mask = let len = Source.storableVectorLength mask- in (CausalPriv.zipWith (\(MultiValue.Cons l) -> scalarProduct l)+ in (CausalPriv.zipWith (\(NiceValue.Cons l) -> scalarProduct l) $< Sig.constant len) <<< Causal.track Expr.zero len &&& provideMask mask convolvePacked ::- (Marshal.Vector n a, MultiVector.PseudoRing a) =>- (Storable.C a, MultiValue.PseudoRing a, Serial.Value n a ~ v) =>+ (Marshal.Vector n a, NiceVector.PseudoRing a) =>+ (Storable.C a, NiceValue.PseudoRing a, Serial.Value n a ~ v) => Exp (Source.StorableVector a) -> Causal.T v v convolvePacked = convolvePackedAux TypeNum.singleton convolvePackedAux ::- (Marshal.Vector n a, MultiVector.PseudoRing a) =>- (Storable.C a, MultiValue.PseudoRing a, Serial.Value n a ~ v) =>+ (Marshal.Vector n a, NiceVector.PseudoRing a) =>+ (Storable.C a, NiceValue.PseudoRing a, Serial.Value n a ~ v) => TypeNum.Singleton n -> Exp (Source.StorableVector a) -> Causal.T v v convolvePackedAux vectorSize mask = let len = Source.storableVectorLength mask- in (CausalPriv.zipWith (\(MultiValue.Cons l) -> scalarProductPacked l)+ in (CausalPriv.zipWith (\(NiceValue.Cons l) -> scalarProductPacked l) $< Sig.constant len) <<< Causal.track Expr.zero@@ -83,12 +83,12 @@ Exp (Source.StorableVector a) -> Causal.T x (LLVM.Value (Ptr a)) provideMask mask = CausalClass.fromSignal $- fmap (\(MultiValue.Cons (ptr,_l)) -> ptr) $+ fmap (\(NiceValue.Cons (ptr,_l)) -> ptr) $ Sig.constant mask scalarProduct ::- (Storable.C a, Marshal.C a, MultiValue.T a ~ am, MultiValue.PseudoRing a) =>+ (Storable.C a, Marshal.C a, NiceValue.T a ~ am, NiceValue.PseudoRing a) => LLVM.Value Word -> (RingBuffer.T am, LLVM.Value (Ptr a)) -> LLVM.CodeGenFunction r am@@ -101,7 +101,7 @@ scalarProductPacked ::- (Storable.C a, Marshal.Vector n a, MultiVector.PseudoRing a) =>+ (Storable.C a, Marshal.Vector n a, NiceVector.PseudoRing a) => LLVM.Value Word -> (RingBuffer.T (Serial.Value n a), LLVM.Value (Ptr a)) -> LLVM.CodeGenFunction r (Serial.Value n a)@@ -138,7 +138,7 @@ return (a, ((a, Tuple.undef, A.zero), A.zero)) readSerialNext ::- (MultiValue.C a, Marshal.Vector n a) =>+ (NiceValue.C a, Marshal.Vector n a) => RingBuffer.T (Serial.Value n a) -> Iterator n a -> LLVM.CodeGenFunction r (Serial.Value n a, Iterator n a)
src/Synthesizer/LLVM/Filter/SecondOrder.hs view
@@ -10,7 +10,7 @@ bandpassParameter, bandpassParameterCode, ParameterStruct, composeParameter, decomposeParameter, -- for cascade- composeParameterMV, decomposeParameterMV,+ composeParameterNice, decomposeParameterNice, causalExp, causal, causalPacked, ) where@@ -27,8 +27,8 @@ import qualified LLVM.DSL.Expression as Expr -import qualified LLVM.Extra.Multi.Value.Marshal as MarshalMV-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Marshal as MarshalNice+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Storable as Storable import qualified LLVM.Extra.Marshal as Marshal import qualified LLVM.Extra.Memory as Memory@@ -93,11 +93,11 @@ <*> LLVM.extractvalue param TypeNum.d3 <*> LLVM.extractvalue param TypeNum.d4 -decomposeParameterMV ::- (MarshalMV.C a) =>- LLVM.Value (MarshalMV.Struct (Parameter a)) ->- CodeGenFunction r (Filt2.Parameter (MultiValue.T a))-decomposeParameterMV param =+decomposeParameterNice ::+ (MarshalNice.C a) =>+ LLVM.Value (MarshalNice.Struct (Parameter a)) ->+ CodeGenFunction r (Filt2.Parameter (NiceValue.T a))+decomposeParameterNice param = pure Filt2.Parameter <*> (Memory.decompose =<< LLVM.extractvalue param TypeNum.d0) <*> (Memory.decompose =<< LLVM.extractvalue param TypeNum.d1)@@ -117,11 +117,11 @@ (\param -> LLVM.insertvalue param d2_ TypeNum.d4) =<< return (LLVM.value LLVM.undef) -composeParameterMV ::- (MarshalMV.C a) =>- Filt2.Parameter (MultiValue.T a) ->- CodeGenFunction r (LLVM.Value (MarshalMV.Struct (Parameter a)))-composeParameterMV (Filt2.Parameter c0_ c1_ c2_ d1_ d2_) =+composeParameterNice ::+ (MarshalNice.C a) =>+ Filt2.Parameter (NiceValue.T a) ->+ CodeGenFunction r (LLVM.Value (MarshalNice.Struct (Parameter a)))+composeParameterNice (Filt2.Parameter c0_ c1_ c2_ d1_ d2_) = let insert field ix param = Memory.compose field >>= flip (LLVM.insertvalue param) ix in insert c0_ TypeNum.d0 =<<@@ -155,42 +155,42 @@ flattenCode = Value.flattenCodeTraversable unfoldCode = Value.unfoldCodeTraversable -instance (MultiValue.C a) => MultiValue.C (Parameter a) where- type Repr (Parameter a) = Parameter (MultiValue.Repr a)- cons = parameterMultiValue . fmap MultiValue.cons- undef = parameterMultiValue $ pure MultiValue.undef- zero = parameterMultiValue $ pure MultiValue.zero+instance (NiceValue.C a) => NiceValue.C (Parameter a) where+ type Repr (Parameter a) = Parameter (NiceValue.Repr a)+ cons = niceValueParameter . fmap NiceValue.cons+ undef = niceValueParameter $ pure NiceValue.undef+ zero = niceValueParameter $ pure NiceValue.zero phi bb =- fmap parameterMultiValue .- traverse (MultiValue.phi bb) .- parameterUnMultiValue+ fmap niceValueParameter .+ traverse (NiceValue.phi bb) .+ unNiceValueParameter addPhi bb a b = Fold.sequence_ $- liftA2 (MultiValue.addPhi bb)- (parameterUnMultiValue a) (parameterUnMultiValue b)+ liftA2 (NiceValue.addPhi bb)+ (unNiceValueParameter a) (unNiceValueParameter b) -instance (MarshalMV.C a) => MarshalMV.C (Parameter a) where+instance (MarshalNice.C a) => MarshalNice.C (Parameter a) where pack p =- case MarshalMV.pack <$> p of+ case MarshalNice.pack <$> p of Filt2.Parameter c0_ c1_ c2_ d1_ d2_ -> LLVM.consStruct c0_ c1_ c2_ d1_ d2_- unpack = fmap MarshalMV.unpack . LLVM.uncurryStruct Filt2.Parameter+ unpack = fmap MarshalNice.unpack . LLVM.uncurryStruct Filt2.Parameter -parameterMultiValue ::- Parameter (MultiValue.T a) -> MultiValue.T (Parameter a)-parameterMultiValue =- MultiValue.Cons . fmap (\(MultiValue.Cons a) -> a)+niceValueParameter ::+ Parameter (NiceValue.T a) -> NiceValue.T (Parameter a)+niceValueParameter =+ NiceValue.Cons . fmap (\(NiceValue.Cons a) -> a) -parameterUnMultiValue ::- MultiValue.T (Parameter a) -> Parameter (MultiValue.T a)-parameterUnMultiValue (MultiValue.Cons x) =- fmap MultiValue.Cons x+unNiceValueParameter ::+ NiceValue.T (Parameter a) -> Parameter (NiceValue.T a)+unNiceValueParameter (NiceValue.Cons x) =+ fmap NiceValue.Cons x instance- (Expr.Aggregate e mv) =>- Expr.Aggregate (Parameter e) (Parameter mv) where- type MultiValuesOf (Parameter e) = Parameter (Expr.MultiValuesOf e)- type ExpressionsOf (Parameter mv) = Parameter (Expr.ExpressionsOf mv)+ (Expr.Aggregate e nv) =>+ Expr.Aggregate (Parameter e) (Parameter nv) where+ type NiceValuesOf (Parameter e) = Parameter (Expr.NiceValuesOf e)+ type ExpressionsOf (Parameter nv) = Parameter (Expr.ExpressionsOf nv) bundle = traverse Expr.bundle dissect = fmap Expr.dissect @@ -230,10 +230,10 @@ unfoldCode = Value.unfoldCodeTraversable instance- (Expr.Aggregate e mv) =>- Expr.Aggregate (Filt2.State e) (Filt2.State mv) where- type MultiValuesOf (Filt2.State e) = Filt2.State (Expr.MultiValuesOf e)- type ExpressionsOf (Filt2.State mv) = Filt2.State (Expr.ExpressionsOf mv)+ (Expr.Aggregate e nv) =>+ Expr.Aggregate (Filt2.State e) (Filt2.State nv) where+ type NiceValuesOf (Filt2.State e) = Filt2.State (Expr.NiceValuesOf e)+ type ExpressionsOf (Filt2.State nv) = Filt2.State (Expr.ExpressionsOf nv) bundle = traverse Expr.bundle dissect = fmap Expr.dissect
src/Synthesizer/LLVM/Filter/SecondOrderCascade.hs view
@@ -21,8 +21,8 @@ import qualified Synthesizer.LLVM.Frame.SerialVector.Class as Serial import Synthesizer.Causal.Class (($<)) -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Extra.Memory as Memory@@ -40,11 +40,11 @@ import NumericPrelude.Base -type Parameter n a = MultiValue.Array n (Filt2.Parameter a)+type Parameter n a = NiceValue.Array n (Filt2.Parameter a) type ParameterStruct n a = Marshal.Struct (Parameter n a) newtype ParameterValue n a =- ParameterValue {parameterValue :: MultiValue.T (Parameter n a)}+ ParameterValue {parameterValue :: NiceValue.T (Parameter n a)} {- Automatic deriving is not allowed even with GeneralizedNewtypeDeriving because of IsSized constraint@@ -56,16 +56,16 @@ instance (TypeNum.Natural n, Marshal.C a) => Tuple.Phi (ParameterValue n a) where- phi bb (ParameterValue r) = fmap ParameterValue $ MultiValue.phi bb r- addPhi bb (ParameterValue r) (ParameterValue r') = MultiValue.addPhi bb r r'+ phi bb (ParameterValue r) = fmap ParameterValue $ NiceValue.phi bb r+ addPhi bb (ParameterValue r) (ParameterValue r') = NiceValue.addPhi bb r r' instance (TypeNum.Natural n, Marshal.C a) => Tuple.Undefined (ParameterValue n a) where- undef = ParameterValue MultiValue.undef+ undef = ParameterValue NiceValue.undef instance (TypeNum.Natural n, Marshal.C a) => Tuple.Zero (ParameterValue n a) where- zero = ParameterValue MultiValue.zero+ zero = ParameterValue NiceValue.zero instance (TypeNum.Natural n, Marshal.C a, TypeNum.Positive (n :*: LLVM.UnknownSize)) =>@@ -95,20 +95,20 @@ constArray :: (TypeNum.Natural n, Marshal.C a) =>- Proxy n -> [a] -> MultiValue.T (MultiValue.Array n a)-constArray _n = MultiValue.cons . MultiValue.Array+ Proxy n -> [a] -> NiceValue.T (NiceValue.Array n a)+constArray _n = NiceValue.cons . NiceValue.Array causal ::- (A.PseudoModule v, Memory.C v, A.Scalar v ~ MultiValue.T a,- Marshal.C a, MultiValue.IntegerConstant a,+ (A.PseudoModule v, Memory.C v, A.Scalar v ~ NiceValue.T a,+ Marshal.C a, NiceValue.IntegerConstant a, TypeNum.Natural n, TypeNum.Positive (n :*: LLVM.UnknownSize)) => Causal.T (ParameterValue n a, v) v causal = causalGen Filt2.causal causalPacked ::- (Marshal.C a, MultiValue.PseudoRing a, MultiValue.IntegerConstant a,- Serial.Write v, Serial.Element v ~ MultiValue.T a,+ (Marshal.C a, NiceValue.PseudoRing a, NiceValue.IntegerConstant a,+ Serial.Write v, Serial.Element v ~ NiceValue.T a, Memory.C v, A.PseudoRing v, A.IntegerConstant v, TypeNum.Natural n, TypeNum.Positive (n :*: LLVM.UnknownSize)) => Causal.T (ParameterValue n a, v) v@@ -117,7 +117,7 @@ causalGen :: (Marshal.C a, Tuple.Phi v, Tuple.Undefined v, TypeNum.Natural n, TypeNum.Positive (n :*: LLVM.UnknownSize)) =>- Causal.T (Filt2.Parameter (MultiValue.T a), v) v ->+ Causal.T (Filt2.Parameter (NiceValue.T a), v) v -> Causal.T (ParameterValue n a, v) v causalGen stage = withSize $ \n ->@@ -136,7 +136,7 @@ paramStage :: (TypeNum.Natural n, Marshal.C a) =>- Causal.T (Filt2.Parameter (MultiValue.T a), v) v ->+ Causal.T (Filt2.Parameter (NiceValue.T a), v) v -> Causal.T (LLVM.Value (LLVM.Ptr (ParameterStruct n a)), (LLVM.Value Word, v)) (LLVM.Value Word, v)@@ -155,8 +155,8 @@ (TypeNum.Natural n, Marshal.C a) => LLVM.Value (LLVM.Ptr (ParameterStruct n a)) -> LLVM.Value Word ->- LLVM.CodeGenFunction r (Filt2.Parameter (MultiValue.T a))+ LLVM.CodeGenFunction r (Filt2.Parameter (NiceValue.T a)) getStageParameterGEP ptr k =- Filt2.decomposeParameterMV+ Filt2.decomposeParameterNice =<< LLVM.load =<< LLVM.getElementPtr0 ptr (k, ())
src/Synthesizer/LLVM/Filter/SecondOrderPacked.hs view
@@ -16,9 +16,9 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp(Exp)) -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue-import qualified LLVM.Extra.Multi.Vector as MultiVector+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue+import qualified LLVM.Extra.Nice.Vector as NiceVector import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A@@ -38,9 +38,9 @@ > c0 [c1 d1 c2 d2] -}-data Parameter a = Parameter (MultiValue.T a) (MultiVector.T D4 a)+data Parameter a = Parameter (NiceValue.T a) (NiceVector.T D4 a) -instance (MultiVector.C a) => Tuple.Phi (Parameter a) where+instance (NiceVector.C a) => Tuple.Phi (Parameter a) where phi bb (Parameter r i) = do r' <- Tuple.phi bb r i' <- Tuple.phi bb i@@ -49,11 +49,11 @@ Tuple.addPhi bb r r' Tuple.addPhi bb i i' -instance (MultiVector.C a) => Tuple.Undefined (Parameter a) where+instance (NiceVector.C a) => Tuple.Undefined (Parameter a) where undef = Parameter Tuple.undef Tuple.undef -type ParameterStruct a = Memory.Struct (MultiValue.T a, MultiVector.T D4 a)+type ParameterStruct a = Memory.Struct (NiceValue.T a, NiceVector.T D4 a) parameterMemory :: (Marshal.C a, Marshal.Vector D4 a) =>@@ -75,19 +75,19 @@ ParameterExp (forall r. LLVM.CodeGenFunction r (Parameter a)) instance Expr.Aggregate (ParameterExp a) (Parameter a) where- type MultiValuesOf (ParameterExp a) = Parameter a+ type NiceValuesOf (ParameterExp a) = Parameter a type ExpressionsOf (Parameter a) = ParameterExp a dissect x = ParameterExp (return x) bundle (ParameterExp code) = code -type State = MultiVector.T D4+type State = NiceVector.T D4 {-# DEPRECATED bandpassParameter "only for testing, use Universal or Moog filter for production code" #-} bandpassParameter ::- (MultiVector.C a, MultiValue.Transcendental a,- MultiValue.RationalConstant a) =>+ (NiceVector.C a, NiceValue.Transcendental a,+ NiceValue.RationalConstant a) => Exp a -> Exp a -> ParameterExp a bandpassParameter (Exp reson) (Exp cutoff) = ParameterExp (do@@ -96,35 +96,35 @@ bandpassParameterCode r c) bandpassParameterCode ::- (MultiVector.C a, MultiValue.Transcendental a,- MultiValue.RationalConstant a) =>- MultiValue.T a ->- MultiValue.T a ->+ (NiceVector.C a, NiceValue.Transcendental a,+ NiceValue.RationalConstant a) =>+ NiceValue.T a ->+ NiceValue.T a -> LLVM.CodeGenFunction r (Parameter a) bandpassParameterCode reson cutoff = do p <- Filt2L.bandpassParameterCode reson cutoff v <-- MultiVector.assembleFromVector $ fmap ($ p) $+ NiceVector.assembleFromVector $ fmap ($ p) $ LLVM.consVector Filt2.c1 Filt2.d1 Filt2.c2 Filt2.d2 return $ Parameter (Filt2.c0 p) v next ::- (MultiVector.PseudoRing a) =>- (Parameter a, MultiValue.T a) ->+ (NiceVector.PseudoRing a) =>+ (Parameter a, NiceValue.T a) -> State a ->- LLVM.CodeGenFunction r (MultiValue.T a, State a)+ LLVM.CodeGenFunction r (NiceValue.T a, State a) next (Parameter c0 k1, x0) y1 = do s0 <- A.mul c0 x0- s1 <- MultiVector.dotProduct k1 y1+ s1 <- NiceVector.dotProduct k1 y1 y0 <- A.add s0 s1- x1new <- MultiVector.extract (LLVM.valueOf 0) y1- y1new <- MultiVector.extract (LLVM.valueOf 1) y1- yv <- MultiVector.assembleFromVector $ LLVM.consVector x0 y0 x1new y1new+ x1new <- NiceVector.extract (LLVM.valueOf 0) y1+ y1new <- NiceVector.extract (LLVM.valueOf 1) y1+ yv <- NiceVector.assembleFromVector $ LLVM.consVector x0 y0 x1new y1new return (y0, yv) causal ::- (MultiVector.PseudoRing a) =>+ (NiceVector.PseudoRing a) => (Marshal.Vector D4 a) =>- Causal.T (Parameter a, MultiValue.T a) (MultiValue.T a)+ Causal.T (Parameter a, NiceValue.T a) (NiceValue.T a) causal = Causal.mapAccum next (return A.zero)
src/Synthesizer/LLVM/Filter/Universal.hs view
@@ -6,8 +6,8 @@ Result(Result, lowpass, highpass, bandpass, bandlimit), Parameter, parameter, causal, parameterCode, causalExp,- multiValueResult, unMultiValueResult,- multiValueParameter, unMultiValueParameter,+ niceValueResult, unNiceValueResult,+ niceValueParameter, unNiceValueParameter, parameterAtoms, ) where import qualified Synthesizer.Plain.Filter.Recursive.Universal as Universal@@ -24,8 +24,8 @@ import qualified LLVM.DSL.Expression as Expr -import qualified LLVM.Extra.Multi.Value.Marshal as MarshalMV-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Marshal as MarshalNice+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Storable as Storable import qualified LLVM.Extra.Marshal as Marshal import qualified LLVM.Extra.Memory as Memory@@ -120,36 +120,36 @@ flattenCode = Value.flattenCodeTraversable unfoldCode = Value.unfoldCodeTraversable -instance (MultiValue.C a) => MultiValue.C (Result a) where- type Repr (Result a) = Result (MultiValue.Repr a)- cons = multiValueResult . fmap MultiValue.cons- undef = multiValueResult $ pure MultiValue.undef- zero = multiValueResult $ pure MultiValue.zero+instance (NiceValue.C a) => NiceValue.C (Result a) where+ type Repr (Result a) = Result (NiceValue.Repr a)+ cons = niceValueResult . fmap NiceValue.cons+ undef = niceValueResult $ pure NiceValue.undef+ zero = niceValueResult $ pure NiceValue.zero phi bb =- fmap multiValueResult .- traverse (MultiValue.phi bb) . unMultiValueResult+ fmap niceValueResult .+ traverse (NiceValue.phi bb) . unNiceValueResult addPhi bb a b = Fold.sequence_ $- liftA2 (MultiValue.addPhi bb)- (unMultiValueResult a) (unMultiValueResult b)+ liftA2 (NiceValue.addPhi bb)+ (unNiceValueResult a) (unNiceValueResult b) -multiValueResult ::- Result (MultiValue.T a) -> MultiValue.T (Result a)-multiValueResult = MultiValue.Cons . fmap (\(MultiValue.Cons a) -> a)+niceValueResult ::+ Result (NiceValue.T a) -> NiceValue.T (Result a)+niceValueResult = NiceValue.Cons . fmap (\(NiceValue.Cons a) -> a) -unMultiValueResult ::- MultiValue.T (Result a) -> Result (MultiValue.T a)-unMultiValueResult (MultiValue.Cons x) = fmap MultiValue.Cons x+unNiceValueResult ::+ NiceValue.T (Result a) -> Result (NiceValue.T a)+unNiceValueResult (NiceValue.Cons x) = fmap NiceValue.Cons x -instance (MarshalMV.C a) => MarshalMV.C (Result a) where+instance (MarshalNice.C a) => MarshalNice.C (Result a) where pack p =- case MarshalMV.pack <$> p of+ case MarshalNice.pack <$> p of Result hp bp lp bl -> LLVM.consStruct hp bp lp bl- unpack = fmap MarshalMV.unpack . LLVM.uncurryStruct Result+ unpack = fmap MarshalNice.unpack . LLVM.uncurryStruct Result -instance (Expr.Aggregate e mv) => Expr.Aggregate (Result e) (Result mv) where- type MultiValuesOf (Result e) = Result (Expr.MultiValuesOf e)- type ExpressionsOf (Result mv) = Result (Expr.ExpressionsOf mv)+instance (Expr.Aggregate e nv) => Expr.Aggregate (Result e) (Result nv) where+ type NiceValuesOf (Result e) = Result (Expr.NiceValuesOf e)+ type ExpressionsOf (Result nv) = Result (Expr.ExpressionsOf nv) bundle = traverse Expr.bundle dissect = fmap Expr.dissect @@ -163,39 +163,58 @@ flattenCode = Value.flattenCodeTraversable unfoldCode = Value.unfoldCodeTraversable -instance (MultiValue.C a) => MultiValue.C (Parameter a) where- type Repr (Parameter a) = Parameter (MultiValue.Repr a)- cons = multiValueParameter . fmap MultiValue.cons- undef = multiValueParameter $ pure MultiValue.undef- zero = multiValueParameter $ pure MultiValue.zero+instance (NiceValue.C a) => NiceValue.C (Parameter a) where+ type Repr (Parameter a) = Parameter (NiceValue.Repr a)+ cons = niceValueParameter . fmap NiceValue.cons+ undef = niceValueParameter $ pure NiceValue.undef+ zero = niceValueParameter $ pure NiceValue.zero phi bb =- fmap multiValueParameter .- traverse (MultiValue.phi bb) . unMultiValueParameter+ fmap niceValueParameter .+ traverse (NiceValue.phi bb) . unNiceValueParameter addPhi bb a b = Fold.sequence_ $- liftA2 (MultiValue.addPhi bb)- (unMultiValueParameter a) (unMultiValueParameter b)+ liftA2 (NiceValue.addPhi bb)+ (unNiceValueParameter a) (unNiceValueParameter b) -multiValueParameter ::- Parameter (MultiValue.T a) -> MultiValue.T (Parameter a)-multiValueParameter = MultiValue.Cons . fmap (\(MultiValue.Cons a) -> a)+instance (NiceValue.Compose a) => NiceValue.Compose (Parameter a) where+ type Composed (Parameter a) = Parameter (NiceValue.Composed a)+ compose = niceValueParameter . fmap NiceValue.compose -unMultiValueParameter ::- MultiValue.T (Parameter a) -> Parameter (MultiValue.T a)-unMultiValueParameter (MultiValue.Cons x) = fmap MultiValue.Cons x+instance (NiceValue.Decompose a) => NiceValue.Decompose (Parameter a) where+ decompose pat =+ fmap (NiceValue.decompose (Universal.k1 pat)) .+ unNiceValueParameter -instance (MarshalMV.C a) => MarshalMV.C (Parameter a) where+type instance+ NiceValue.Decomposed f (Parameter p) =+ Parameter (NiceValue.Decomposed f p)+type instance+ NiceValue.PatternTuple (Parameter p) =+ Parameter (NiceValue.PatternTuple p)++niceValueParameter ::+ Parameter (NiceValue.T a) -> NiceValue.T (Parameter a)+niceValueParameter = NiceValue.Cons . fmap (\(NiceValue.Cons a) -> a)++unNiceValueParameter ::+ NiceValue.T (Parameter a) -> Parameter (NiceValue.T a)+unNiceValueParameter (NiceValue.Cons x) = fmap NiceValue.Cons x++parameterAtoms :: Parameter (NiceValue.Atom a)+parameterAtoms = pure NiceValue.atom++instance (MarshalNice.C a) => MarshalNice.C (Parameter a) where pack p =- case MarshalMV.pack <$> p of+ case MarshalNice.pack <$> p of Parameter k1 k2 ampIn ampI1 ampI2 ampLimit -> LLVM.consStruct k1 k2 ampIn ampI1 ampI2 ampLimit- unpack = fmap MarshalMV.unpack . LLVM.uncurryStruct Parameter+ unpack = fmap MarshalNice.unpack . LLVM.uncurryStruct Parameter instance- (Expr.Aggregate e mv) =>- Expr.Aggregate (Parameter e) (Parameter mv) where- type MultiValuesOf (Parameter e) = Parameter (Expr.MultiValuesOf e)- type ExpressionsOf (Parameter mv) = Parameter (Expr.ExpressionsOf mv)+ (Expr.Aggregate e nv) =>+ Expr.Aggregate (Parameter e) (Parameter nv) where+ type NiceValuesOf (Parameter e) = Parameter (Expr.NiceValuesOf e)+ type ExpressionsOf (Parameter nv) = Parameter (Expr.ExpressionsOf nv) bundle = traverse Expr.bundle dissect = fmap Expr.dissect
src/Synthesizer/LLVM/ForeignPtr.hs view
@@ -13,7 +13,7 @@ module Synthesizer.LLVM.ForeignPtr where import qualified LLVM.DSL.Execution as Exec-import qualified LLVM.Extra.Multi.Value.Marshal as MarshalMV+import qualified LLVM.Extra.Nice.Value.Marshal as MarshalNice import qualified LLVM.Extra.Marshal as Marshal import qualified LLVM.ExecutionEngine as EE import qualified LLVM.Core as LLVM@@ -50,13 +50,13 @@ newParam stop start b = newInit stop (Marshal.with b start) -newParamMV ::- (MarshalMV.C b) =>+newParamNice ::+ (MarshalNice.C b) => Exec.Finalizer a ->- (LLVM.Ptr (MarshalMV.Struct b) -> IO (LLVM.Ptr a)) ->+ (LLVM.Ptr (MarshalNice.Struct b) -> IO (LLVM.Ptr a)) -> b -> IO (MemoryPtr a)-newParamMV stop start b =- newInit stop (MarshalMV.with b start)+newParamNice stop start b =+ newInit stop (MarshalNice.with b start) new :: (Marshal.C a, Marshal.Struct a ~ struct) =>
src/Synthesizer/LLVM/Frame/SerialVector.hs view
@@ -21,15 +21,15 @@ import qualified Synthesizer.LLVM.Frame.SerialVector.Code as Code import Synthesizer.LLVM.Frame.SerialVector.Code- (T, fromMultiVector, toMultiVector)+ (T, fromNiceVector, toNiceVector) import qualified LLVM.DSL.Expression.Vector as ExprVec import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value.Vector as MultiValueVec-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value.Vector as NiceValueVec+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Core as LLVM@@ -42,22 +42,22 @@ fromFixedList ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => LLVM.FixedList (TypeNum.ToUnary n) a -> Exp (T n a) fromFixedList = fromOrdinary . Expr.cons . LLVM.vector -subsample :: (TypeNum.Positive n, MultiVector.C a) => Exp (T n a) -> Exp a+subsample :: (TypeNum.Positive n, NiceVector.C a) => Exp (T n a) -> Exp a subsample =- Expr.liftM (MultiValueVec.extract (A.zero :: LLVM.Value Word32)) . toOrdinary+ Expr.liftM (NiceValueVec.extract (A.zero :: LLVM.Value Word32)) . toOrdinary -upsample :: (TypeNum.Positive n, MultiVector.C a) => Exp a -> Exp (T n a)+upsample :: (TypeNum.Positive n, NiceVector.C a) => Exp a -> Exp (T n a) upsample = fromOrdinary . ExprVec.replicate shiftUp ::- (TypeNum.Positive n, MultiVector.C x, Exp x ~ a, Exp (T n x) ~ v) =>+ (TypeNum.Positive n, NiceVector.C x, Exp x ~ a, Exp (T n x) ~ v) => a -> v -> (a, v) shiftUp a v = (Expr.liftM2 ((fmap fst .) . Code.shiftUp) a v,@@ -65,45 +65,45 @@ iterate ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => (Exp a -> Exp a) -> Exp a -> Exp (T n a) iterate f = fromOrdinary . ExprVec.iterate f reverse ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => Exp (T n a) -> Exp (T n a) reverse =- Expr.liftM (fmap fromMultiVector . MultiVector.reverse . toMultiVector)+ Expr.liftM (fmap fromNiceVector . NiceVector.reverse . toNiceVector) cumulate ::- (TypeNum.Positive n, MultiVector.Additive a) =>+ (TypeNum.Positive n, NiceVector.Additive a) => Exp a -> Exp (T n a) -> (Exp a, Exp (T n a)) cumulate a v = (Expr.liftM2 ((fmap fst .) . Code.cumulate) a v, Expr.liftM2 ((fmap snd .) . Code.cumulate) a v) limit ::- (TypeNum.Positive n, MultiVector.Real a) =>+ (TypeNum.Positive n, NiceVector.Real a) => (Exp (T n a), Exp (T n a)) -> Exp (T n a) -> Exp (T n a) limit (l,u) = fromOrdinary . ExprVec.limit (toOrdinary l, toOrdinary u) . toOrdinary cmp ::- (TypeNum.Positive n, MultiVector.Comparison a) =>+ (TypeNum.Positive n, NiceVector.Comparison a) => LLVM.CmpPredicate -> Exp (T n a) -> Exp (T n a) -> Exp (T n Bool) cmp ord a b = fromOrdinary $ ExprVec.cmp ord (toOrdinary a) (toOrdinary b) select ::- (TypeNum.Positive n, MultiVector.Select a) =>+ (TypeNum.Positive n, NiceVector.Select a) => Exp (T n Bool) -> Exp (T n a) -> Exp (T n a) -> Exp (T n a) select c a b = fromOrdinary $ ExprVec.select (toOrdinary c) (toOrdinary a) (toOrdinary b) fromOrdinary :: Exp (LLVM.Vector n a) -> Exp (T n a)-fromOrdinary = Expr.lift1 MultiValue.cast+fromOrdinary = Expr.lift1 NiceValue.cast toOrdinary :: Exp (T n a) -> Exp (LLVM.Vector n a)-toOrdinary = Expr.lift1 MultiValue.cast+toOrdinary = Expr.lift1 NiceValue.cast
src/Synthesizer/LLVM/Frame/SerialVector/Class.hs view
@@ -38,8 +38,8 @@ import qualified Synthesizer.LLVM.Frame.SerialVector.Code as SerialCode import qualified Synthesizer.LLVM.Frame.Stereo as Stereo -import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Tuple as Tuple@@ -171,7 +171,7 @@ {- |-The type parameter @v@ shall be a @MultiVector@ or @MultiValue Serial@+The type parameter @v@ shall be a @NiceVector@ or @NiceValue Serial@ or a wrapper around one or more such things sharing the same size. -} class (TypeNum.Positive (Size v)) => Sized v where@@ -220,32 +220,32 @@ -instance (TypeNum.Positive n) => Sized (MultiVector.T n a) where- type Size (MultiVector.T n a) = n+instance (TypeNum.Positive n) => Sized (NiceVector.T n a) where+ type Size (NiceVector.T n a) = n -instance (TypeNum.Positive n, MultiVector.C a) => Read (MultiVector.T n a) where+instance (TypeNum.Positive n, NiceVector.C a) => Read (NiceVector.T n a) where - type Element (MultiVector.T n a) = MultiValue.T a- type ReadIt (MultiVector.T n a) = MultiVector.T n a+ type Element (NiceVector.T n a) = NiceValue.T a+ type ReadIt (NiceVector.T n a) = NiceVector.T n a - extract = MultiVector.extract+ extract = NiceVector.extract readStart v = return $ Iterator v readNext (Iterator v) =- mapSnd Iterator <$> MultiVector.shiftDown MultiValue.undef v+ mapSnd Iterator <$> NiceVector.shiftDown NiceValue.undef v instance- (TypeNum.Positive n, MultiVector.C a) => Write (MultiVector.T n a) where+ (TypeNum.Positive n, NiceVector.C a) => Write (NiceVector.T n a) where - type WriteIt (MultiVector.T n a) = MultiVector.T n a+ type WriteIt (NiceVector.T n a) = NiceVector.T n a - insert = MultiVector.insert+ insert = NiceVector.insert - writeStart = return (Iterator MultiVector.undef)- writeNext x (Iterator v) = Iterator . snd <$> MultiVector.shiftDown x v+ writeStart = return (Iterator NiceVector.undef)+ writeNext x (Iterator v) = Iterator . snd <$> NiceVector.shiftDown x v writeStop (Iterator v) = return v -instance (TypeNum.Positive n, MultiVector.C a) => Zero (MultiVector.T n a) where+instance (TypeNum.Positive n, NiceVector.C a) => Zero (NiceVector.T n a) where writeZero = return (Iterator Tuple.zero) @@ -255,18 +255,18 @@ instance (TypeNum.Positive n) => Sized (Serial n a) where type Size (Serial n a) = n -instance (TypeNum.Positive n, MultiVector.C a) => Read (Serial n a) where+instance (TypeNum.Positive n, NiceVector.C a) => Read (Serial n a) where - type Element (Serial n a) = MultiValue.T a+ type Element (Serial n a) = NiceValue.T a type ReadIt (Serial n a) = Serial n a extract = SerialCode.extract readStart v = return $ Iterator v readNext (Iterator v) =- mapSnd Iterator <$> SerialCode.shiftDown MultiValue.undef v+ mapSnd Iterator <$> SerialCode.shiftDown NiceValue.undef v -instance (TypeNum.Positive n, MultiVector.C a) => Write (Serial n a) where+instance (TypeNum.Positive n, NiceVector.C a) => Write (Serial n a) where type WriteIt (Serial n a) = Serial n a @@ -276,7 +276,7 @@ writeNext x (Iterator v) = Iterator . snd <$> SerialCode.shiftDown x v writeStop (Iterator v) = return v -instance (TypeNum.Positive n, MultiVector.C a) => Zero (Serial n a) where+instance (TypeNum.Positive n, NiceVector.C a) => Zero (Serial n a) where writeZero = return (Iterator Tuple.zero)
src/Synthesizer/LLVM/Frame/SerialVector/Code.hs view
@@ -5,7 +5,7 @@ module Synthesizer.LLVM.Frame.SerialVector.Code ( T(Cons), Value, size, fromOrdinary, toOrdinary,- fromMultiVector, toMultiVector,+ fromNiceVector, toNiceVector, extract, insert, modify, assemble, dissect, assemble1, dissect1,@@ -15,12 +15,12 @@ scale, ) where -import qualified LLVM.Extra.Multi.Vector.Instance as MultiVectorInst-import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value.Vector as MultiValueVec-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Vector.Instance as NiceVectorInst+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value.Vector as NiceValueVec+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Core as LLVM@@ -43,15 +43,15 @@ newtype T n a = Cons (LLVM.Vector n a) deriving (Eq, Num) -type Value n a = MultiValue.T (T n a)+type Value n a = NiceValue.T (T n a) -instance (TypeNum.Positive n, MultiVector.C a) => MultiValue.C (T n a) where- type Repr (T n a) = MultiVector.Repr n a- cons (Cons v) = fromOrdinary $ MultiValue.cons v- undef = fromOrdinary MultiValue.undef- zero = fromOrdinary MultiValue.zero- phi bb = fmap fromOrdinary . MultiValue.phi bb . toOrdinary- addPhi bb a b = MultiValue.addPhi bb (toOrdinary a) (toOrdinary b)+instance (TypeNum.Positive n, NiceVector.C a) => NiceValue.C (T n a) where+ type Repr (T n a) = NiceVector.Repr n a+ cons (Cons v) = fromOrdinary $ NiceValue.cons v+ undef = fromOrdinary NiceValue.undef+ zero = fromOrdinary NiceValue.zero+ phi bb = fmap fromOrdinary . NiceValue.phi bb . toOrdinary+ addPhi bb a b = NiceValue.addPhi bb (toOrdinary a) (toOrdinary b) instance (Marshal.Vector n a) => Marshal.C (T n a) where pack (Cons v) = Marshal.pack v@@ -64,113 +64,113 @@ peek ptr = Cons <$> Store.peek (castPtr ptr) instance- (TypeNum.Positive n, Storable.Vector a, MultiVector.C a) =>+ (TypeNum.Positive n, Storable.Vector a, NiceVector.C a) => Storable.C (T n a) where load ptr = fmap fromOrdinary $ Storable.load =<< LLVM.bitcast ptr store v ptr = Storable.store (toOrdinary v) =<< LLVM.bitcast ptr instance- (TypeNum.Positive n, MultiVector.IntegerConstant a) =>- MultiValue.IntegerConstant (T n a) where- fromInteger' = fromMultiVector . MultiVector.fromInteger'+ (TypeNum.Positive n, NiceVector.IntegerConstant a) =>+ NiceValue.IntegerConstant (T n a) where+ fromInteger' = fromNiceVector . NiceVector.fromInteger' instance- (TypeNum.Positive n, MultiVector.RationalConstant a) =>- MultiValue.RationalConstant (T n a) where- fromRational' = fromMultiVector . MultiVector.fromRational'+ (TypeNum.Positive n, NiceVector.RationalConstant a) =>+ NiceValue.RationalConstant (T n a) where+ fromRational' = fromNiceVector . NiceVector.fromRational' instance- (TypeNum.Positive n, MultiVector.Additive a) =>- MultiValue.Additive (T n a) where- add = lift2 MultiVector.add- sub = lift2 MultiVector.sub- neg = lift1 MultiVector.neg+ (TypeNum.Positive n, NiceVector.Additive a) =>+ NiceValue.Additive (T n a) where+ add = lift2 NiceVector.add+ sub = lift2 NiceVector.sub+ neg = lift1 NiceVector.neg instance- (TypeNum.Positive n, MultiVector.PseudoRing a) =>- MultiValue.PseudoRing (T n a) where- mul = lift2 MultiVector.mul+ (TypeNum.Positive n, NiceVector.PseudoRing a) =>+ NiceValue.PseudoRing (T n a) where+ mul = lift2 NiceVector.mul scale ::- (TypeNum.Positive n, MultiVector.PseudoRing a) =>- MultiValue.T a -> Value n a -> LLVM.CodeGenFunction r (Value n a)-scale = lift1 . MultiVector.scale+ (TypeNum.Positive n, NiceVector.PseudoRing a) =>+ NiceValue.T a -> Value n a -> LLVM.CodeGenFunction r (Value n a)+scale = lift1 . NiceVector.scale instance- (TypeNum.Positive n, MultiVector.Real a) =>- MultiValue.Real (T n a) where- min = lift2 MultiVector.min- max = lift2 MultiVector.max- abs = lift1 MultiVector.abs- signum = lift1 MultiVector.signum+ (TypeNum.Positive n, NiceVector.Real a) =>+ NiceValue.Real (T n a) where+ min = lift2 NiceVector.min+ max = lift2 NiceVector.max+ abs = lift1 NiceVector.abs+ signum = lift1 NiceVector.signum instance- (TypeNum.Positive n, MultiVector.Fraction a) =>- MultiValue.Fraction (T n a) where- truncate = lift1 MultiVector.truncate- fraction = lift1 MultiVector.fraction+ (TypeNum.Positive n, NiceVector.Fraction a) =>+ NiceValue.Fraction (T n a) where+ truncate = lift1 NiceVector.truncate+ fraction = lift1 NiceVector.fraction instance- (TypeNum.Positive n, MultiVector.Field a) =>- MultiValue.Field (T n a) where- fdiv = lift2 MultiVector.fdiv+ (TypeNum.Positive n, NiceVector.Field a) =>+ NiceValue.Field (T n a) where+ fdiv = lift2 NiceVector.fdiv instance- (TypeNum.Positive n, MultiVector.Algebraic a) =>- MultiValue.Algebraic (T n a) where- sqrt = lift1 MultiVector.sqrt+ (TypeNum.Positive n, NiceVector.Algebraic a) =>+ NiceValue.Algebraic (T n a) where+ sqrt = lift1 NiceVector.sqrt instance- (TypeNum.Positive n, MultiVector.Transcendental a) =>- MultiValue.Transcendental (T n a) where- pi = fmap fromMultiVector MultiVector.pi- sin = lift1 MultiVector.sin- log = lift1 MultiVector.log- exp = lift1 MultiVector.exp- cos = lift1 MultiVector.cos- pow = lift2 MultiVector.pow+ (TypeNum.Positive n, NiceVector.Transcendental a) =>+ NiceValue.Transcendental (T n a) where+ pi = fmap fromNiceVector NiceVector.pi+ sin = lift1 NiceVector.sin+ log = lift1 NiceVector.log+ exp = lift1 NiceVector.exp+ cos = lift1 NiceVector.cos+ pow = lift2 NiceVector.pow instance (TypeNum.Positive n, n ~ m,- MultiVector.NativeInteger n a ar,- MultiValue.NativeInteger a ar) =>- MultiValueVec.NativeInteger (T n a) (LLVM.Vector m ar) where+ NiceVector.NativeInteger n a ar,+ NiceValue.NativeInteger a ar) =>+ NiceValueVec.NativeInteger (T n a) (LLVM.Vector m ar) where instance (TypeNum.Positive n, n ~ m,- MultiVector.NativeFloating n a ar,- MultiValue.NativeFloating a ar) =>- MultiValueVec.NativeFloating (T n a) (LLVM.Vector m ar) where+ NiceVector.NativeFloating n a ar,+ NiceValue.NativeFloating a ar) =>+ NiceValueVec.NativeFloating (T n a) (LLVM.Vector m ar) where lift1 :: (Functor f) =>- (MultiVector.T n a -> f (MultiVector.T m b)) ->+ (NiceVector.T n a -> f (NiceVector.T m b)) -> (Value n a -> f (Value m b))-lift1 f a = fromMultiVector <$> f (toMultiVector a)+lift1 f a = fromNiceVector <$> f (toNiceVector a) lift2 :: (Functor f) =>- (MultiVector.T n a -> MultiVector.T m b -> f (MultiVector.T k c)) ->+ (NiceVector.T n a -> NiceVector.T m b -> f (NiceVector.T k c)) -> (Value n a -> Value m b -> f (Value k c))-lift2 f a b = fromMultiVector <$> f (toMultiVector a) (toMultiVector b)+lift2 f a b = fromNiceVector <$> f (toNiceVector a) (toNiceVector b) extract :: (TypeNum.Positive n,- MultiVector.C x, MultiValue.T x ~ a, Value n x ~ v) =>+ NiceVector.C x, NiceValue.T x ~ a, Value n x ~ v) => LLVM.Value Word32 -> v -> LLVM.CodeGenFunction r a-extract i v = MultiVector.extract i (toMultiVector v)+extract i v = NiceVector.extract i (toNiceVector v) insert :: (TypeNum.Positive n,- MultiVector.C x, MultiValue.T x ~ a, Value n x ~ v) =>+ NiceVector.C x, NiceValue.T x ~ a, Value n x ~ v) => LLVM.Value Word32 -> a -> v -> LLVM.CodeGenFunction r v insert i a v =- fromMultiVector <$> MultiVector.insert i a (toMultiVector v)+ fromNiceVector <$> NiceVector.insert i a (toNiceVector v) modify :: (TypeNum.Positive n,- MultiVector.C x, MultiValue.T x ~ a, Value n x ~ v) =>+ NiceVector.C x, NiceValue.T x ~ a, Value n x ~ v) => LLVM.Value Word32 -> (a -> LLVM.CodeGenFunction r a) -> v -> LLVM.CodeGenFunction r v@@ -178,28 +178,28 @@ assemble ::- (TypeNum.Positive n, MultiVector.C a) =>- [MultiValue.T a] ->+ (TypeNum.Positive n, NiceVector.C a) =>+ [NiceValue.T a] -> LLVM.CodeGenFunction r (Value n a)-assemble = fmap fromMultiVector . MultiVector.assemble+assemble = fmap fromNiceVector . NiceVector.assemble dissect ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => Value n a ->- LLVM.CodeGenFunction r [MultiValue.T a]-dissect = MultiVector.dissect . toMultiVector+ LLVM.CodeGenFunction r [NiceValue.T a]+dissect = NiceVector.dissect . toNiceVector assemble1 ::- (TypeNum.Positive n, MultiVector.C a) =>- NonEmpty.T [] (MultiValue.T a) ->+ (TypeNum.Positive n, NiceVector.C a) =>+ NonEmpty.T [] (NiceValue.T a) -> LLVM.CodeGenFunction r (Value n a)-assemble1 = fmap fromMultiVector . MultiVector.assemble1+assemble1 = fmap fromNiceVector . NiceVector.assemble1 dissect1 ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => Value n a ->- LLVM.CodeGenFunction r (NonEmpty.T [] (MultiValue.T a))-dissect1 = MultiVector.dissect1 . toMultiVector+ LLVM.CodeGenFunction r (NonEmpty.T [] (NiceValue.T a))+dissect1 = NiceVector.dissect1 . toNiceVector sizeS :: TypeNum.Positive n => Value n a -> TypeNum.Singleton n@@ -210,70 +210,70 @@ last ::- (TypeNum.Positive n, MultiVector.C a) =>- Value n a -> LLVM.CodeGenFunction r (MultiValue.T a)+ (TypeNum.Positive n, NiceVector.C a) =>+ Value n a -> LLVM.CodeGenFunction r (NiceValue.T a) last v = extract (LLVM.valueOf (size v - 1 :: Word32)) v subsample ::- (TypeNum.Positive n, MultiVector.C a) =>- Value n a -> LLVM.CodeGenFunction r (MultiValue.T a)+ (TypeNum.Positive n, NiceVector.C a) =>+ Value n a -> LLVM.CodeGenFunction r (NiceValue.T a) subsample = extract (A.zero :: LLVM.Value Word32) upsample ::- (TypeNum.Positive n, MultiVector.C a) =>- MultiValue.T a -> LLVM.CodeGenFunction r (Value n a)-upsample = fmap fromOrdinary . MultiValueVec.replicate+ (TypeNum.Positive n, NiceVector.C a) =>+ NiceValue.T a -> LLVM.CodeGenFunction r (Value n a)+upsample = fmap fromOrdinary . NiceValueVec.replicate reverse ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => Value n a -> LLVM.CodeGenFunction r (Value n a) reverse =- fmap fromMultiVector . MultiVector.reverse . toMultiVector+ fmap fromNiceVector . NiceVector.reverse . toNiceVector shiftUp ::- (TypeNum.Positive n, MultiVector.C x,- MultiValue.T x ~ a, Value n x ~ v) =>+ (TypeNum.Positive n, NiceVector.C x,+ NiceValue.T x ~ a, Value n x ~ v) => a -> v -> LLVM.CodeGenFunction r (a, v) shiftUp a v =- mapSnd fromMultiVector <$> MultiVector.shiftUp a (toMultiVector v)+ mapSnd fromNiceVector <$> NiceVector.shiftUp a (toNiceVector v) shiftUpMultiZero ::- (TypeNum.Positive n, MultiVector.C x, Value n x ~ v) =>+ (TypeNum.Positive n, NiceVector.C x, Value n x ~ v) => Int -> v -> LLVM.CodeGenFunction r v shiftUpMultiZero k v =- fromMultiVector <$> MultiVector.shiftUpMultiZero k (toMultiVector v)+ fromNiceVector <$> NiceVector.shiftUpMultiZero k (toNiceVector v) shiftDown ::- (TypeNum.Positive n, MultiVector.C x,- MultiValue.T x ~ a, Value n x ~ v) =>+ (TypeNum.Positive n, NiceVector.C x,+ NiceValue.T x ~ a, Value n x ~ v) => a -> v -> LLVM.CodeGenFunction r (a, v) shiftDown a v =- mapSnd fromMultiVector <$> MultiVector.shiftDown a (toMultiVector v)+ mapSnd fromNiceVector <$> NiceVector.shiftDown a (toNiceVector v) iterate ::- (TypeNum.Positive n, MultiVector.C a) =>- (MultiValue.T a -> LLVM.CodeGenFunction r (MultiValue.T a)) ->- MultiValue.T a -> LLVM.CodeGenFunction r (Value n a)-iterate f = fmap fromOrdinary . MultiValueVec.iterate f+ (TypeNum.Positive n, NiceVector.C a) =>+ (NiceValue.T a -> LLVM.CodeGenFunction r (NiceValue.T a)) ->+ NiceValue.T a -> LLVM.CodeGenFunction r (Value n a)+iterate f = fmap fromOrdinary . NiceValueVec.iterate f cumulate ::- (TypeNum.Positive n, MultiVector.Additive a) =>- MultiValue.T a -> Value n a ->- LLVM.CodeGenFunction r (MultiValue.T a, Value n a)+ (TypeNum.Positive n, NiceVector.Additive a) =>+ NiceValue.T a -> Value n a ->+ LLVM.CodeGenFunction r (NiceValue.T a, Value n a) cumulate a =- fmap (mapSnd fromMultiVector) . MultiVector.cumulate a . toMultiVector+ fmap (mapSnd fromNiceVector) . NiceVector.cumulate a . toNiceVector -fromOrdinary :: MultiValue.T (LLVM.Vector n a) -> Value n a-fromOrdinary = MultiValue.cast+fromOrdinary :: NiceValue.T (LLVM.Vector n a) -> Value n a+fromOrdinary = NiceValue.cast -toOrdinary :: Value n a -> MultiValue.T (LLVM.Vector n a)-toOrdinary = MultiValue.cast+toOrdinary :: Value n a -> NiceValue.T (LLVM.Vector n a)+toOrdinary = NiceValue.cast -fromMultiVector :: MultiVector.T n a -> Value n a-fromMultiVector = fromOrdinary . MultiVectorInst.toMultiValue+fromNiceVector :: NiceVector.T n a -> Value n a+fromNiceVector = fromOrdinary . NiceVectorInst.toNiceValue -toMultiVector :: Value n a -> MultiVector.T n a-toMultiVector = MultiVectorInst.fromMultiValue . toOrdinary+toNiceVector :: Value n a -> NiceVector.T n a+toNiceVector = NiceVectorInst.fromNiceValue . toOrdinary
src/Synthesizer/LLVM/Frame/Stereo.hs view
@@ -12,9 +12,9 @@ Stereo.T, Stereo.cons, Stereo.left, Stereo.right, Stereo.Channel(Stereo.Left, Stereo.Right), Stereo.select, Stereo.swap,- multiValue, unMultiValue, consMultiValue, unExpression,- multiVector, unMultiVector,- multiValueSerial, unMultiValueSerial,+ niceValue, unNiceValue, consNiceValue, unExpression,+ niceVector, unNiceVector,+ niceValueSerial, unNiceValueSerial, Stereo.arrowFromMono, Stereo.arrowFromMonoControlled, Stereo.arrowFromChannels,@@ -29,10 +29,10 @@ import qualified LLVM.DSL.Expression as Expr import qualified LLVM.DSL.Value as Value -import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value.Storable as StorableMV-import qualified LLVM.Extra.Multi.Value.Marshal as MarshalMV-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value.Storable as StorableNice+import qualified LLVM.Extra.Nice.Value.Marshal as MarshalNice+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Extra.Storable as Storable import qualified LLVM.Extra.Marshal as Marshal@@ -74,87 +74,87 @@ Tuple.addPhi bb (Stereo.left x) (Stereo.left y) Tuple.addPhi bb (Stereo.right x) (Stereo.right y) -instance (MultiValue.C a) => MultiValue.C (Stereo.T a) where- type Repr (Stereo.T a) = Stereo.T (MultiValue.Repr a)- cons = multiValue . fmap MultiValue.cons- undef = multiValue $ pure MultiValue.undef- zero = multiValue $ pure MultiValue.zero- phi bb = fmap multiValue . Trav.traverse (MultiValue.phi bb) . unMultiValue+instance (NiceValue.C a) => NiceValue.C (Stereo.T a) where+ type Repr (Stereo.T a) = Stereo.T (NiceValue.Repr a)+ cons = niceValue . fmap NiceValue.cons+ undef = niceValue $ pure NiceValue.undef+ zero = niceValue $ pure NiceValue.zero+ phi bb = fmap niceValue . Trav.traverse (NiceValue.phi bb) . unNiceValue addPhi bb a b = Fold.sequence_ $- liftA2 (MultiValue.addPhi bb) (unMultiValue a) (unMultiValue b)+ liftA2 (NiceValue.addPhi bb) (unNiceValue a) (unNiceValue b) -instance (MultiValue.Compose a) => MultiValue.Compose (Stereo.T a) where- type Composed (Stereo.T a) = Stereo.T (MultiValue.Composed a)- compose = multiValue . fmap MultiValue.compose+instance (NiceValue.Compose a) => NiceValue.Compose (Stereo.T a) where+ type Composed (Stereo.T a) = Stereo.T (NiceValue.Composed a)+ compose = niceValue . fmap NiceValue.compose -instance (MultiValue.Decompose p) => MultiValue.Decompose (Stereo.T p) where- decompose p = liftA2 MultiValue.decompose p . unMultiValue+instance (NiceValue.Decompose p) => NiceValue.Decompose (Stereo.T p) where+ decompose p = liftA2 NiceValue.decompose p . unNiceValue -type instance MultiValue.Decomposed f (Stereo.T pa) =- Stereo.T (MultiValue.Decomposed f pa)-type instance MultiValue.PatternTuple (Stereo.T pa) =- Stereo.T (MultiValue.PatternTuple pa)+type instance NiceValue.Decomposed f (Stereo.T pa) =+ Stereo.T (NiceValue.Decomposed f pa)+type instance NiceValue.PatternTuple (Stereo.T pa) =+ Stereo.T (NiceValue.PatternTuple pa) -multiValue :: Stereo.T (MultiValue.T a) -> MultiValue.T (Stereo.T a)-multiValue = MultiValue.Cons . fmap (\(MultiValue.Cons a) -> a)+niceValue :: Stereo.T (NiceValue.T a) -> NiceValue.T (Stereo.T a)+niceValue = NiceValue.Cons . fmap (\(NiceValue.Cons a) -> a) -unMultiValue :: MultiValue.T (Stereo.T a) -> Stereo.T (MultiValue.T a)-unMultiValue (MultiValue.Cons x) = fmap MultiValue.Cons x+unNiceValue :: NiceValue.T (Stereo.T a) -> Stereo.T (NiceValue.T a)+unNiceValue (NiceValue.Cons x) = fmap NiceValue.Cons x -consMultiValue :: MultiValue.T a -> MultiValue.T a -> MultiValue.T (Stereo.T a)-consMultiValue l r = multiValue $ Stereo.cons l r+consNiceValue :: NiceValue.T a -> NiceValue.T a -> NiceValue.T (Stereo.T a)+consNiceValue l r = niceValue $ Stereo.cons l r unExpression :: Expr.Exp (Stereo.T a) -> Stereo.T (Expr.Exp a) unExpression x = Stereo.cons- (Expr.lift1 (MultiValue.lift1 Stereo.left) x)- (Expr.lift1 (MultiValue.lift1 Stereo.right) x)+ (Expr.lift1 (NiceValue.lift1 Stereo.left) x)+ (Expr.lift1 (NiceValue.lift1 Stereo.right) x) -instance (MultiVector.C a) => MultiVector.C (Stereo.T a) where- type Repr n (Stereo.T a) = Stereo.T (MultiVector.Repr n a)- cons = multiVector . fmap MultiVector.cons . Stereo.sequence- undef = multiVector $ pure MultiVector.undef- zero = multiVector $ pure MultiVector.zero+instance (NiceVector.C a) => NiceVector.C (Stereo.T a) where+ type Repr n (Stereo.T a) = Stereo.T (NiceVector.Repr n a)+ cons = niceVector . fmap NiceVector.cons . Stereo.sequence+ undef = niceVector $ pure NiceVector.undef+ zero = niceVector $ pure NiceVector.zero phi bb =- fmap multiVector . Trav.traverse (MultiVector.phi bb) . unMultiVector+ fmap niceVector . Trav.traverse (NiceVector.phi bb) . unNiceVector addPhi bb a b = Fold.sequence_ $- liftA2 (MultiVector.addPhi bb) (unMultiVector a) (unMultiVector b)+ liftA2 (NiceVector.addPhi bb) (unNiceVector a) (unNiceVector b) shuffle is u v =- multiVector <$>- traverse2 (MultiVector.shuffle is) (unMultiVector u) (unMultiVector v)+ niceVector <$>+ traverse2 (NiceVector.shuffle is) (unNiceVector u) (unNiceVector v) extract k =- fmap multiValue . Trav.traverse (MultiVector.extract k) . unMultiVector+ fmap niceValue . Trav.traverse (NiceVector.extract k) . unNiceVector insert k a v =- multiVector <$>- traverse2 (MultiVector.insert k) (unMultiValue a) (unMultiVector v)+ niceVector <$>+ traverse2 (NiceVector.insert k) (unNiceValue a) (unNiceVector v) -multiVector :: Stereo.T (MultiVector.T n a) -> MultiVector.T n (Stereo.T a)-multiVector = MultiVector.Cons . fmap (\(MultiVector.Cons a) -> a)+niceVector :: Stereo.T (NiceVector.T n a) -> NiceVector.T n (Stereo.T a)+niceVector = NiceVector.Cons . fmap (\(NiceVector.Cons a) -> a) -unMultiVector :: MultiVector.T n (Stereo.T a) -> Stereo.T (MultiVector.T n a)-unMultiVector (MultiVector.Cons x) = fmap MultiVector.Cons x+unNiceVector :: NiceVector.T n (Stereo.T a) -> Stereo.T (NiceVector.T n a)+unNiceVector (NiceVector.Cons x) = fmap NiceVector.Cons x -multiValueSerial ::- Stereo.T (MultiValue.T (Serial.T n a)) ->- MultiValue.T (Serial.T n (Stereo.T a))-multiValueSerial = MultiValue.Cons . fmap (\(MultiValue.Cons a) -> a)+niceValueSerial ::+ Stereo.T (NiceValue.T (Serial.T n a)) ->+ NiceValue.T (Serial.T n (Stereo.T a))+niceValueSerial = NiceValue.Cons . fmap (\(NiceValue.Cons a) -> a) -unMultiValueSerial ::- MultiValue.T (Serial.T n (Stereo.T a)) ->- Stereo.T (MultiValue.T (Serial.T n a))-unMultiValueSerial (MultiValue.Cons x) = fmap MultiValue.Cons x+unNiceValueSerial ::+ NiceValue.T (Serial.T n (Stereo.T a)) ->+ Stereo.T (NiceValue.T (Serial.T n a))+unNiceValueSerial (NiceValue.Cons x) = fmap NiceValue.Cons x instance- (Expr.Aggregate e mv) => Expr.Aggregate (Stereo.T e) (Stereo.T mv) where- type MultiValuesOf (Stereo.T e) = Stereo.T (Expr.MultiValuesOf e)- type ExpressionsOf (Stereo.T mv) = Stereo.T (Expr.ExpressionsOf mv)+ (Expr.Aggregate e nv) => Expr.Aggregate (Stereo.T e) (Stereo.T nv) where+ type NiceValuesOf (Stereo.T e) = Stereo.T (Expr.NiceValuesOf e)+ type ExpressionsOf (Stereo.T nv) = Stereo.T (Expr.ExpressionsOf nv) bundle = Trav.traverse Expr.bundle dissect = fmap Expr.dissect @@ -194,23 +194,23 @@ load = Storable.loadApplicative store = Storable.storeFoldable -instance (MarshalMV.C l) => MarshalMV.C (Stereo.T l) where- pack x = MarshalMV.pack (Stereo.left x, Stereo.right x)- unpack = uncurry Stereo.cons . MarshalMV.unpack+instance (MarshalNice.C l) => MarshalNice.C (Stereo.T l) where+ pack x = MarshalNice.pack (Stereo.left x, Stereo.right x)+ unpack = uncurry Stereo.cons . MarshalNice.unpack -instance (StorableMV.C l) => StorableMV.C (Stereo.T l) where- load = StorableMV.loadApplicative- store = StorableMV.storeFoldable+instance (StorableNice.C l) => StorableNice.C (Stereo.T l) where+ load = StorableNice.loadApplicative+ store = StorableNice.storeFoldable instance- (StorableMV.Vector l, MultiVector.C l) =>- StorableMV.Vector (Stereo.T l) where+ (StorableNice.Vector l, NiceVector.C l) =>+ StorableNice.Vector (Stereo.T l) where assembleVector p =- Trav.traverse (StorableMV.assembleVector (Stereo.left<$>p)) .+ Trav.traverse (StorableNice.assembleVector (Stereo.left<$>p)) . Stereo.sequence disassembleVector p = fmap (\x -> liftA2 Stereo.cons (Stereo.left x) (Stereo.right x)) .- Trav.traverse (StorableMV.disassembleVector (Stereo.left<$>p))+ Trav.traverse (StorableNice.disassembleVector (Stereo.left<$>p)) {-@@ -239,12 +239,12 @@ -instance (MultiValue.Additive a) => MultiValue.Additive (Stereo.T a) where+instance (NiceValue.Additive a) => NiceValue.Additive (Stereo.T a) where add x y =- multiValue <$> traverse2 MultiValue.add (unMultiValue x) (unMultiValue y)+ niceValue <$> traverse2 NiceValue.add (unNiceValue x) (unNiceValue y) sub x y =- multiValue <$> traverse2 MultiValue.sub (unMultiValue x) (unMultiValue y)- neg x = multiValue <$> Trav.traverse MultiValue.neg (unMultiValue x)+ niceValue <$> traverse2 NiceValue.sub (unNiceValue x) (unNiceValue y)+ neg x = niceValue <$> Trav.traverse NiceValue.neg (unNiceValue x) traverse2 ::
src/Synthesizer/LLVM/Frame/StereoInterleaved.hs view
@@ -16,18 +16,18 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Vector as MultiVector+import qualified LLVM.Extra.Nice.Vector as NiceVector import qualified Type.Data.Num.Decimal as TypeNum interleave ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => Stereo.T (Exp (Serial.T n a)) -> Exp (T n a) interleave = Expr.liftM StereoInt.interleave deinterleave ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => Exp (T n a) -> Stereo.T (Exp (Serial.T n a)) deinterleave x = Stereo.cons@@ -35,11 +35,11 @@ (Expr.liftM (fmap Stereo.right . StereoInt.deinterleave) x) amplify ::- (TypeNum.Positive n, MultiVector.PseudoRing a) =>+ (TypeNum.Positive n, NiceVector.PseudoRing a) => Exp a -> Exp (T n a) -> Exp (T n a) amplify = Expr.liftM2 StereoInt.scale envelope ::- (TypeNum.Positive n, MultiVector.PseudoRing a) =>+ (TypeNum.Positive n, NiceVector.PseudoRing a) => Exp (Serial.T n a) -> Exp (T n a) -> Exp (T n a) envelope = Expr.liftM2 StereoInt.envelope
src/Synthesizer/LLVM/Frame/StereoInterleavedCode.hs view
@@ -37,10 +37,10 @@ import qualified Synthesizer.LLVM.Frame.Stereo as Stereo import qualified Synthesizer.LLVM.Frame.SerialVector.Code as Serial -import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Core as LLVM import LLVM.Core (Vector)@@ -61,7 +61,7 @@ data T n a = Cons (Vector n a) (Vector n a) -type Value n a = MultiValue.T (T n a)+type Value n a = NiceValue.T (T n a) withSize :: (TypeNum.Natural n) => (Int -> m (Value n a)) -> m (Value n a)@@ -74,41 +74,41 @@ interleave ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => Stereo.T (Serial.Value n a) -> LLVM.CodeGenFunction r (Value n a) interleave x =- assemble . map Stereo.unMultiValue- =<< Serial.dissect (Stereo.multiValueSerial x)+ assemble . map Stereo.unNiceValue+ =<< Serial.dissect (Stereo.niceValueSerial x) deinterleave ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => Value n a -> LLVM.CodeGenFunction r (Stereo.T (Serial.Value n a)) deinterleave v =- Stereo.unMultiValueSerial <$>- (Serial.assemble . map Stereo.multiValue =<< dissect v)+ Stereo.unNiceValueSerial <$>+ (Serial.assemble . map Stereo.niceValue =<< dissect v) fromMono ::- (TypeNum.Positive n, MultiVector.C a) =>+ (TypeNum.Positive n, NiceVector.C a) => Serial.Value n a -> LLVM.CodeGenFunction r (Value n a) fromMono x = assemble . map pure =<< Serial.dissect x assemble ::- (TypeNum.Positive n, MultiVector.C a) =>- [Stereo.T (MultiValue.T a)] -> LLVM.CodeGenFunction r (Value n a)+ (TypeNum.Positive n, NiceVector.C a) =>+ [Stereo.T (NiceValue.T a)] -> LLVM.CodeGenFunction r (Value n a) assemble x = withSize $ \n -> uncurry (liftA2 merge) .- mapPair (MultiVector.assemble, MultiVector.assemble) .+ mapPair (NiceVector.assemble, NiceVector.assemble) . splitAt n . concatMap Fold.toList $ x dissect ::- (TypeNum.Positive n, MultiVector.C a) =>- Value n a -> LLVM.CodeGenFunction r [Stereo.T (MultiValue.T a)]+ (TypeNum.Positive n, NiceVector.C a) =>+ Value n a -> LLVM.CodeGenFunction r [Stereo.T (NiceValue.T a)] dissect v = let (v0,v1) = split v in fmap@@ -117,46 +117,46 @@ aux _ = error "odd number of stereo elements" in aux) $ liftA2 (++)- (MultiVector.dissect v0)- (MultiVector.dissect v1)+ (NiceVector.dissect v0)+ (NiceVector.dissect v1) -merge :: MultiVector.T n a -> MultiVector.T n a -> MultiValue.T (T n a)-merge (MultiVector.Cons a) (MultiVector.Cons b) = MultiValue.Cons (a,b)+merge :: NiceVector.T n a -> NiceVector.T n a -> NiceValue.T (T n a)+merge (NiceVector.Cons a) (NiceVector.Cons b) = NiceValue.Cons (a,b) -split :: MultiValue.T (T n a) -> (MultiVector.T n a, MultiVector.T n a)-split (MultiValue.Cons (a,b)) = (MultiVector.Cons a, MultiVector.Cons b)+split :: NiceValue.T (T n a) -> (NiceVector.T n a, NiceVector.T n a)+split (NiceValue.Cons (a,b)) = (NiceVector.Cons a, NiceVector.Cons b) merge_ ::- MultiValue.T (Vector n a) -> MultiValue.T (Vector n a) ->- MultiValue.T (T n a)-merge_ (MultiValue.Cons a) (MultiValue.Cons b) = MultiValue.Cons (a,b)+ NiceValue.T (Vector n a) -> NiceValue.T (Vector n a) ->+ NiceValue.T (T n a)+merge_ (NiceValue.Cons a) (NiceValue.Cons b) = NiceValue.Cons (a,b) split_ ::- MultiValue.T (T n a) ->- (MultiValue.T (Vector n a), MultiValue.T (Vector n a))-split_ (MultiValue.Cons (a,b)) = (MultiValue.Cons a, MultiValue.Cons b)+ NiceValue.T (T n a) ->+ (NiceValue.T (Vector n a), NiceValue.T (Vector n a))+split_ (NiceValue.Cons (a,b)) = (NiceValue.Cons a, NiceValue.Cons b) -instance (TypeNum.Positive n, MultiVector.C a) => MultiValue.C (T n a) where- type Repr (T n a) = (MultiVector.Repr n a, MultiVector.Repr n a)- cons (Cons v0 v1) = merge (MultiVector.cons v0) (MultiVector.cons v1)- undef = merge MultiVector.undef MultiVector.undef- zero = merge MultiVector.zero MultiVector.zero+instance (TypeNum.Positive n, NiceVector.C a) => NiceValue.C (T n a) where+ type Repr (T n a) = (NiceVector.Repr n a, NiceVector.Repr n a)+ cons (Cons v0 v1) = merge (NiceVector.cons v0) (NiceVector.cons v1)+ undef = merge NiceVector.undef NiceVector.undef+ zero = merge NiceVector.zero NiceVector.zero phi bb = fmap (uncurry merge) .- AppHT.mapPair (MultiVector.phi bb, MultiVector.phi bb) . split+ AppHT.mapPair (NiceVector.phi bb, NiceVector.phi bb) . split addPhi bb a b = case (split a, split b) of ((a0,a1), (b0,b1)) -> do- MultiVector.addPhi bb a0 b0- MultiVector.addPhi bb a1 b1+ NiceVector.addPhi bb a0 b0+ NiceVector.addPhi bb a1 b1 instance (Marshal.Vector n a) => Marshal.C (T n a) where pack (Cons v0 v1) = Marshal.pack (v0,v1) unpack = uncurry Cons . Marshal.unpack instance- (TypeNum.Positive n, MultiVector.C a, St.Storable a) =>+ (TypeNum.Positive n, NiceVector.C a, St.Storable a) => St.Storable (T n a) where sizeOf ~(Cons v0 v1) = St.sizeOf v0 + St.sizeOf v1 alignment ~(Cons v _) = St.alignment v@@ -191,8 +191,8 @@ This instance allows to run @arrange@ on interleaved stereo vectors. -} instance- (TypeNum.Positive n, MultiVector.Additive a) =>- MultiValue.Additive (T n a) where+ (TypeNum.Positive n, NiceVector.Additive a) =>+ NiceValue.Additive (T n a) where add = zipV merge A.add sub = zipV merge A.sub neg = mapV A.neg@@ -203,26 +203,26 @@ scale ::- (TypeNum.Positive n, MultiVector.PseudoRing a) =>- MultiValue.T a -> Value n a -> LLVM.CodeGenFunction r (Value n a)+ (TypeNum.Positive n, NiceVector.PseudoRing a) =>+ NiceValue.T a -> Value n a -> LLVM.CodeGenFunction r (Value n a) scale a v = do- av <- MultiVector.replicate a+ av <- NiceVector.replicate a mapV (A.mul av) v amplify ::- (TypeNum.Positive n, MultiVector.PseudoRing a) =>+ (TypeNum.Positive n, NiceVector.PseudoRing a) => a -> Value n a -> LLVM.CodeGenFunction r (Value n a)-amplify a = scale (MultiValue.cons a)+amplify a = scale (NiceValue.cons a) envelope ::- (TypeNum.Positive n, MultiVector.PseudoRing a) =>+ (TypeNum.Positive n, NiceVector.PseudoRing a) => Serial.Value n a -> Value n a -> LLVM.CodeGenFunction r (Value n a) envelope e a = zipV merge (flip A.mul) a =<< fromMono e mapV :: (Applicative m) =>- (MultiVector.T n a -> m (MultiVector.T n a)) ->+ (NiceVector.T n a -> m (NiceVector.T n a)) -> Value n a -> m (Value n a) mapV f x = case split x of@@ -230,8 +230,8 @@ zipV :: (Applicative m) => (c -> c -> d) ->- (MultiVector.T n a ->- MultiVector.T n b ->+ (NiceVector.T n a ->+ NiceVector.T n b -> m c) -> Value n a -> Value n b ->
src/Synthesizer/LLVM/Generator/Core.hs view
@@ -12,8 +12,8 @@ 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 qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Arithmetic as A import Control.Applicative ((<$>))@@ -25,58 +25,58 @@ -type MV a = Sig.T (MultiValue.T a)+type Nice a = Sig.T (NiceValue.T a) -iterate :: (Marshal.C a) => (Exp a -> Exp a) -> Exp a -> MV a+iterate :: (Marshal.C a) => (Exp a -> Exp a) -> Exp a -> Nice a iterate f a = Sig.iterate (Expr.unliftM1 f) (Expr.unExp a) -- ToDo: replace by constantSharing and scanl iterateParam :: (Marshal.C a, Marshal.C b) =>- (Exp b -> Exp a -> Exp a) -> Exp b -> Exp a -> MV a+ (Exp b -> Exp a -> Exp a) -> Exp b -> Exp a -> Nice a iterateParam f b a =- MultiValue.snd <$>+ NiceValue.snd <$> iterate (Expr.uncurry $ \bi ai -> Expr.zip bi $ f bi ai) (Expr.zip b a) ramp ::- (Marshal.C a, MultiValue.Additive a) =>- Exp a -> Exp a -> MV a+ (Marshal.C a, NiceValue.Additive a) =>+ Exp a -> Exp a -> Nice a ramp = iterateParam Expr.add parabola ::- (Marshal.C a, MultiValue.Additive a) =>- Exp a -> Exp a -> Exp a -> MV a+ (Marshal.C a, NiceValue.Additive a) =>+ Exp a -> Exp a -> Exp a -> Nice a parabola d2 d1 start = integrate start $* ramp d2 d1 integrate ::- (Marshal.C a, MultiValue.Additive a, MultiValue.T a ~ al) =>+ (Marshal.C a, NiceValue.Additive a, NiceValue.T a ~ al) => Exp a -> Causal.T al al integrate start = Causal.mapAccum (\a s -> (,) s <$> A.add s a) (Expr.unExp start) osci ::- (MultiValue.Fraction t, Marshal.C t) =>- Exp t -> Exp t -> MV t+ (NiceValue.Fraction t, Marshal.C t) =>+ Exp t -> Exp t -> Nice t osci phase freq = iterate (Expr.liftM2 A.incPhase freq) phase exponential ::- (Marshal.C a, MultiValue.PseudoRing a) =>- Exp a -> Exp a -> MV a+ (Marshal.C a, NiceValue.PseudoRing a) =>+ Exp a -> Exp a -> Nice a exponential = iterateParam Expr.mul exponentialBounded ::- (Marshal.C a, MultiValue.PseudoRing a,- MultiValue.Real a, MultiValue.IntegerConstant a) =>- Exp a -> Exp a -> Exp a -> MV a+ (Marshal.C a, NiceValue.PseudoRing a,+ NiceValue.Real a, NiceValue.IntegerConstant a) =>+ Exp a -> Exp a -> Exp a -> Nice a exponentialBounded bound decay = iterateParam (\bk y -> case Expr.unzip bk of (b,k) -> Expr.max b $ k*y) (Expr.zip bound decay) -noise, noiseAlt :: Exp Word32 -> MV Word32+noise, noiseAlt :: Exp Word32 -> Nice Word32 noise seed = iterate (Expr.liftReprM Rnd.nextCG) (Expr.irem seed (Expr.cons Rnd.modulus-1) + 1)
src/Synthesizer/LLVM/Generator/Extra.hs view
@@ -10,8 +10,8 @@ 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 qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import Data.Word (Word) @@ -22,9 +22,9 @@ ramp, parabolaFadeIn, parabolaFadeOut, parabolaFadeInMap, parabolaFadeOutMap ::- (Marshal.C a, MultiValue.Field a, MultiValue.IntegerConstant a,- MultiValue.NativeFloating a ar) =>- Exp Word -> Sig.MV a+ (Marshal.C a, NiceValue.Field a, NiceValue.IntegerConstant a,+ NiceValue.NativeFloating a ar) =>+ Exp Word -> Sig.Nice a ramp dur = Causal.take dur $* Sig.rampInf (Expr.fromIntegral dur)
src/Synthesizer/LLVM/Generator/Render.hs view
@@ -5,7 +5,8 @@ {-# LANGUAGE ForeignFunctionInterface #-} module Synthesizer.LLVM.Generator.Render ( -- * type driven- RunArg, DSLArg,+ Argument, DSLArg,+ Run, DSL, Shape, run, runChunky, runChunkyOnVector,@@ -13,7 +14,8 @@ -- * explicit argument converters runExplicit,- build, -- ToDo: better name+ function,+ argument, WithShape, -- * utilities@@ -24,7 +26,7 @@ import qualified Synthesizer.LLVM.Causal.Parametric as Parametric import qualified Synthesizer.LLVM.Generator.Source as Source import Synthesizer.LLVM.Private.Render- (RunArg (DSLArg, buildArg),+ (Argument (DSLArg, argument), Triple, tripleStruct, derefStartPtr, derefStopPtr) import Synthesizer.LLVM.Generator.Private (T(Cons)) @@ -39,9 +41,9 @@ import LLVM.DSL.Render.Run ((*->)) import LLVM.DSL.Expression (Exp(Exp)) -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Maybe as Maybe@@ -73,7 +75,7 @@ compile ::- (Storable.C a, MultiValue.T a ~ value,+ (Storable.C a, NiceValue.T a ~ value, Marshal.C param, Marshal.Struct param ~ paramStruct) => (Exp param -> T value) -> IO (LLVM.Ptr paramStruct -> Word -> Ptr a -> IO Word)@@ -92,7 +94,7 @@ return pos runAux ::- (Marshal.C p, Storable.C a, MultiValue.T a ~ value) =>+ (Marshal.C p, Storable.C a, NiceValue.T a ~ value) => (Exp p -> T value) -> IO (IO () -> Int -> p -> IO (SV.Vector a)) runAux sig = do fill <- compile sig@@ -104,7 +106,7 @@ return $ fromIntegral n _run ::- (Marshal.C p, Storable.C a, MultiValue.T a ~ value) =>+ (Marshal.C p, Storable.C a, NiceValue.T a ~ value) => (Exp p -> T value) -> IO (Int -> p -> IO (SV.Vector a)) _run = fmap ($ return ()) . runAux @@ -118,7 +120,7 @@ Memory.C global, Memory.Struct global ~ globalStruct, Triple paramStruct globalStruct stateStruct ~ triple, LLVM.IsSized local,- Storable.C a, MultiValue.T a ~ value) =>+ Storable.C a, NiceValue.T a ~ value) => (forall r z. (Tuple.Phi z) => pPtr -> global -> LLVM.Value (LLVM.Ptr local) -> () -> state -> MaybeCont.T r z (value, state)) ->@@ -171,7 +173,7 @@ runChunkyAux ::- (Storable.C a, MultiValue.T a ~ value, Marshal.C p) =>+ (Storable.C a, NiceValue.T a ~ value, Marshal.C p) => (Exp p -> T value) -> IO (IO () -> SVL.ChunkSize -> p -> IO (SVL.Vector a)) runChunkyAux sig = do paramd <-@@ -180,7 +182,7 @@ Parametric.Cons next start stop -> do (startFunc,stopFunc,fill) <- compileChunky next start stop return $ \final (SVL.ChunkSize size) p -> do- statePtr <- ForeignPtr.newParamMV stopFunc startFunc p+ statePtr <- ForeignPtr.newParamNice stopFunc startFunc p let go = Unsafe.interleaveIO $ do@@ -198,14 +200,14 @@ fmap SVL.fromChunks go runChunky ::- (Storable.C a, MultiValue.T a ~ value, Marshal.C p) =>+ (Storable.C a, NiceValue.T a ~ value, Marshal.C p) => (Exp p -> T value) -> IO (SVL.ChunkSize -> p -> IO (SVL.Vector a)) runChunky = fmap ($ return ()) . runChunkyAux runChunkyOnVector ::- (Storable.C a, MultiValue.T a ~ al) =>- (Storable.C b, MultiValue.T b ~ bl) =>+ (Storable.C a, NiceValue.T a ~ al) =>+ (Storable.C b, NiceValue.T b ~ bl) => (T al -> T bl) -> IO (SVL.ChunkSize -> SV.Vector a -> IO (SVL.Vector b)) runChunkyOnVector sig = do@@ -221,56 +223,56 @@ class Run f where type DSL f type Shape f- build :: (Marshal.C p) => Run.T (WithShape (Shape f)) p (DSL f) f+ function :: (Marshal.C p) => Run.T (WithShape (Shape f)) p (DSL f) f instance (Storable.C a) => Run (SVL.Vector a) where- type DSL (SVL.Vector a) = T (MultiValue.T a)+ type DSL (SVL.Vector a) = T (NiceValue.T a) type Shape (SVL.Vector a) = SVL.ChunkSize- build =+ function = Run.Cons $ Compose .- fmap (\f shape create -> Unsafe.performIO $ buildIOGen f shape create) .+ fmap (\f shape create -> Unsafe.performIO $ functionIOGen f shape create) . runChunkyAux instance (Storable.C a) => Run (SV.Vector a) where- type DSL (SV.Vector a) = T (MultiValue.T a)+ type DSL (SV.Vector a) = T (NiceValue.T a) type Shape (SV.Vector a) = Int- build =+ function = Run.Cons $ Compose .- fmap (\f shape create -> Unsafe.performIO $ buildIOGen f shape create) .+ fmap (\f shape create -> Unsafe.performIO $ functionIOGen f shape create) . runAux instance (RunIO a) => Run (IO a) where type DSL (IO a) = T (DSL_IO a) type Shape (IO a) = ShapeIO a- build = buildIO+ function = functionIO -instance (RunArg a, Run f) => Run (a -> f) where+instance (Argument a, Run f) => Run (a -> f) where type DSL (a -> f) = DSLArg a -> DSL f type Shape (a -> f) = Shape f- build = buildArg *-> build+ function = argument *-> function class RunIO a where type DSL_IO a type ShapeIO a- buildIO ::+ functionIO :: (Marshal.C p) => Run.T (WithShape (ShapeIO a)) p (T (DSL_IO a)) (IO a) instance (Storable.C a) => RunIO (SVL.Vector a) where- type DSL_IO (SVL.Vector a) = MultiValue.T a+ type DSL_IO (SVL.Vector a) = NiceValue.T a type ShapeIO (SVL.Vector a) = SVL.ChunkSize- buildIO = Run.Cons $ Compose . fmap buildIOGen . runChunkyAux+ functionIO = Run.Cons $ Compose . fmap functionIOGen . runChunkyAux instance (Storable.C a) => RunIO (SV.Vector a) where- type DSL_IO (SV.Vector a) = MultiValue.T a+ type DSL_IO (SV.Vector a) = NiceValue.T a type ShapeIO (SV.Vector a) = Int- buildIO = Run.Cons $ Compose . fmap buildIOGen . runAux+ functionIO = Run.Cons $ Compose . fmap functionIOGen . runAux -buildIOGen ::+functionIOGen :: (Monad m) => (final -> shape -> p -> m a) -> shape -> m (p, final) -> m a-buildIOGen f shape create = do (p,final) <- create; f final shape p+functionIOGen f shape create = do (p,final) <- create; f final shape p @@ -279,12 +281,12 @@ do f <- Sig.run (\n -> Sig.takeWhile (Expr.<*n) (Sig.iterate (1+) 0) <> Sig.takeWhile (Expr.<*n) (Sig.iterate (2+) 0)); f SVL.defaultChunkSize (12::Float) :: IO (SVL.Vector Float) -} run :: (Run f) => DSL f -> IO (Shape f -> f)-run = runExplicit build+run = runExplicit function {- ToDo:-Export it, but we also need to export 'build' then.-To this end we should define a nice data type for 'build'.+Export it, but we also need to export 'function' then.+To this end we should define a nice data type for 'function'. -} runExplicit :: Run.T (WithShape (Shape f)) () fdsl f ->@@ -293,6 +295,6 @@ getCompose $ Run.run builder sig _exampleExplicit ::- (Exp Float -> Exp Word -> T (MultiValue.T Float)) ->+ (Exp Float -> Exp Word -> T (NiceValue.T Float)) -> IO (Int -> Float -> Word -> SV.Vector Float)-_exampleExplicit = runExplicit (Arg.primitive *-> Arg.primitive *-> build)+_exampleExplicit = runExplicit (Arg.primitive *-> Arg.primitive *-> function)
src/Synthesizer/LLVM/Generator/Signal.hs view
@@ -4,7 +4,7 @@ {-# LANGUAGE Rank2Types #-} module Synthesizer.LLVM.Generator.Signal ( Sig.T,- MV,+ Nice, constant, fromArray,@@ -53,8 +53,8 @@ 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 qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Iterator as Iter import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Memory as Memory@@ -79,7 +79,7 @@ -type MV a = Sig.T (MultiValue.T a)+type Nice a = Sig.T (NiceValue.T a) constant :: (Expr.Aggregate ae al, Memory.C al) => ae -> Sig.T al constant a = Sig.iterate return (Expr.bundle a)@@ -89,7 +89,7 @@ (TypeNum.Natural n, Marshal.C a) => ((n :*: LLVM.SizeOf (Marshal.Struct a)) ~ arrSize, TypeNum.Natural arrSize) =>- Exp (MultiValue.Array n a) -> MV a+ Exp (NiceValue.Array n a) -> Nice a fromArray arrExp = Sig.Cons (\arrPtr -> noLocalPtr $ \i -> do inRange <- MaybeCont.lift $@@ -108,7 +108,7 @@ takeWhile :: (Expr.Aggregate ae a) => (ae -> Exp Bool) -> Sig.T a -> Sig.T a takeWhile p =- Sig.takeWhile (fmap (\(MultiValue.Cons cont) -> cont) . Expr.unliftM1 p)+ Sig.takeWhile (fmap (\(NiceValue.Cons cont) -> cont) . Expr.unliftM1 p) take :: Exp Word -> Sig.T a -> Sig.T a take len =@@ -134,7 +134,7 @@ (do local <- LLVM.alloca (global,state0) <- start- ~(MultiValue.Cons nv) <- Expr.unExp n+ ~(NiceValue.Cons nv) <- Expr.unExp n state1 <- Iter.mapWhileState_ (\_ s0 ->@@ -182,8 +182,8 @@ rampInf, rampSlope, parabolaFadeInInf, parabolaFadeOutInf ::- (Marshal.C a, MultiValue.Field a, MultiValue.IntegerConstant a) =>- Exp a -> MV a+ (Marshal.C a, NiceValue.Field a, NiceValue.IntegerConstant a) =>+ Exp a -> Nice a rampSlope slope = Core.ramp slope Expr.zero rampInf dur = rampSlope (Expr.recip dur) @@ -216,9 +216,9 @@ ramp, parabolaFadeIn, parabolaFadeOut, parabolaFadeInMap, parabolaFadeOutMap ::- (Marshal.C a, MultiValue.Field a, MultiValue.IntegerConstant a,- MultiValue.NativeFloating a ar) =>- Exp Word -> MV a+ (Marshal.C a, NiceValue.Field a, NiceValue.IntegerConstant a,+ NiceValue.NativeFloating a ar) =>+ Exp Word -> Nice a ramp dur = take dur $ rampInf (Expr.fromIntegral dur)@@ -237,26 +237,26 @@ osci ::- (MultiValue.Fraction t, Marshal.C t) =>- (forall r. MultiValue.T t -> CodeGenFunction r y) ->+ (NiceValue.Fraction t, Marshal.C t) =>+ (forall r. NiceValue.T t -> CodeGenFunction r y) -> Exp t -> Exp t -> Sig.T y osci wave phase freq = Causal.map wave $* Core.osci phase freq exponential2 :: (Marshal.C a) =>- (MultiValue.Real a) =>- (MultiValue.RationalConstant a) =>- (MultiValue.Transcendental a) =>- Exp a -> Exp a -> MV a+ (NiceValue.Real a) =>+ (NiceValue.RationalConstant a) =>+ (NiceValue.Transcendental a) =>+ Exp a -> Exp a -> Nice a exponential2 halfLife = Core.exponential (1 / 2 ** recip halfLife) exponentialBounded2 :: (Marshal.C a) =>- (MultiValue.Real a) =>- (MultiValue.RationalConstant a) =>- (MultiValue.Transcendental a) =>- Exp a -> Exp a -> Exp a -> MV a+ (NiceValue.Real a) =>+ (NiceValue.RationalConstant a) =>+ (NiceValue.Transcendental a) =>+ Exp a -> Exp a -> Exp a -> Nice a exponentialBounded2 bound halfLife = Core.exponentialBounded bound (1 / 2 ** recip halfLife) @@ -279,9 +279,9 @@ towards the normal distribution according to the central limit theorem. -} noise ::- (Marshal.C a, MultiValue.Transcendental a, MultiValue.RationalConstant a,- MultiValue.NativeFloating a ar) =>- Exp Word32 -> Exp a -> MV a+ (Marshal.C a, NiceValue.Transcendental a, NiceValue.RationalConstant a,+ NiceValue.NativeFloating a ar) =>+ Exp Word32 -> Exp a -> Nice a noise seed rate = let m2 = Expr.fromInteger' $ div Rnd.modulus 2 r = sqrt (3 * rate) / m2@@ -293,13 +293,13 @@ and thus we use it, since the arguments are below 2^31. -} int31tofp ::- (MultiValue.NativeFloating a ar) =>+ (NiceValue.NativeFloating a ar) => Exp Word32 -> Exp a int31tofp = Expr.liftM- (MultiValue.fromIntegral <=<- (MultiValue.liftM LLVM.bitcast ::- MultiValue.T Word32 -> CodeGenFunction r (MultiValue.T Int32)))+ (NiceValue.fromIntegral <=<+ (NiceValue.liftM LLVM.bitcast ::+ NiceValue.T Word32 -> CodeGenFunction r (NiceValue.T Int32))) adjacentNodes02 ::@@ -314,7 +314,7 @@ (return Tuple.undef)) adjacentNodes13 ::- (Marshal.C a, MultiValue.T a ~ al) =>+ (Marshal.C a, NiceValue.T a ~ al) => Exp a -> Sig.T al -> Sig.T (Interpolation.Nodes13 al) adjacentNodes13 yp0 = tail .@@ -325,7 +325,7 @@ return (Interpolation.Nodes13 x0 x1 x2 new, (x1, x2, new))) (do y0 <- Expr.unExp yp0- return (MultiValue.undef, MultiValue.undef, y0)))+ return (NiceValue.undef, NiceValue.undef, y0))) {- |@@ -338,8 +338,8 @@ or if the input value differs from the last processed one by a certain amount. -} interpolateConstant ::- (Memory.C a, Marshal.C b, MultiValue.IntegerConstant b,- MultiValue.Additive b, MultiValue.Comparison b) =>+ (Memory.C a, Marshal.C b, NiceValue.IntegerConstant b,+ NiceValue.Additive b, NiceValue.Comparison b) => Exp b -> Sig.T a -> Sig.T a interpolateConstant k sig = CausalC.toSignal (Causal.quantizeLift (CausalC.fromSignal sig) $< constant k)
src/Synthesizer/LLVM/Generator/SignalPacked.hs view
@@ -48,10 +48,10 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Vector as MultiVector-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value.Vector as MultiValueVec-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Vector as NiceVector+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value.Vector as NiceValueVec+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.MaybeContinuation as Maybe import qualified LLVM.Extra.Control as U@@ -242,8 +242,8 @@ exponential2 ::- (Marshal.Vector n a, MultiVector.Transcendental a,- MultiValue.RationalConstant a) =>+ (Marshal.Vector n a, NiceVector.Transcendental a,+ NiceValue.RationalConstant a) => Exp a -> Exp a -> Sig.T (Serial n a) exponential2 halfLife start = withSizeRing $ \n -> Core.exponential@@ -251,9 +251,9 @@ (Serial.iterate (0.5 ** recip halfLife *) start) exponentialBounded2 ::- (Marshal.Vector n a, MultiVector.Transcendental a,- MultiValue.RationalConstant a,- MultiVector.IntegerConstant a, MultiVector.Real a) =>+ (Marshal.Vector n a, NiceVector.Transcendental a,+ NiceValue.RationalConstant a,+ NiceVector.IntegerConstant a, NiceVector.Real a) => Exp a -> Exp a -> Exp a -> Sig.T (Serial n a) exponentialBounded2 bound halfLife start = withSizeRing $ \n -> Core.exponentialBounded@@ -262,8 +262,8 @@ (Serial.iterate (0.5 ** recip halfLife *) start) osciCore ::- (Marshal.Vector n t, MultiVector.PseudoRing t, MultiVector.Fraction t,- MultiValue.IntegerConstant t) =>+ (Marshal.Vector n t, NiceVector.PseudoRing t, NiceVector.Fraction t,+ NiceValue.IntegerConstant t) => Exp t -> Exp t -> Sig.T (Serial n t) osciCore phase freq = withSizeRing $ \n -> Core.osci@@ -271,16 +271,16 @@ (Serial.upsample (Expr.fraction (n * freq))) osci ::- (Marshal.Vector n t, MultiVector.PseudoRing t, MultiVector.Fraction t,- MultiValue.IntegerConstant t) =>+ (Marshal.Vector n t, NiceVector.PseudoRing t, NiceVector.Fraction t,+ NiceValue.IntegerConstant t) => (forall r. Serial n t -> LLVM.CodeGenFunction r y) -> Exp t -> Exp t -> Sig.T y osci wave phase freq = Priv.map wave $ osciCore phase freq rampInf, rampSlope, parabolaFadeInInf, parabolaFadeOutInf ::- (Marshal.Vector n a, MultiVector.Field a, MultiVector.IntegerConstant a,- MultiValue.RationalConstant a) =>+ (Marshal.Vector n a, NiceVector.Field a, NiceVector.IntegerConstant a,+ NiceValue.RationalConstant a) => Exp a -> Sig.T (Serial n a) rampSlope slope = withSizeRing $ \n -> Core.ramp@@ -307,9 +307,9 @@ For the mysterious rate parameter see 'Sig.noise'. -} noise ::- (MultiVector.NativeFloating n a ar) =>- (MultiVector.PseudoRing a, MultiVector.IntegerConstant a) =>- (MultiValue.Algebraic a, MultiValue.RationalConstant a) =>+ (NiceVector.NativeFloating n a ar) =>+ (NiceVector.PseudoRing a, NiceVector.IntegerConstant a) =>+ (NiceValue.Algebraic a, NiceValue.RationalConstant a) => (TypeNum.Positive n, TypeNum.Positive (n :*: TypeNum.D32)) => Exp Word32 -> Exp a -> Sig.T (Serial n a) noise seed rate =@@ -326,13 +326,13 @@ It would be better to use LLVM's range annotation, instead. -} int31tofp ::- (MultiVector.NativeFloating n a ar,+ (NiceVector.NativeFloating n a ar, TypeNum.Positive n, TypeNum.Positive (n :*: TypeNum.D32)) => Serial n Word32 -> LLVM.CodeGenFunction r (Serial n a) int31tofp =- fmap SerialCode.fromOrdinary . MultiValueVec.fromIntegral .+ fmap SerialCode.fromOrdinary . NiceValueVec.fromIntegral . SerialCode.toOrdinary . forceInt32- <=< MultiValue.liftM LLVM.bitcast+ <=< NiceValue.liftM LLVM.bitcast type Id a = a -> a
src/Synthesizer/LLVM/Generator/Source.hs view
@@ -11,9 +11,9 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A@@ -31,24 +31,24 @@ import Data.Word (Word) -type T a = Sig.T (MultiValue.T a)+type T a = Sig.T (NiceValue.T a) data StorableVector a = StorableVector (Ptr a) Word storableVectorLength :: Exp (StorableVector a) -> Exp Word-storableVectorLength = Expr.lift1 (MultiValue.lift1 (\(_ptr,l) -> l))+storableVectorLength = Expr.lift1 (NiceValue.lift1 (\(_ptr,l) -> l)) consStorableVector :: Ptr a -> Int -> StorableVector a consStorableVector p = StorableVector p . fromIntegral -instance (Storable a) => MultiValue.C (StorableVector a) where+instance (Storable a) => NiceValue.C (StorableVector a) where type Repr (StorableVector a) = (LLVM.Value (Ptr a), LLVM.Value Word)- cons (StorableVector p l) = MultiValue.Cons (LLVM.valueOf p, LLVM.valueOf l)- undef = MultiValue.undefTuple- zero = MultiValue.zeroTuple- phi = MultiValue.phiTuple- addPhi = MultiValue.addPhiTuple+ cons (StorableVector p l) = NiceValue.Cons (LLVM.valueOf p, LLVM.valueOf l)+ undef = NiceValue.undefTuple+ zero = NiceValue.zeroTuple+ phi = NiceValue.phiTuple+ addPhi = NiceValue.addPhiTuple instance (Storable a) => Marshal.C (StorableVector a) where pack (StorableVector p l) = LLVM.consStruct p l@@ -64,7 +64,7 @@ p1 <- Storable.incrementPtr p0 l1 <- A.dec l0 return (y1,(p1,l1)))- (fmap (\(MultiValue.Cons (p,l)) -> (p,l)) (Expr.unExp vec))+ (fmap (\(NiceValue.Cons (p,l)) -> (p,l)) (Expr.unExp vec)) {-@@ -93,7 +93,7 @@ (LLVM.load lenPtr) valid <- A.cmp LLVM.CmpNE buffer (LLVM.valueOf nullPtr) return (valid, ((buffer,len), ())))- (fmap (\(MultiValue.Cons it) -> (it, ())) $ Expr.unExp sig)+ (fmap (\(NiceValue.Cons it) -> (it, ())) $ Expr.unExp sig) (\ _it -> return ()) flattenChunks :: (Storable.C a) => Sig.T (Chunk a) -> T a@@ -116,7 +116,7 @@ eventList :: (Marshal.C a) =>- Exp (StablePtr (EventIt.T a)) -> Sig.T (Const.T (MultiValue.T a))+ Exp (StablePtr (EventIt.T a)) -> Sig.T (Const.T (NiceValue.T a)) eventList sig = Sig.Cons -- FixMe: duplicate of ConstantPiece.piecewiseConstant@@ -130,7 +130,7 @@ MaybeCont.guard =<< MaybeCont.lift (A.cmp LLVM.CmpNE len A.zero) y <- MaybeCont.lift $ Memory.load yPtr return (Const.Cons len y, ()))- (fmap (\(MultiValue.Cons it) -> (it, ())) $ Expr.unExp sig)+ (fmap (\(NiceValue.Cons it) -> (it, ())) $ Expr.unExp sig) (\ _it -> return ()) lazySize :: Exp (StablePtr SizeIt.T) -> Sig.T (Const.T ())@@ -144,5 +144,5 @@ LLVM.call nextFn stable MaybeCont.guard =<< MaybeCont.lift (A.cmp LLVM.CmpNE len A.zero) return (Const.Cons len (), ()))- (fmap (\(MultiValue.Cons it) -> (it, ())) $ Expr.unExp size)+ (fmap (\(NiceValue.Cons it) -> (it, ())) $ Expr.unExp size) (\ _it -> return ())
src/Synthesizer/LLVM/Interpolation.hs view
@@ -33,7 +33,7 @@ import qualified LLVM.DSL.Expression as Expr -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Scalar as Scalar import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Tuple as Tuple@@ -58,17 +58,17 @@ data Margin nodes = Margin { marginNumber, marginOffset :: Int } deriving (Show, Eq) -singletonMargin :: MultiValue.T Int -> MultiValue.T (Margin nodes)+singletonMargin :: NiceValue.T Int -> NiceValue.T (Margin nodes) singletonMargin n = zipMargin n n unzipMargin ::- MultiValue.T (Margin nodes) -> (MultiValue.T Int, MultiValue.T Int)-unzipMargin (MultiValue.Cons (from, to)) =- (MultiValue.Cons from, MultiValue.Cons to)+ NiceValue.T (Margin nodes) -> (NiceValue.T Int, NiceValue.T Int)+unzipMargin (NiceValue.Cons (from, to)) =+ (NiceValue.Cons from, NiceValue.Cons to) -zipMargin :: MultiValue.T Int -> MultiValue.T Int -> MultiValue.T (Margin nodes)-zipMargin (MultiValue.Cons from) (MultiValue.Cons to) =- MultiValue.Cons (from, to)+zipMargin :: NiceValue.T Int -> NiceValue.T Int -> NiceValue.T (Margin nodes)+zipMargin (NiceValue.Cons from) (NiceValue.Cons to) =+ NiceValue.Cons (from, to) marginNumberExp :: (Expr.Value val) => val (Margin nodes) -> val Int marginNumberExp = Expr.lift1 (fst . unzipMargin)@@ -76,21 +76,21 @@ marginOffsetExp :: (Expr.Value val) => val (Margin nodes) -> val Int marginOffsetExp = Expr.lift1 (snd . unzipMargin) -instance MultiValue.C (Margin nodes) where+instance NiceValue.C (Margin nodes) where type Repr (Margin nodes) = (LLVM.Value Int, LLVM.Value Int) cons (Margin start len) =- zipMargin (MultiValue.cons start) (MultiValue.cons len)- undef = singletonMargin MultiValue.undef- zero = singletonMargin MultiValue.zero+ zipMargin (NiceValue.cons start) (NiceValue.cons len)+ undef = singletonMargin NiceValue.undef+ zero = singletonMargin NiceValue.zero phi bb a = case unzipMargin a of (a0,a1) ->- liftA2 zipMargin (MultiValue.phi bb a0) (MultiValue.phi bb a1)+ liftA2 zipMargin (NiceValue.phi bb a0) (NiceValue.phi bb a1) addPhi bb a b = case (unzipMargin a, unzipMargin b) of ((a0,a1), (b0,b1)) -> do- MultiValue.addPhi bb a0 b0- MultiValue.addPhi bb a1 b1+ NiceValue.addPhi bb a0 b0+ NiceValue.addPhi bb a1 b1 class (Applicative nodes, Traversable nodes) => C nodes where@@ -282,9 +282,9 @@ loadNodesExp :: (C nodes, Storable am) => (Value (Ptr am) -> CodeGenFunction r a) ->- MultiValue.T Int ->+ NiceValue.T Int -> Value (Ptr am) -> CodeGenFunction r (nodes a)-loadNodesExp loadNode (MultiValue.Cons step) =+loadNodesExp loadNode (NiceValue.Cons step) = MS.evalStateT $ sequenceA $ pure $ loadNext loadNode step loadNodes ::@@ -307,11 +307,11 @@ indexNodesExp :: (C nodes) =>- (MultiValue.T Word -> CodeGenFunction r v) ->- MultiValue.T Word ->- MultiValue.T Word -> CodeGenFunction r (nodes v)-indexNodesExp indexNode (MultiValue.Cons step) (MultiValue.Cons offset) =- indexNodes (indexNode . MultiValue.Cons) step offset+ (NiceValue.T Word -> CodeGenFunction r v) ->+ NiceValue.T Word ->+ NiceValue.T Word -> CodeGenFunction r (nodes v)+indexNodesExp indexNode (NiceValue.Cons step) (NiceValue.Cons offset) =+ indexNodes (indexNode . NiceValue.Cons) step offset indexNodes :: (C nodes) =>
src/Synthesizer/LLVM/MIDI.hs view
@@ -25,9 +25,9 @@ import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue-import qualified LLVM.Extra.Multi.Vector as MultiVector+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue+import qualified LLVM.Extra.Nice.Vector as NiceVector import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Core as LLVM @@ -38,9 +38,9 @@ frequencyFromBendModulation ::- (Marshal.C y, MultiValue.T y ~ ym,- MultiValue.PseudoRing y, MultiValue.IntegerConstant y,- MultiValue.Fraction y) =>+ (Marshal.C y, NiceValue.T y ~ ym,+ NiceValue.PseudoRing y, NiceValue.IntegerConstant y,+ NiceValue.Fraction y) => Exp y -> Causal.T (BM.T ym) ym frequencyFromBendModulation speed = frequencyFromPair Sig.osci speed@@ -50,16 +50,16 @@ frequencyFromBendModulationPacked :: (Marshal.Vector n a) =>- (MultiVector.PseudoRing a, MultiVector.IntegerConstant a) =>- (MultiVector.Fraction a) =>- Exp a -> Causal.T (BM.T (MultiValue.T a)) (Serial.Value n a)+ (NiceVector.PseudoRing a, NiceVector.IntegerConstant a) =>+ (NiceVector.Fraction a) =>+ Exp a -> Causal.T (BM.T (NiceValue.T a)) (Serial.Value n a) frequencyFromBendModulationPacked speed = frequencyFromPair SigPS.osci speed <<< Causal.map (\(BM.Cons b m) -> (SerialExp.upsample b, SerialExp.upsample m)) frequencyFromPair, _frequencyFromPair ::- (MultiValue.Additive y,+ (NiceValue.Additive y, A.PseudoRing ym, A.IntegerConstant ym, A.Fraction ym) => ((forall r. ym -> LLVM.CodeGenFunction r ym) -> Exp y -> Exp y -> Sig.T ym) ->
src/Synthesizer/LLVM/MIDI/BendModulation.hs view
@@ -10,8 +10,8 @@ BM.T(..), BM.deflt, BM.shift,- multiValue,- unMultiValue,+ niceValue,+ unNiceValue, ) where import qualified Synthesizer.MIDI.Value.BendModulation as BM@@ -19,9 +19,9 @@ import qualified LLVM.DSL.Expression as Expr -import qualified LLVM.Extra.Multi.Value.Storable as StorableMV-import qualified LLVM.Extra.Multi.Value.Marshal as MarshalMV-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as StorableNice+import qualified LLVM.Extra.Nice.Value.Marshal as MarshalNice+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Vector as Vector import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Extra.Storable as Storable@@ -52,35 +52,35 @@ valueOf = Tuple.valueOfFunctor -instance (Expr.Aggregate e mv) => Expr.Aggregate (BM.T e) (BM.T mv) where- type MultiValuesOf (BM.T e) = BM.T (Expr.MultiValuesOf e)- type ExpressionsOf (BM.T mv) = BM.T (Expr.ExpressionsOf mv)+instance (Expr.Aggregate e nv) => Expr.Aggregate (BM.T e) (BM.T nv) where+ type NiceValuesOf (BM.T e) = BM.T (Expr.NiceValuesOf e)+ type ExpressionsOf (BM.T nv) = BM.T (Expr.ExpressionsOf nv) bundle = Trav.traverse Expr.bundle dissect = fmap Expr.dissect -instance (MultiValue.C a) => MultiValue.C (BM.T a) where- type Repr (BM.T a) = BM.T (MultiValue.Repr a)- cons = multiValue . fmap MultiValue.cons- undef = multiValue $ pure MultiValue.undef- zero = multiValue $ pure MultiValue.zero- phi bb = fmap multiValue . Trav.traverse (MultiValue.phi bb) . unMultiValue+instance (NiceValue.C a) => NiceValue.C (BM.T a) where+ type Repr (BM.T a) = BM.T (NiceValue.Repr a)+ cons = niceValue . fmap NiceValue.cons+ undef = niceValue $ pure NiceValue.undef+ zero = niceValue $ pure NiceValue.zero+ phi bb = fmap niceValue . Trav.traverse (NiceValue.phi bb) . unNiceValue addPhi bb a b = Fold.sequence_ $- liftA2 (MultiValue.addPhi bb) (unMultiValue a) (unMultiValue b)+ liftA2 (NiceValue.addPhi bb) (unNiceValue a) (unNiceValue b) -instance (MarshalMV.C l) => MarshalMV.C (BM.T l) where- pack (BM.Cons bend depth) = MarshalMV.pack (bend, depth)- unpack = uncurry BM.Cons . MarshalMV.unpack+instance (MarshalNice.C l) => MarshalNice.C (BM.T l) where+ pack (BM.Cons bend depth) = MarshalNice.pack (bend, depth)+ unpack = uncurry BM.Cons . MarshalNice.unpack -instance (StorableMV.C l) => StorableMV.C (BM.T l) where- load = StorableMV.loadApplicative- store = StorableMV.storeFoldable+instance (StorableNice.C l) => StorableNice.C (BM.T l) where+ load = StorableNice.loadApplicative+ store = StorableNice.storeFoldable -multiValue :: BM.T (MultiValue.T a) -> MultiValue.T (BM.T a)-multiValue = MultiValue.Cons . fmap (\(MultiValue.Cons a) -> a)+niceValue :: BM.T (NiceValue.T a) -> NiceValue.T (BM.T a)+niceValue = NiceValue.Cons . fmap (\(NiceValue.Cons a) -> a) -unMultiValue :: MultiValue.T (BM.T a) -> BM.T (MultiValue.T a)-unMultiValue (MultiValue.Cons x) = fmap MultiValue.Cons x+unNiceValue :: NiceValue.T (BM.T a) -> BM.T (NiceValue.T a)+unNiceValue (NiceValue.Cons x) = fmap NiceValue.Cons x type Struct a = LLVM.Struct (a, (a, ()))
src/Synthesizer/LLVM/Plug/Input.hs view
@@ -19,9 +19,9 @@ import qualified Synthesizer.LLVM.ConstantPiece as Const -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Tuple as Tuple@@ -35,7 +35,7 @@ import Type.Base.Proxy (Proxy) import qualified Synthesizer.MIDI.PiecewiseConstant.ControllerSet as PCS-import qualified Synthesizer.Generic.Signal as SigG+import qualified Synthesizer.ChunkySize as ChunkySize import qualified Data.EventList.Relative.BodyTime as EventListBT import qualified Data.EventList.Relative.MixedTime as EventListMT import qualified Data.EventList.Relative.TimeTime as EventListTT@@ -73,11 +73,11 @@ (Marshal.C parameters, Memory.C state) => Cons (forall r.- MultiValue.T parameters ->+ NiceValue.T parameters -> state -> LLVM.CodeGenFunction r (b, state)) -- compute next value (forall r.- MultiValue.T parameters ->+ NiceValue.T parameters -> LLVM.CodeGenFunction r state) -- initial state (a -> IO (ioContext, parameters))@@ -122,20 +122,20 @@ split :: T a c -> T b d -> T (Zip.T a b) (c,d) split (Cons nextA startA createA deleteA) (Cons nextB startB createB deleteB) = Cons- (MultiValue.uncurry $ \parameterA parameterB (sa,sb) ->+ (NiceValue.uncurry $ \parameterA parameterB (sa,sb) -> liftA2 zipPair (nextA parameterA sa) (nextB parameterB sb))- (MultiValue.uncurry $ \parameterA parameterB ->+ (NiceValue.uncurry $ \parameterA parameterB -> liftA2 (,) (startA parameterA) (startB parameterB)) (\(Zip.Cons a b) -> liftA2 zipPair (createA a) (createB b)) (\(ca,cb) -> deleteA ca >> deleteB cb) -instance Default SigG.LazySize where- type Element SigG.LazySize = ()+instance Default ChunkySize.LazySize where+ type Element ChunkySize.LazySize = () deflt = lazySize -lazySize :: T SigG.LazySize ()+lazySize :: T ChunkySize.LazySize () lazySize = ignore ignore :: T a ()@@ -147,16 +147,16 @@ (const $ return ()) instance (Storable.C a) => Default (SV.Vector a) where- type Element (SV.Vector a) = MultiValue.T a+ type Element (SV.Vector a) = NiceValue.T a deflt = storableVector -storableVector :: (Storable.C a) => T (SV.Vector a) (MultiValue.T a)+storableVector :: (Storable.C a) => T (SV.Vector a) (NiceValue.T a) storableVector = Cons- (\ _ (MultiValue.Cons p) ->+ (\ _ (NiceValue.Cons p) -> liftA2 (,) (Storable.load p)- (MultiValue.Cons <$> Storable.incrementPtr p))+ (NiceValue.Cons <$> Storable.incrementPtr p)) return (\vec -> let (fp,ptr,_l) = SVU.unsafeToPointers vec@@ -174,7 +174,7 @@ instance (Marshal.C a, time ~ NonNegW.Int) => Default (EventListBT.T time a) where- type Element (EventListBT.T time a) = MultiValue.T a+ type Element (EventListBT.T time a) = NiceValue.T a deflt = piecewiseConstant {-@@ -183,7 +183,7 @@ but here we do not accept early exit. -} piecewiseConstant ::- (Marshal.C a) => T (EventListBT.T NonNegW.Int a) (MultiValue.T a)+ (Marshal.C a) => T (EventListBT.T NonNegW.Int a) (NiceValue.T a) piecewiseConstant = expandConstantPieces $ rmap@@ -193,10 +193,10 @@ (fromIntegral $ NonNegW.toNumber t :: Word, (Marshal.pack a, ()))) . EventListBT.toPairList) $ map- (\(MultiValue.Cons s) -> do+ (\(NiceValue.Cons s) -> do t <- LLVM.extractvalue s TypeNum.d0 a <- LLVM.extractvalue s TypeNum.d1- Const.Cons t . MultiValue.Cons <$> Memory.decompose a) $+ Const.Cons t . NiceValue.Cons <$> Memory.decompose a) $ storableVector expandConstantPieces ::@@ -222,11 +222,11 @@ (Marshal.C a, Marshal.Struct a ~ aStruct, LLVM.IsSized aStruct, TypeNum.Natural n, (n:*:LLVM.SizeOf aStruct) ~ arrSize, TypeNum.Natural arrSize) =>- Proxy n -> T (PCS.T Int a) (MultiValue.T (MultiValue.Array n a))+ Proxy n -> T (PCS.T Int a) (NiceValue.T (NiceValue.Array n a)) controllerSet pn = controllerSetFromSV pn $ map- (\(MultiValue.Cons s) -> do+ (\(NiceValue.Cons s) -> do len <- LLVM.extractvalue s TypeNum.d0 i <- LLVM.extractvalue s TypeNum.d1 a <- Memory.decompose =<< LLVM.extractvalue s TypeNum.d2@@ -239,10 +239,10 @@ (n:*:LLVM.SizeOf aStruct) ~ arrSize, TypeNum.Natural arrSize) => Proxy n -> T (SV.Vector (EE.Stored (Marshal.Struct (Word,Word,a))))- (LLVM.Value Word, (LLVM.Value Word, MultiValue.T a)) ->- T (PCS.T Int a) (MultiValue.T (MultiValue.Array n a))+ (LLVM.Value Word, (LLVM.Value Word, NiceValue.T a)) ->+ T (PCS.T Int a) (NiceValue.T (NiceValue.Array n a)) controllerSetFromSV pn (Cons next start create delete) = Cons- (MultiValue.uncurry $ \(MultiValue.Cons (arrPtr, _)) param state0 -> do+ (NiceValue.uncurry $ \(NiceValue.Cons (arrPtr, _)) param state0 -> do (length2, s2) <- C.whileLoopShared state0 (\(len0, s0) ->@@ -253,7 +253,7 @@ length3 <- A.dec length2 arr <- Memory.load =<< LLVM.bitcast arrPtr return (arr, (length3, s2)))- (MultiValue.uncurry $ \(MultiValue.Cons (_, initialTime)) param -> do+ (NiceValue.uncurry $ \(NiceValue.Cons (_, initialTime)) param -> do state <- start param return (initialTime, state))
src/Synthesizer/LLVM/Plug/Output.hs view
@@ -10,9 +10,9 @@ import qualified Synthesizer.Zip as Zip -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Core as LLVM@@ -33,9 +33,9 @@ (Marshal.C parameters, Memory.C state) => Cons (forall r.- MultiValue.T parameters -> a -> state -> LLVM.CodeGenFunction r state)+ NiceValue.T parameters -> a -> state -> LLVM.CodeGenFunction r state) -- compute next value- (forall r. MultiValue.T parameters -> LLVM.CodeGenFunction r state)+ (forall r. NiceValue.T parameters -> LLVM.CodeGenFunction r state) -- initial state (Int -> IO (ioContext, parameters)) {- initialization from IO monad@@ -65,21 +65,21 @@ split :: T a c -> T b d -> T (a,b) (Zip.T c d) split (Cons nextA startA createA deleteA) (Cons nextB startB createB deleteB) = Cons- (MultiValue.uncurry $ \parameterA parameterB (a,b) (sa,sb) ->+ (NiceValue.uncurry $ \parameterA parameterB (a,b) (sa,sb) -> liftA2 (,) (nextA parameterA a sa) (nextB parameterB b sb))- (MultiValue.uncurry $ \parameterA parameterB ->+ (NiceValue.uncurry $ \parameterA parameterB -> liftA2 (,) (startA parameterA) (startB parameterB)) (\len -> liftA2 zipPair (createA len) (createB len)) (\len (ca,cb) -> liftA2 Zip.Cons (deleteA len ca) (deleteB len cb)) instance (Storable.C a) => Default (SV.Vector a) where- type Element (SV.Vector a) = MultiValue.T a+ type Element (SV.Vector a) = NiceValue.T a deflt = storableVector -storableVector :: (Storable.C a) => T (MultiValue.T a) (SV.Vector a)+storableVector :: (Storable.C a) => T (NiceValue.T a) (SV.Vector a) storableVector = Cons- (\ _param -> MultiValue.liftM . Storable.storeNext)+ (\ _param -> NiceValue.liftM . Storable.storeNext) return (\len -> do vec <- SVB.create len (const $ return ())
src/Synthesizer/LLVM/Private.hs view
@@ -1,7 +1,7 @@ module Synthesizer.LLVM.Private where import qualified LLVM.Extra.MaybeContinuation as MaybeCont-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Core as LLVM @@ -10,8 +10,8 @@ import Control.Applicative (liftA2) -unbool :: MultiValue.T Bool -> LLVM.Value Bool-unbool (MultiValue.Cons b) = b+unbool :: NiceValue.T Bool -> LLVM.Value Bool+unbool (NiceValue.Cons b) = b noLocalPtr :: f -> (LLVM.Value (LLVM.Ptr (LLVM.Struct ())) -> f) noLocalPtr = const
src/Synthesizer/LLVM/Private/Render.hs view
@@ -22,9 +22,9 @@ import qualified LLVM.DSL.Execution as Exec import LLVM.DSL.Expression (Exp(Exp)) -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value.Marshal as Marshal-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified LLVM.Extra.MaybeContinuation as MaybeCont import qualified LLVM.Extra.Maybe as Maybe@@ -108,7 +108,7 @@ -} compileHandler :: (Marshal.C param, Marshal.Struct param ~ paramStruct,- Storable.C a, MultiValue.T a ~ value) =>+ Storable.C a, NiceValue.T a ~ value) => (Exp param -> T value) -> LLVM.CodeGenModule (LLVM.Function@@ -167,42 +167,42 @@ C.ifThenElse doDelete delete fill) -class RunArg a where+class Argument a where type DSLArg a- buildArg :: Arg.T a (DSLArg a)+ argument :: Arg.T a (DSLArg a) -instance RunArg () where+instance Argument () where type DSLArg () = ()- buildArg = Arg.unit+ argument = Arg.unit -instance (RunArg a, RunArg b) => RunArg (a,b) where+instance (Argument a, Argument b) => Argument (a,b) where type DSLArg (a,b) = (DSLArg a, DSLArg b)- buildArg = Arg.pair buildArg buildArg+ argument = Arg.pair argument argument -instance (RunArg a, RunArg b, RunArg c) => RunArg (a,b,c) where+instance (Argument a, Argument b, Argument c) => Argument (a,b,c) where type DSLArg (a,b,c) = (DSLArg a, DSLArg b, DSLArg c)- buildArg = Arg.triple buildArg buildArg buildArg+ argument = Arg.triple argument argument argument -instance RunArg Float where+instance Argument Float where type DSLArg Float = Exp Float- buildArg = Arg.primitive+ argument = Arg.primitive -instance RunArg Int where+instance Argument Int where type DSLArg Int = Exp Int- buildArg = Arg.primitive+ argument = Arg.primitive -instance RunArg Word where+instance Argument Word where type DSLArg Word = Exp Word- buildArg = Arg.primitive+ argument = Arg.primitive -instance RunArg Word32 where+instance Argument Word32 where type DSLArg Word32 = Exp Word32- buildArg = Arg.primitive+ argument = Arg.primitive -instance (RunArg a) => RunArg (Stereo.T a) where+instance (Argument a) => Argument (Stereo.T a) where type DSLArg (Stereo.T a) = Stereo.T (DSLArg a)- buildArg =- case buildArg of+ argument =+ case argument of Arg.Cons pass create -> Arg.Cons (fmap pass . Stereo.unExpression)@@ -213,13 +213,13 @@ instance (TypeNum.Natural n, Marshal.C a, LLVM.IsSized (Marshal.Struct a), TypeNum.Natural (n TypeNum.:*: LLVM.SizeOf (Marshal.Struct a))) =>- RunArg (MultiValue.Array n a) where- type DSLArg (MultiValue.Array n a) = Exp (MultiValue.Array n a)- buildArg = Arg.primitive+ Argument (NiceValue.Array n a) where+ type DSLArg (NiceValue.Array n a) = Exp (NiceValue.Array n a)+ argument = Arg.primitive -instance (Storable.C a) => RunArg (SV.Vector a) where- type DSLArg (SV.Vector a) = T (MultiValue.T a)- buildArg =+instance (Storable.C a) => Argument (SV.Vector a) where+ type DSLArg (SV.Vector a) = T (NiceValue.T a)+ argument = Arg.Cons Source.storableVector (\av -> do@@ -231,17 +231,17 @@ buffer :: SV.Vector a -> Buffer a buffer = Buffer -instance (Storable.C a) => RunArg (Buffer a) where+instance (Storable.C a) => Argument (Buffer a) where type DSLArg (Buffer a) = Exp (Source.StorableVector a)- buildArg =+ argument = Arg.Cons id (\(Buffer av) -> do let (fp,ptr,l) = SVU.unsafeToPointers av return (Source.consStorableVector ptr l, touchForeignPtr fp)) -instance (Storable.C a) => RunArg (SVL.Vector a) where- type DSLArg (SVL.Vector a) = T (MultiValue.T a)- buildArg =+instance (Storable.C a) => Argument (SVL.Vector a) where+ type DSLArg (SVL.Vector a) = T (NiceValue.T a)+ argument = Arg.newDispose ChunkIt.new ChunkIt.dispose Source.storableVectorLazy class TimeInteger int where@@ -255,13 +255,13 @@ instance (time ~ NonNeg.T int, TimeInteger int, Marshal.C a) =>- RunArg (EventList.T time a) where- type DSLArg (EventList.T time a) = T (Const.T (MultiValue.T a))- buildArg =+ Argument (EventList.T time a) where+ type DSLArg (EventList.T time a) = T (Const.T (NiceValue.T a))+ argument = Arg.newDispose (EventIt.new . subdivideLong) EventIt.dispose Source.eventList -instance (a ~ SVL.ChunkSize) => RunArg (NonNegChunky.T a) where+instance (a ~ SVL.ChunkSize) => Argument (NonNegChunky.T a) where type DSLArg (NonNegChunky.T a) = T (Const.T ())- buildArg =+ argument = Arg.newDispose SizeIt.new SizeIt.dispose Source.lazySize
src/Synthesizer/LLVM/Server/CausalPacked/Instrument.hs view
@@ -80,7 +80,7 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp, (<=*), (>*)) -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Tuple as Tuple import qualified LLVM.Core as LLVM @@ -122,15 +122,15 @@ frequencyFromBendModulationPacked :: Exp Real ->- F.T inp (MultiValue.T (BM.T Real)) ->+ F.T inp (NiceValue.T (BM.T Real)) -> F.T inp VectorValue frequencyFromBendModulationPacked speed fm =- MIDIL.frequencyFromBendModulationPacked speed $& (BM.unMultiValue <$> fm)+ MIDIL.frequencyFromBendModulationPacked speed $& (BM.unNiceValue <$> fm) stereoFrequenciesFromDetuneBendModulation :: Exp Real ->- (F.T inp (MultiValue.T Real),- F.T inp (MultiValue.T (BM.T Real))) ->+ (F.T inp (NiceValue.T Real),+ F.T inp (NiceValue.T (BM.T Real))) -> F.T inp (Stereo.T VectorValue) stereoFrequenciesFromDetuneBendModulation speed (detune, freq) = Causal.envelopeStereo $&@@ -176,7 +176,7 @@ remainder) reorderEnvelopeControl ::- (Arrow arrow, CutG.Read remainder) =>+ (Arrow arrow, CutG.Consume remainder) => arrow (WithEnvelopeControl remainder) (Zip.T EnvelopeControl remainder)@@ -273,10 +273,10 @@ (Render.run $ wrapped $ \(Number vel) (SampleRate _sr) -> Exp.causalPacked (amplitudeFromVelocity vel)- <<^ Exp.unMultiValueParameterPacked)+ <<^ Exp.unNiceValueParameterPacked) (Render.run $ wrapped $ \(Number level) (SampleRate _sr) ->- let expo = Exp.causalPacked level <<^ Exp.unMultiValueParameterPacked+ let expo = Exp.causalPacked level <<^ Exp.unNiceValueParameterPacked in case threshold of Just y -> takeThreshold (Expr.cons y) . expo Nothing -> expo)@@ -309,7 +309,7 @@ zipEnvelope (env sr vel)) (Render.run $ constant frequency 10 $ \speed _sr ->- (arr Stereo.multiValue+ (arr Stereo.niceValue . Causal.envelopeStereo .@@ -319,12 +319,12 @@ shapeCtrl = 1/pi + (shape-1/pi) * (Exp.causalPacked 1- <<^ Exp.unMultiValueParameterPacked+ <<^ Exp.unNiceValueParameterPacked $& shapeDecay) freqs = stereoFrequenciesFromDetuneBendModulation speed fm expo = (Causal.map Serial.upsample $& phase) *- (Exp.causalPacked 1 <<^ Exp.unMultiValueParameterPacked+ (Exp.causalPacked 1 <<^ Exp.unNiceValueParameterPacked $& phaseDecay) osci :: Causal.T@@ -363,7 +363,7 @@ (Render.run $ constant frequency 10 $ \speed -> constant frequency 100 $ \lowerFreq _sr ->- (arr Stereo.multiValue+ (arr Stereo.niceValue . Causal.envelopeStereo .@@ -375,7 +375,7 @@ expo = takeThreshold lowerFreq $& (Causal.map Serial.upsample $& cutoff) *- (Exp.causalPacked 1 <<^ Exp.unMultiValueParameterPacked+ (Exp.causalPacked 1 <<^ Exp.unNiceValueParameterPacked $& cutoffDecay) in Causal.stereoFromMonoControlled (UniFilter.lowpass ^<< CtrlPS.process)@@ -416,7 +416,7 @@ wrapped $ \(Number vel) -> constant frequency 5 $ \speed -> constant time 1 $ \halfLife _sr ->- (arr Stereo.multiValue+ (arr Stereo.niceValue . Causal.envelopeStereo .@@ -491,7 +491,7 @@ ctrl &|& stereo -type RealValue = MultiValue.T Real+type RealValue = NiceValue.T Real bellNoiseStereoFM :: IO (SampleRate Real -> Real -> Real ->@@ -553,7 +553,7 @@ CausalPS.amplifyStereo n $& freqs)- in Stereo.multiValue <$>+ in Stereo.niceValue <$> (Causal.envelopeStereo $& (noiseAmp * env1) &|&@@ -599,7 +599,7 @@ - takeThreshold 1e-4 .- Exp.causalPacked amp <<^ Exp.unMultiValueParameterPacked)+ Exp.causalPacked amp <<^ Exp.unNiceValueParameterPacked) (Render.run $ wrapped $ \(Number amp) (SampleRate _sr) -> Causal.fromSignal (SigPS.constant amp))@@ -607,12 +607,12 @@ wrapped $ \(Number level) (SampleRate _sr) -> takeThreshold 0.01 .- Exp.causalPacked level <<^ Exp.unMultiValueParameterPacked)+ Exp.causalPacked level <<^ Exp.unNiceValueParameterPacked) windCore ::- F.T a (MultiValue.T Real) ->- F.T a (MultiValue.T (BM.T Real)) ->+ F.T a (NiceValue.T Real) ->+ F.T a (NiceValue.T (BM.T Real)) -> SampleRate (Exp Real) -> F.T a (Stereo.T VectorValue) windCore reson fm =@@ -642,7 +642,7 @@ zipEnvelope (env sr vel)) (Render.run $ \sr -> F.withArgs $ \(env,(reson,fm)) ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $& env &|& windCore reson fm sr) stringControlledEnvelope @@ -672,7 +672,7 @@ let phaserMix = Causal.map Serial.upsample $& phaserMix0 noise = windCore reson fm sr - in Stereo.multiValue <$>+ in Stereo.niceValue <$> Causal.envelopeStereo $& env &|& ((Causal.envelopeStereo $& (1 - phaserMix) &|& noise)@@ -680,7 +680,7 @@ (Causal.envelopeStereo $& phaserMix &|& (Stereo.arrowFromMonoControlled CtrlPS.process $&- (Allpass.cascadeParameterUnMultiValue <$> phaserFreq)+ (Allpass.unNiceValueCascadeParameter <$> phaserFreq) &|& noise))))) stringControlledEnvelope @@ -723,7 +723,7 @@ zipEnvelope (env sr vel)) (Render.run $ constant frequency 5 $ \speed _sr ->- (arr Stereo.multiValue+ (arr Stereo.niceValue . Causal.envelopeStereo .@@ -835,7 +835,7 @@ (Causal.envelope . first (one + CausalPS.amplify d)) - in Stereo.multiValue <$>+ in Stereo.niceValue <$> Causal.envelopeStereo $& env &|& (phaserOsci osci $& (depth &|& shape) &|& (det &|& modu))))@@ -863,14 +863,14 @@ (Zip.arrowSecond $ arr $ transposeModulation sr (freq * Sample.period pos)))) (Render.run $ \sr (amp, smp) ->- Stereo.multiValue+ Stereo.niceValue ^<< Causal.stereoFromMono (resamplingProc sr (amp, smp)) <<^- Stereo.unMultiValue)+ Stereo.unNiceValue) (Render.run $ constant frequency 3 $ \speed _sr ->- fmap Stereo.multiValue $+ fmap Stereo.niceValue $ F.withArgs $ stereoFrequenciesFromDetuneBendModulation speed) @@ -924,7 +924,7 @@ resamplingProc :: SampleRate (Exp Real) ->- (Exp Real, Sig.T (MultiValue.T Real)) ->+ (Exp Real, Sig.T (NiceValue.T Real)) -> Causal.T VectorValue VectorValue resamplingProc _sr (amp, smp) = CausalPS.amplify amp@@ -985,7 +985,7 @@ makeIntegrate (Render.run $ constant frequency 3 $ \speed _sr ->- fmap Stereo.multiValue $+ fmap Stereo.niceValue $ F.withArgs $ stereoFrequenciesFromDetuneBendModulation speed) makeHelix ::@@ -995,7 +995,7 @@ Render.run $ wrapped $ \(Number amp) (Number per) (SampleRate _sr) smp ->- arr Stereo.multiValue+ arr Stereo.niceValue . CausalPS.amplifyStereo amp .@@ -1008,7 +1008,7 @@ . second (CausalPS.osciCore $< 0)) .- arr (\(shape, freq) -> (,) shape <$> Stereo.unMultiValue freq)+ arr (\(shape, freq) -> (,) shape <$> Stereo.unNiceValue freq) makeZigZag :: IO (SampleRate Real -> (Real, Real, Real) ->
src/Synthesizer/LLVM/Server/CausalPacked/InstrumentPlug.hs view
@@ -45,7 +45,7 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import Control.Category ((.)) import Control.Applicative (liftA2, (<$>))@@ -56,13 +56,13 @@ stereoFrequenciesFromDetuneBendModulation :: Exp Real ->- (FP.T p inp (MultiValue.T Real),- FP.T p inp (MultiValue.T (BM.T Real))) ->+ (FP.T p inp (NiceValue.T Real),+ FP.T p inp (NiceValue.T (BM.T Real))) -> FP.T p inp (Stereo.T VectorValue) stereoFrequenciesFromDetuneBendModulation speed (detune, freq) = Causal.envelopeStereo $& (MIDIL.frequencyFromBendModulationPacked speed $&- (BM.unMultiValue <$> freq))+ (BM.unNiceValue <$> freq)) &|& (Causal.map (fmap Serial.upsample) $& liftA2 Stereo.cons (one + detune) (one - detune))@@ -104,7 +104,7 @@ $& zero &|& index*freq) &|& freq- in fmap Stereo.multiValue $+ in fmap Stereo.niceValue $ Causal.envelopeStereo $& FP.plug env &|& Stereo.liftApplicative osci freqs) (pingControlledEnvelope (Just 0.01))@@ -134,7 +134,7 @@ FP.plug $ liftA2 (uncurry transposeModulation) FP.askParameter fm) speed = Causal.map Serial.upsample $& FP.plug speed0- in fmap Stereo.multiValue $+ in fmap Stereo.niceValue $ Causal.envelopeStereo $& FP.plug env &|& Stereo.liftApplicative (helixOsci speed) freqs) stringControlledEnvelope
src/Synthesizer/LLVM/Server/CausalPacked/Speech.hs view
@@ -51,8 +51,8 @@ import qualified Synthesizer.PiecewiseConstant.Signal as PC -import qualified Synthesizer.Generic.Control as CtrlG-import qualified Synthesizer.Generic.Signal as SigG+import qualified Synthesizer.State.Control as CtrlS+import qualified Synthesizer.State.Signal as SigS import qualified Synthesizer.Plain.Filter.Recursive.Universal as UniFilter import Synthesizer.Plain.Filter.Recursive (Pole(Pole))@@ -61,7 +61,7 @@ import qualified Data.StorableVector as SV import qualified Data.Map as Map ; import Data.Map (Map) -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified System.Path as Path import System.Path ((</>), (<.>))@@ -70,6 +70,7 @@ import Control.Category ((.)) import Control.Applicative (pure, liftA, liftA3, (<$>), (<*>)) +import qualified Data.List as List import Data.Traversable (Traversable, traverse, forM) import NumericPrelude.Numeric@@ -120,7 +121,7 @@ Gate.shorten) (CausalRender.run $ wrapped $ \(Frequency low, Frequency high) (SampleRate _sr) ->- Stereo.multiValue+ Stereo.niceValue ^<< Causal.stereoFromMono (let lowpass q f =@@ -131,7 +132,7 @@ Sig.constant (UniFilter.parameter $ Pole q f) in lowpass 100 low + lowpass 20 high) <<^- Stereo.unMultiValue)+ Stereo.unNiceValue) formants :: VoiceMsg.Pitch -> Maybe (Real, Real) formants p =@@ -159,11 +160,11 @@ Nothing -> arr $ const SV.empty Just mask -> filt (Render.buffer mask) . Gate.shorten) (CausalRender.run $ \mask ->- Stereo.multiValue+ Stereo.niceValue ^<< Causal.stereoFromMono (FiltNR.convolvePacked mask) <<^- Stereo.unMultiValue)+ Stereo.unNiceValue) type@@ -202,9 +203,9 @@ filtRasp maskBuf $ case sr of SampleRate r ->- SVL.cycle $ SVL.take (round $ r/20) $- CtrlG.exponential SigG.defaultLazySize- (r/40) 1)+ SVL.fromChunks $ List.repeat $+ SigS.toStrictStorableSignal (round $ r/20) $+ CtrlS.exponential (r/40) 1) . zipEnvelope (case env of@@ -217,30 +218,30 @@ . zipEnvelope (contEnv sr vel)) <*> (CausalRender.run $ \mask ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo . second (Causal.stereoFromMono (FiltNR.convolvePacked mask)- <<^ Stereo.unMultiValue))+ <<^ Stereo.unNiceValue)) <*> (CausalRender.run $ \mask env ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo . ((Causal.envelope $< SigPS.pack env) *** (Causal.stereoFromMono (FiltNR.convolvePacked mask)- <<^ Stereo.unMultiValue)))+ <<^ Stereo.unNiceValue))) <*> (CausalRender.run $ constant noiseReference 1e7 $ \noiseRef _sr mask ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $> traverse (\seed -> FiltNR.convolvePacked mask $* SigPS.noise seed noiseRef) (Stereo.cons 42 23)) <*> (CausalRender.run $ \smp ->- (\x -> Stereo.consMultiValue x x)+ (\x -> Stereo.consNiceValue x x) ^<< (Causal.envelope $> SigPS.pack smp)) <*> stringControlledEnvelope@@ -435,9 +436,9 @@ plugUniFilterParameter :: Input a (Control Real) -> Input a (Control Frequency) ->- FP.T (SampleRate Real) a (UniFilter.Parameter (MultiValue.T Real))+ FP.T (SampleRate Real) a (UniFilter.Parameter (NiceValue.T Real)) plugUniFilterParameter reson freq =- fmap UniFilterL.unMultiValueParameter $+ fmap UniFilterL.unNiceValueParameter $ FP.plug $ liftA3 (\resonChunk freqChunk sr ->@@ -455,9 +456,9 @@ (Input inp (Control Real), (Input inp (Control Real), Input inp (Control Frequency))) -> Input inp StereoChunk ->- FP.T (SampleRate Real) inp (MultiValue.T (Stereo.T Vector))+ FP.T (SampleRate Real) inp (NiceValue.T (Stereo.T Vector)) singleFormant (amp, (reson, freq)) x =- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $& (Causal.map Serial.upsample $& FP.plug amp) &|&@@ -465,7 +466,7 @@ (UniFilter.bandpass ^<< CtrlPS.process) $& plugUniFilterParameter reson freq &|&- (Stereo.unMultiValue <$> FP.plug x))+ (Stereo.unNiceValue <$> FP.plug x)) filterFormant :: IO (SampleRate Real ->
src/Synthesizer/LLVM/Server/CausalPacked/SpeechExplore.hs view
@@ -161,7 +161,7 @@ ^<< Ctrl.process $<- (fmap UniFilterL.unMultiValueParameter $ Sig.constant $+ (fmap UniFilterL.unNiceValueParameter $ Sig.constant $ Expr.cons $ UniFilter.parameter $ Pole q $ f / sampleRate)) formants_sch) $* Sig.noise 174373 0.02)@@ -299,7 +299,7 @@ envelope sizeInt = let size = fromIntegral sizeInt rampSize = size / 8- in Piece.run SigG.defaultLazySize $+ in Piece.runChunks $ 0 |# (rampSize, Piece.cosine) #|- 1 -|# (size-2*rampSize, Piece.step) #|- 1 -|# (rampSize, Piece.cosine) #| (0::Float)@@ -320,7 +320,7 @@ shrink = 2*halfShrink spec = spectrum $ SVL.take (shrink*responseSize) sampled shrunkenSpec =- SigG.fromState SigG.defaultLazySize $+ SigS.toStorableSignal SVL.defaultChunkSize $ SigS.init $ SigS.cons 0 $ SigS.map SigG.sum $ SigG.sliceVertical shrink $ SVL.drop halfShrink spec env = envelope responseSize
src/Synthesizer/LLVM/Server/Common.hs view
@@ -39,7 +39,7 @@ import qualified Synthesizer.MIDI.EventList as Ev import qualified Synthesizer.PiecewiseConstant.Signal as PC import qualified Synthesizer.CausalIO.Process as PIO-import qualified Synthesizer.Generic.Signal as SigG+import qualified Synthesizer.ChunkySize as ChunkySize import qualified Sound.MIDI.Controller as Ctrl import qualified Sound.MIDI.Message.Channel.Voice as VoiceMsg@@ -48,8 +48,8 @@ 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 qualified LLVM.Extra.Nice.Value.Marshal as Marshal+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Memory as Memory import qualified Data.StorableVector.Lazy as SVL@@ -98,43 +98,43 @@ SampleRate f <*> SampleRate sr = SampleRate $ f sr -instance (Render.RunArg a) => Render.RunArg (SampleRate a) where+instance (Render.Argument a) => Render.Argument (SampleRate a) where type DSLArg (SampleRate a) = SampleRate (Render.DSLArg a)- buildArg =- case Render.buildArg of+ argument =+ case Render.argument of Arg.Cons pass create -> Arg.Cons (SampleRate . pass) (\(SampleRate sr) -> create sr) -instance (MultiValue.C a) => MultiValue.C (SampleRate a) where- type Repr (SampleRate a) = MultiValue.Repr a- cons = multiValueSampleRate . fmap MultiValue.cons- undef = multiValueSampleRate $ pure MultiValue.undef- zero = multiValueSampleRate $ pure MultiValue.zero+instance (NiceValue.C a) => NiceValue.C (SampleRate a) where+ type Repr (SampleRate a) = NiceValue.Repr a+ cons = niceValueSampleRate . fmap NiceValue.cons+ undef = niceValueSampleRate $ pure NiceValue.undef+ zero = niceValueSampleRate $ pure NiceValue.zero phi bb =- fmap multiValueSampleRate .- Trav.traverse (MultiValue.phi bb) . unMultiValueSampleRate+ fmap niceValueSampleRate .+ Trav.traverse (NiceValue.phi bb) . unNiceValueSampleRate addPhi bb a b = Fold.sequence_ $- liftA2 (MultiValue.addPhi bb)- (unMultiValueSampleRate a) (unMultiValueSampleRate b)+ liftA2 (NiceValue.addPhi bb)+ (unNiceValueSampleRate a) (unNiceValueSampleRate b) instance (Marshal.C a) => Marshal.C (SampleRate a) where pack (SampleRate a) = Marshal.pack a unpack = SampleRate . Marshal.unpack -multiValueSampleRate ::- SampleRate (MultiValue.T a) -> MultiValue.T (SampleRate a)-multiValueSampleRate (SampleRate (MultiValue.Cons a)) = MultiValue.Cons a+niceValueSampleRate ::+ SampleRate (NiceValue.T a) -> NiceValue.T (SampleRate a)+niceValueSampleRate (SampleRate (NiceValue.Cons a)) = NiceValue.Cons a -unMultiValueSampleRate ::- MultiValue.T (SampleRate a) -> SampleRate (MultiValue.T a)-unMultiValueSampleRate (MultiValue.Cons a) = SampleRate (MultiValue.Cons a)+unNiceValueSampleRate ::+ NiceValue.T (SampleRate a) -> SampleRate (NiceValue.T a)+unNiceValueSampleRate (NiceValue.Cons a) = SampleRate (NiceValue.Cons a) expSampleRate :: Exp (SampleRate a) -> SampleRate (Exp a)-expSampleRate = SampleRate . Expr.lift1 MultiValue.cast+expSampleRate = SampleRate . Expr.lift1 NiceValue.cast @@ -321,11 +321,11 @@ pioApplyToLazyTime :: (Storable b) =>- PIO.T SigG.LazySize (SV.Vector b) -> Ev.LazyTime -> SVL.Vector b+ PIO.T ChunkySize.LazySize (SV.Vector b) -> Ev.LazyTime -> SVL.Vector b pioApplyToLazyTime proc sig = Unsafe.performIO $ do act <- PIO.runCont proc return $ SVL.fromChunks $ act (const []) $- map (SigG.LazySize . NonNegW.toNumber) $+ map (ChunkySize.LazySize . NonNegW.toNumber) $ concatMap PC.chopLongTime $ NonNegChunky.toChunks sig
src/Synthesizer/LLVM/Server/Packed/Instrument.hs view
@@ -166,7 +166,7 @@ import Synthesizer.LLVM.Causal.Functional (($&), (&|&)) import qualified LLVM.DSL.Expression as Expr-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import LLVM.DSL.Expression (Exp) import qualified LLVM.Extra.Arithmetic as A@@ -202,72 +202,72 @@ frequencyControl ::- (MultiValue.Field a, MultiValue.RationalConstant a) =>+ (NiceValue.Field a, NiceValue.RationalConstant a) => SampleRate (Exp a) ->- Sig.T (Const.T (MultiValue.T a)) ->- Sig.T (Const.T (MultiValue.T a))+ Sig.T (Const.T (NiceValue.T a)) ->+ Sig.T (Const.T (NiceValue.T a)) frequencyControl sr xs = Const.causalMap (frequency sr) $* xs data FrequencyControl a instance- (a ~ Exp b, MultiValue.Field b, MultiValue.RationalConstant b) =>+ (a ~ Exp b, NiceValue.Field b, NiceValue.RationalConstant b) => Input (FrequencyControl b) a where data InputArg (FrequencyControl b) a =- FrequencyControl (Sig.T (Const.T (MultiValue.T b)))+ FrequencyControl (Sig.T (Const.T (NiceValue.T b))) type InputSource (FrequencyControl b) a =- Sig.T (Const.T (MultiValue.T b))+ Sig.T (Const.T (NiceValue.T b)) evalInput sampleRate = FrequencyControl . frequencyControl sampleRate modulation ::- (MultiValue.Field a, MultiValue.RationalConstant a) =>+ (NiceValue.Field a, NiceValue.RationalConstant a) => SampleRate (Exp a) ->- (Sig.T (Const.T (MultiValue.T (BM.T a))), Exp a) ->- Sig.T (Const.T (BM.T (MultiValue.T a)))+ (Sig.T (Const.T (NiceValue.T (BM.T a))), Exp a) ->+ Sig.T (Const.T (BM.T (NiceValue.T a))) modulation sr (fm,freq) =- transposeModulation sr freq (fmap BM.unMultiValue <$> fm)+ transposeModulation sr freq (fmap BM.unNiceValue <$> fm) data Modulation a instance- (a ~ Exp b, MultiValue.Field b, MultiValue.RationalConstant b) =>+ (a ~ Exp b, NiceValue.Field b, NiceValue.RationalConstant b) => Input (Modulation b) a where data InputArg (Modulation b) a =- Modulation (Sig.T (Const.T (BM.T (MultiValue.T b))))+ Modulation (Sig.T (Const.T (BM.T (NiceValue.T b)))) type InputSource (Modulation b) a =- (Sig.T (Const.T (MultiValue.T (BM.T b))), Exp b)+ (Sig.T (Const.T (NiceValue.T (BM.T b))), Exp b) evalInput sampleRate (fm,freq) = Modulation $ modulation sampleRate (fm,freq) detuneModulation ::- (MultiValue.Field a, MultiValue.RationalConstant a) =>+ (NiceValue.Field a, NiceValue.RationalConstant a) => SampleRate (Exp a) ->- (b, Sig.T (Const.T (MultiValue.T (BM.T a))), Exp a) ->- (b, Sig.T (Const.T (BM.T (MultiValue.T a))))+ (b, Sig.T (Const.T (NiceValue.T (BM.T a))), Exp a) ->+ (b, Sig.T (Const.T (BM.T (NiceValue.T a)))) detuneModulation sr (det,fm,freq) =- (det, transposeModulation sr freq (fmap BM.unMultiValue <$> fm))+ (det, transposeModulation sr freq (fmap BM.unNiceValue <$> fm)) data DetuneModulation a instance- (a ~ Exp b, MultiValue.Field b, MultiValue.RationalConstant b) =>+ (a ~ Exp b, NiceValue.Field b, NiceValue.RationalConstant b) => Input (DetuneModulation b) a where data InputArg (DetuneModulation b) a = DetuneModulation- (Sig.T (Const.T (MultiValue.T b)),- Sig.T (Const.T (BM.T (MultiValue.T b))))+ (Sig.T (Const.T (NiceValue.T b)),+ Sig.T (Const.T (BM.T (NiceValue.T b)))) type InputSource (DetuneModulation b) a =- (Sig.T (Const.T (MultiValue.T b)),- Sig.T (Const.T (MultiValue.T (BM.T b))),+ (Sig.T (Const.T (NiceValue.T b)),+ Sig.T (Const.T (NiceValue.T (BM.T b))), Exp b) evalInput sampleRate (det,fm,freq) = DetuneModulation $ detuneModulation sampleRate (det,fm,freq) -type RealValue = MultiValue.T Real+type RealValue = NiceValue.T Real frequencyFromBendModulation :: Exp Real ->@@ -327,7 +327,7 @@ (\osc env dec rel vcsize sr vel freq dur -> pioApply (osc sr freq) (env dec rel vcsize sr vel dur)) (CausalRender.run $ wrapped $ \(Frequency freq) (SampleRate _sr) ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $> liftA2 Stereo.cons (SigPS.osci WaveL.saw zero (0.999*freq))@@ -353,7 +353,7 @@ wrapped $ \(Number phase, Time decay) (Control shape) (DetuneModulation fm) -> constant frequency 10 $ \speed _sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $> ((Causal.stereoFromMonoControlled (CausalPS.shapeModOsci WaveL.rationalApproxSine1)@@ -397,7 +397,7 @@ CausalPS.shapeModOsci WaveL.rationalApproxSine1) <<^ (\((p,s),f) -> (s,(p,f)))- in Stereo.multiValue <$>+ in Stereo.niceValue <$> Causal.envelopeStereo $> ((Causal.stereoFromMonoControlled chanOsci $< liftA2 (,)@@ -444,7 +444,7 @@ (CausalPS.osci WaveL.approxSine4 $< zero) <<< CausalPS.amplifyStereo d))- in Stereo.multiValue <$>+ in Stereo.niceValue <$> sumNested [osci fst3 0.6 1, osci snd3 (0.02 * 50^?vel) 4,@@ -524,7 +524,7 @@ Causal.map Serial.subsample <<< CausalPS.amplify d))- in liftA2 Stereo.consMultiValue+ in liftA2 Stereo.consNiceValue (sumNested [osci fst3 0.6 (1*0.999), osci snd3 (0.02 * 50^?vel) (4*0.999),@@ -574,7 +574,7 @@ constant time 1 $ \halfLife _sr -> (let chanOsci d = CausalPS.osci WaveL.approxSine2 $> SigPS.constant (freq*d)- in Stereo.multiValue <$>+ in Stereo.niceValue <$> Causal.envelopeStereo $> (liftA2 Stereo.cons (chanOsci 0.995) (chanOsci 1.005) $* (SigPS.exponential2 halfLife (vel+1) *@@ -624,7 +624,7 @@ (CausalRender.run $ wrapped $ \(Frequency freq) (SampleRate _sr) -> let osci d = SigPS.osci WaveL.saw zero (d * freq)- in Stereo.multiValue <$>+ in Stereo.niceValue <$> Causal.envelopeStereo $> (liftA2 Stereo.cons (osci 1.005 + osci 0.998)@@ -641,7 +641,7 @@ wrapped $ \(Modulation fm) -> constant frequency 5 $ \speed _sr -> let osci d = (CausalPS.osci WaveL.saw $< zero) <<< CausalPS.amplify d- in Stereo.multiValue <$>+ in Stereo.niceValue <$> (Causal.envelopeStereo $> (liftA2 Stereo.cons (osci 1.005 + osci 0.998)@@ -666,7 +666,7 @@ (let chanOsci d = CausalPS.osci WaveL.approxSine2 <<< second (CausalPS.amplify d)- in Stereo.multiValue <$>+ in Stereo.niceValue <$> Causal.envelopeStereo $> (liftA2 Stereo.cons (chanOsci 0.995) (chanOsci 1.005) <<<@@ -734,7 +734,7 @@ wrapped $ \(Control index, Control depth) (Number vel) (DetuneModulation fm) -> constant frequency 5 $ \speed sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $> (tineControlledFnProc index depth vel sr $* stereoFrequenciesFromDetuneBendModulation speed fm))@@ -809,7 +809,7 @@ wrapped $ \(Control index, Control depth) (Control fade) (Number vel) (DetuneModulation fm) -> constant frequency 5 $ \speed sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $> (fenderProc fade index depth vel sr $* stereoFrequenciesFromDetuneBendModulation speed fm))@@ -853,7 +853,7 @@ \(Control depth1) (Control depth2) (Control depth3) (Control depth4) (Number vel) (DetuneModulation fm) -> constant frequency 5 $ \speed sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> (Causal.envelopeStereo $> (Causal.stereoFromMono (CausalPS.osci WaveL.approxSine2) <<<@@ -903,7 +903,7 @@ partial amp n t = A.mul amp =<< WaveL.partial WaveL.approxSine2 n t- in Stereo.multiValue <$>+ in Stereo.niceValue <$> Causal.envelopeStereo $> (Causal.stereoFromMono (CausalPS.shapeModOsci@@ -995,7 +995,7 @@ \(Control reson, Control index, Control depth) (Number vel) (DetuneModulation fm) -> constant frequency 5 $ \speed sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $> (resonantFMSynthProc reson index depth vel sr $* stereoFrequenciesFromDetuneBendModulation speed fm))@@ -1032,7 +1032,7 @@ in CausalRender.run $ wrapped $ \(Control det) (Modulation fm) -> constant frequency 5 $ \speed _sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> (Causal.envelopeStereo $> (phaserOsci osci $< piecewiseConstantVector det@@ -1112,7 +1112,7 @@ in CausalRender.run $ wrapped $ \(Control det) (Control dist) (Modulation fm) -> constant frequency 5 $ \speed _sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> (Causal.envelopeStereo $> (phaserOsci osci $< piecewiseConstantVector dist@@ -1156,7 +1156,7 @@ wrapped $ \(Control det) (Control depth) (Control dist) (Modulation fm) -> constant frequency 5 $ \speed _sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> (Causal.envelopeStereo <<< (id &&& (phaserOsci osci@@ -1204,7 +1204,7 @@ pioApply (osc sr reson (fm, freq)) (env att sr vel dur)) (CausalRender.run $ wrapped $ \(Control reson) (Modulation fm) sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $> windCore reson fm sr) softStringReleaseEnvelope @@ -1238,7 +1238,7 @@ wrapped $ \(Control phaserMix) (FrequencyControl phaserFreq) (Control reson) (Modulation fm) sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> (Causal.envelopeStereo $> ((Causal.stereoFromMonoControlled (fadeProcess (arr snd) CtrlPS.process@@ -1274,7 +1274,7 @@ wrapped $ \(Frequency bright) (Time brightDec) (DetuneModulation fm) -> constant frequency 10 $ \speed -> constant frequency 100 $ \cutoff _sr ->- (Stereo.multiValue <$>+ (Stereo.niceValue <$> Causal.envelopeStereo $> (Causal.stereoFromMono (UniFilter.lowpass@@ -1395,7 +1395,7 @@ wrapped $ \(Control det) (Control dist) (Modulation fm) (Signal emph) -> constant frequency 5 $ \speed _sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $> (phaserOsci osci <<<@@ -1441,7 +1441,7 @@ (osc sr amp release (NonNegChunky.fromChunks (repeat 1000))))) (CausalRender.run $ wrapped $ \(Number amp) (Signal smp) (Signal dur) (SampleRate _sr) ->- Stereo.multiValue <$>+ Stereo.niceValue <$> CausalPS.amplifyStereo amp <<< Causal.stereoFromMono@@ -1491,7 +1491,7 @@ pioApply (osc sr amp release) releaseFM) (CausalRender.run $ wrapped $ \(Number amp) (Signal smp) (SampleRate _sr) ->- Stereo.multiValue <$>+ Stereo.niceValue <$> CausalPS.amplifyStereo amp <<< Causal.stereoFromMono
src/Synthesizer/LLVM/Server/Scalar/Instrument.hs view
@@ -23,7 +23,7 @@ import Synthesizer.Causal.Class (($<), ($>), ($*)) import qualified LLVM.DSL.Expression as Expr-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import LLVM.DSL.Expression (Exp) import qualified Synthesizer.MIDI.EventList as Ev@@ -40,7 +40,7 @@ pingSig ::- SampleRate (Exp Real) -> Exp Real -> Exp Real -> Sig.T (MultiValue.T Real)+ SampleRate (Exp Real) -> Exp Real -> Exp Real -> Sig.T (NiceValue.T Real) pingSig = wrapped $ \(Number vel) (Frequency freq) -> constant time 0.2 $ \halfLife _sr ->@@ -104,7 +104,7 @@ (\osc env dec rel chunkSize sr vel freq dur -> pioApply (osc sr freq) (env dec rel chunkSize sr vel dur)) (CausalRender.run $ frequency $+ \freq _sr ->- Stereo.multiValue <$>+ Stereo.niceValue <$> Causal.envelopeStereo $> liftA2 Stereo.cons (Sig.osci WaveL.saw zero (0.999*freq))@@ -140,7 +140,7 @@ constant time 1 $ \halfLife _sr -> let chanOsci d = Causal.osci WaveL.approxSine2 $> Sig.constant (freq*d)- in Stereo.multiValue <$>+ in Stereo.niceValue <$> Causal.envelopeStereo $> (liftA2 Stereo.cons (chanOsci 0.995) (chanOsci 1.005) $* (Causal.envelope@@ -183,7 +183,7 @@ (\osc env sr vel freq dur -> pioApply (osc sr freq) (env 1 sr vel dur)) (CausalRender.run $ frequency $+ \freq _sr -> let osci d = Sig.osci WaveL.saw zero (d * freq)- in Stereo.multiValue <$>+ in Stereo.niceValue <$> Causal.envelopeStereo $> liftA2 Stereo.cons (osci 1.005 + osci 0.998)
src/Synthesizer/LLVM/Storable/Process.hs view
@@ -21,8 +21,8 @@ import qualified Data.EventList.Relative.TimeMixed as EventListTM import qualified Data.EventList.Absolute.TimeBody as AbsEventList -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Arithmetic as A import qualified Type.Data.Num.Decimal as TypeNum@@ -48,7 +48,7 @@ must fit into the length of the event list. -} makeArranger ::- (Arr.Arrow arrow, Storable.C a, MultiValue.Additive a) =>+ (Arr.Arrow arrow, Storable.C a, NiceValue.Additive a) => IO (arrow (EventListTT.T NonNeg.Int (SV.Vector a)) (SV.Vector a))
src/Synthesizer/LLVM/Storable/Signal.hs view
@@ -28,8 +28,8 @@ import qualified Number.NonNegative as NonNeg import qualified LLVM.DSL.Execution as Exec-import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Core as LLVM import qualified Type.Data.Num.Decimal as TypeNum@@ -96,7 +96,7 @@ makeReverser ::- (Storable.C a, MultiValue.T a ~ value) =>+ (Storable.C a, NiceValue.T a ~ value) => (value -> LLVM.CodeGenFunction () value) -> IO (Word -> Ptr a -> Ptr a -> IO ()) makeReverser rev =@@ -201,7 +201,7 @@ it also simplifies type inference. -} fillBuffer ::- (Storable.C a, MultiValue.T a ~ value) =>+ (Storable.C a, NiceValue.T a ~ value) => value -> IO (Word -> Ptr a -> IO ()) fillBuffer x = Exec.compile "constant" $@@ -213,7 +213,7 @@ Exec.Importer (Word -> Ptr a -> Ptr a -> IO ()) makeMixer ::- (Storable.C a, MultiValue.T a ~ value) =>+ (Storable.C a, NiceValue.T a ~ value) => (value -> value -> LLVM.CodeGenFunction () value) -> IO (Word -> Ptr a -> Ptr a -> IO ()) makeMixer add =@@ -243,13 +243,13 @@ Same algorithm as in Synthesizer.Storable.Cut.arrangeEquidist -} makeArranger ::- (Storable.C a, MultiValue.Additive a) =>+ (Storable.C a, NiceValue.Additive a) => IO (SVL.ChunkSize -> EventList.T NonNeg.Int (SVL.Vector a) -> SVL.Vector a) makeArranger = do- mixer <- makeMixer MultiValue.add- fill <- fillBuffer MultiValue.zero+ mixer <- makeMixer NiceValue.add+ fill <- fillBuffer NiceValue.zero return $ \ (SVL.ChunkSize sz) -> let sznn = NonNeg.fromNumberMsg "arrange" sz go acc evs =
synthesizer-llvm.cabal view
@@ -1,6 +1,6 @@ Cabal-Version: 2.2 Name: synthesizer-llvm-Version: 1.1.0.1+Version: 1.2 License: GPL-3.0-only License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de>@@ -43,7 +43,7 @@ Tested-With: GHC==8.6.5, GHC==8.8.4, GHC==8.10.7 Tested-With: GHC==9.2.2, GHC==9.4.7, GHC==9.6.3 Build-Type: Simple-Extra-Source-Files:+Extra-Doc-Files: Changes.md Flag buildExamples@@ -59,7 +59,7 @@ default: False Source-Repository this- Tag: 1.1.0.1+ Tag: 1.2 Type: darcs Location: http://code.haskell.org/synthesizer/llvm/ @@ -70,13 +70,13 @@ Library Build-Depends:- llvm-dsl >=0.1.1 && <0.2,- llvm-extra >=0.11 && <0.13,- llvm-tf >=9.0 && <17.1,+ llvm-dsl >=0.2 && <0.3,+ llvm-extra >=0.12.1 && <0.14,+ llvm-tf >=9.0 && <21.1, tfp >=1.0 && <1.1, vault >=0.3 && <0.4,- synthesizer-core >=0.8 && <0.9,- synthesizer-midi >=0.6 && <0.7,+ synthesizer-core >=0.9 && <0.10,+ synthesizer-midi >=0.7 && <0.8, midi >=0.2.1 && <0.3, storable-record >=0.0.3 && <0.1, sox >=0.2 && <0.3,@@ -86,11 +86,11 @@ non-negative >=0.1 && <0.2, non-empty >=0.2.1 && <0.4, event-list >=0.1 && <0.2,- pathtype >=0.8 && <0.9,- random >=1.0 && <1.3,- containers >=0.1 && <0.7,+ pathtype >=0.8 && <0.10,+ random >=1.0 && <1.4,+ containers >=0.1 && <0.9, transformers >=0.2 && <0.7,- semigroups >=0.1 && <1.0,+ semigroups >=0.1 && <1, utility-ht >=0.0.15 && <0.1 Build-Depends:@@ -198,7 +198,7 @@ event-list, shell-utility >=0.0 && <0.2, pathtype,- optparse-applicative >=0.11 && <0.19,+ optparse-applicative >=0.11 && <0.20, containers, utility-ht, base@@ -257,6 +257,7 @@ Main-Is: Synthesizer/LLVM/Test.hs Other-Modules: Synthesizer.LLVM.LAC2011+ Synthesizer.LLVM.Experiment Synthesizer.LLVM.ExampleUtility Executable synthi-llvm-lndw@@ -283,7 +284,7 @@ utility-ht, pathtype, - synthesizer-alsa >=0.5 && <0.6,+ synthesizer-alsa >=0.6 && <0.7, alsa-pcm >=0.6 && <0.7, base Else@@ -327,7 +328,7 @@ transformers, utility-ht, - synthesizer-alsa >=0.5 && <0.6,+ synthesizer-alsa >=0.6 && <0.7, midi-alsa >=0.2.1 && <0.3, alsa-seq >=0.6 && <0.7, alsa-pcm >=0.6 && <0.7,
testsuite/Test/Synthesizer/LLVM/Filter.hs view
@@ -59,7 +59,7 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified LLVM.Extra.Arithmetic as A import qualified LLVM.Extra.Memory as Memory @@ -110,14 +110,14 @@ (TypeNum.Natural n) => Proxy n -> Exp Float ->- Sig.T (Allpass.CascadeParameter n (MultiValue.T Float))+ Sig.T (Allpass.CascadeParameter n (NiceValue.T Float)) allpassControl order = lfoSine (Allpass.flangerParameter order) allpassPhaserCausal, allpassPhaserPipeline :: Exp Float ->- Sig.T (MultiValue.T Float) ->- Sig.T (MultiValue.T Float)+ Sig.T (NiceValue.T Float) ->+ Sig.T (NiceValue.T Float) allpassPhaserCausal reduct xs = Allpass.phaser $< allpassControl TypeNum.d16 reduct@@ -232,13 +232,13 @@ -diracImpulse :: Sig.T (MultiValue.T Float)+diracImpulse :: Sig.T (NiceValue.T Float) diracImpulse = Causal.delay1 one $* Sig.constant zero firstOrderConstant :: Exp Float ->- Sig.T (MultiValue.T Float) ->- Sig.T (MultiValue.T Float)+ Sig.T (NiceValue.T Float) ->+ Sig.T (NiceValue.T Float) firstOrderConstant cutOff xs = FirstOrder.lowpassCausal $< Sig.constant (FirstOrderCore.parameter cutOff)@@ -256,8 +256,8 @@ firstOrderCausal :: Exp Float ->- Sig.T (MultiValue.T Float) ->- Sig.T (MultiValue.T Float)+ Sig.T (NiceValue.T Float) ->+ Sig.T (NiceValue.T Float) firstOrderCausal reduct xs = FirstOrder.lowpassCausal $< lfoSine FirstOrder.parameter reduct@@ -307,8 +307,8 @@ secondOrderCausal :: Exp Float ->- Sig.T (MultiValue.T Float) ->- Sig.T (MultiValue.T Float)+ Sig.T (NiceValue.T Float) ->+ Sig.T (NiceValue.T Float) secondOrderCausal reduct xs = SecondOrder.causal $< lfoSine (SecondOrder.bandpassParameter 10) reduct@@ -335,8 +335,8 @@ secondOrderCausalPacked2 :: Exp Float ->- Sig.T (MultiValue.T Float) ->- Sig.T (MultiValue.T Float)+ Sig.T (NiceValue.T Float) ->+ Sig.T (NiceValue.T Float) secondOrderCausalPacked2 reduct xs = SecondOrderP.causal $< lfoSine (SecondOrderP.bandpassParameter 10) reduct@@ -362,8 +362,8 @@ universalCausal :: Exp Float ->- Sig.T (MultiValue.T Float) ->- Sig.T (UniFilter.Result (MultiValue.T Float))+ Sig.T (NiceValue.T Float) ->+ Sig.T (UniFilter.Result (NiceValue.T Float)) universalCausal reduct xs = UniFilter.causal $< lfoSine (UniFilter.parameter 10) reduct@@ -404,8 +404,8 @@ (TypeNum.Natural n) => Proxy n -> Exp Float ->- Sig.T (MultiValue.T Float) ->- Sig.T (MultiValue.T Float)+ Sig.T (NiceValue.T Float) ->+ Sig.T (NiceValue.T Float) moogCausal order reduct xs = Moog.causal $< lfoSine (Moog.parameter order 10) reduct@@ -440,8 +440,8 @@ complexCausal :: Exp Float ->- Sig.T (MultiValue.T Float) ->- Sig.T (Stereo.T (MultiValue.T Float))+ Sig.T (NiceValue.T Float) ->+ Sig.T (Stereo.T (NiceValue.T Float)) complexCausal reduct xs = ComplexFilter.causal $< lfoSine (ComplexFilter.parameter 10) reduct@@ -449,8 +449,8 @@ complexCausalPacked :: Exp Float ->- Sig.T (MultiValue.T Float) ->- Sig.T (Stereo.T (MultiValue.T Float))+ Sig.T (NiceValue.T Float) ->+ Sig.T (Stereo.T (NiceValue.T Float)) complexCausalPacked reduct xs = ComplexFilterP.causal $< lfoSine (ComplexFilterP.parameter 10) reduct
testsuite/Test/Synthesizer/LLVM/Helix.hs view
@@ -24,7 +24,7 @@ import qualified LLVM.DSL.Expression as Expr import LLVM.DSL.Expression (Exp) -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import Foreign.Storable (Storable) @@ -70,14 +70,14 @@ staticDynamic = let len :: (Ring.C a) => a len = 1000- noise :: Exp Word32 -> Sig.T (MultiValue.T Float)+ noise :: Exp Word32 -> Sig.T (NiceValue.T Float) noise seed = Sig.noise seed 1 static, dynamic ::- ((Sig.T (MultiValue.T Float), Sig.T (MultiValue.T Float)),+ ((Sig.T (NiceValue.T Float), Sig.T (NiceValue.T Float)), Exp Float, (Exp Word32, Exp (Source.StorableVector Float))) ->- Func.T inp (MultiValue.T Float)+ Func.T inp (NiceValue.T Float) static ((speedSig, phaseSig), period, (_, noiseSig)) = Helix.static Interpolation.linear Interpolation.linear (Expr.roundToIntFast period) period noiseSig
testsuite/Test/Synthesizer/LLVM/RingBufferForward.hs view
@@ -21,7 +21,7 @@ import qualified LLVM.DSL.Expression as Expr -import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value as NiceValue import Foreign.Storable (Storable) @@ -122,7 +122,7 @@ <$> checkEquality2 limitFloat limitFloat (\(skips, k, seed) ->- (,) (MultiValue.cons True) <$>+ (,) (NiceValue.cons True) <$> (RingBuffer.mapIndex k $* (RingBuffer.trackSkip (Expr.cons bufferSize) (noise seed) $* skips)))
testsuite/Test/Synthesizer/LLVM/Utility.hs view
@@ -12,7 +12,7 @@ import qualified Synthesizer.CausalIO.Process as PIO import qualified Synthesizer.Causal.Class as CausalClass-import qualified Synthesizer.Generic.Signal as SigG+import qualified Synthesizer.ChunkySize as ChunkySize import qualified Synthesizer.State.Signal as SigS import qualified Synthesizer.Zip as Zip @@ -24,8 +24,8 @@ import Data.StorableVector.Lazy (ChunkSize) import Foreign.Storable (Storable) -import qualified LLVM.Extra.Multi.Value.Storable as Storable-import qualified LLVM.Extra.Multi.Value as MultiValue+import qualified LLVM.Extra.Nice.Value.Storable as Storable+import qualified LLVM.Extra.Nice.Value as NiceValue import qualified Type.Data.Num.Decimal as TypeNum @@ -62,17 +62,17 @@ render ::- (Render.RunArg p) =>- (Storable.C a, MultiValue.T a ~ al) =>+ (Render.Argument p) =>+ (Storable.C a, NiceValue.T a ~ al) => (SVL.Vector a -> sig) -> (Render.DSLArg p -> Sig.T al) -> IO (ChunkSize -> p -> sig) render limit sig = fmap (\func chunkSize -> limit . func chunkSize) $ Render.run sig render2 ::- (Render.RunArg p) =>- (Storable.C a, MultiValue.T a ~ al) =>- (Storable.C b, MultiValue.T b ~ bl) =>+ (Render.Argument p) =>+ (Storable.C a, NiceValue.T a ~ al) =>+ (Storable.C b, NiceValue.T b ~ bl) => ((SVL.Vector a, SVL.Vector b) -> sig) -> (Render.DSLArg p -> Sig.T (al, bl)) -> IO (ChunkSize -> p -> sig) render2 limit sig = do@@ -81,7 +81,7 @@ limit . mapPair (SVL.fromChunks, SVL.fromChunks) . unzip . map (\(Zip.Cons a b) -> (a,b)) $ Unsafe.performIO (PIO.runCont (proc p)) (const [])- (repeat $ SigG.LazySize chunkSize)+ (repeat $ ChunkySize.LazySize chunkSize) data CheckSimilarityState a =@@ -98,8 +98,8 @@ {-# INLINE checkSimilarityState #-} checkSimilarityState ::- (Render.RunArg p) =>- (RealRing.C a, Storable.C a, MultiValue.T a ~ av) =>+ (Render.Argument p) =>+ (RealRing.C a, Storable.C a, NiceValue.T a ~ av) => a -> (SVL.Vector a -> SVL.Vector a) -> (Render.DSLArg p -> Sig.T av) ->@@ -128,9 +128,9 @@ {-# INLINE checkSimilarity #-} checkSimilarity ::- (Render.RunArg p) =>+ (Render.Argument p) => (RealRing.C b, Storable.C b,- Storable.C a, MultiValue.T a ~ av) =>+ Storable.C a, NiceValue.T a ~ av) => b -> (SVL.Vector a -> SVL.Vector b) -> (Render.DSLArg p -> Sig.T av) ->@@ -144,10 +144,10 @@ (render limit gen1) checkSimilarityPacked ::- (Render.RunArg p) =>+ (Render.Argument p) => Float -> (SVL.Vector Float -> SVL.Vector Float) ->- (Render.DSLArg p -> Sig.T (MultiValue.T Float)) ->+ (Render.DSLArg p -> Sig.T (NiceValue.T Float)) -> (Render.DSLArg p -> Sig.T (SerialCode.Value TypeNum.D4 Float)) -> IO (ChunkSize -> p -> CheckSimilarity Float) checkSimilarityPacked tol limit scalar vector =@@ -168,8 +168,8 @@ property (CheckEqualityGen x y) = QC.property (x==y) checkEquality ::- (Render.RunArg p) =>- (Eq a, Storable.C a, MultiValue.T a ~ av) =>+ (Render.Argument p) =>+ (Eq a, Storable.C a, NiceValue.T a ~ av) => (SVL.Vector a -> SVL.Vector a) -> (Render.DSLArg p -> Sig.T av) -> (Render.DSLArg p -> Sig.T av) ->@@ -182,9 +182,9 @@ (render limit gen1) checkEquality2 ::- (Render.RunArg p) =>- (Eq a, Storable.C a, MultiValue.T a ~ al) =>- (Eq b, Storable.C b, MultiValue.T b ~ bl) =>+ (Render.Argument p) =>+ (Eq a, Storable.C a, NiceValue.T a ~ al) =>+ (Eq b, Storable.C b, NiceValue.T b ~ bl) => (SVL.Vector a -> SVL.Vector a) -> (SVL.Vector b -> SVL.Vector b) -> (Render.DSLArg p -> Sig.T (al,bl)) ->