synthesizer-llvm-0.7.0.1: Efficient signal processing using runtime compilation

Safe HaskellNone
LanguageHaskell98

Synthesizer.LLVM.CausalParameterized.ProcessPacked

Synopsis

Documentation

pack :: (C process, Read va, n ~ Size va, a ~ Element va, C vb, n ~ Size vb, b ~ Element vb) => process a b -> process va vb Source

Run a scalar process on packed data. If the signal length is not divisible by the chunk size, then the last chunk is dropped.

packSmall :: (C process, Read va, n ~ Size va, a ~ Element va, C vb, n ~ Size vb, b ~ Element vb) => process a b -> process va vb Source

Like pack but duplicates the code for the scalar process. That is, for vectors of size n, the code for the scalar causal process will be written n times. This is efficient only for simple input processes.

unpack :: (C process, Zero va, n ~ Size va, a ~ Element va, Read vb, n ~ Size vb, b ~ Element vb, C va, C ita, ita ~ WriteIt va, C vb, C itb, itb ~ ReadIt vb) => process va vb -> process a b Source

Run a packed process on scalar data. If the signal length is not divisible by the chunk size, then the last chunk is dropped. In order to stay causal, we have to delay the output by n samples.

raise :: (Storable a, IsArithmetic a, MakeValueTuple a, ValueTuple a ~ Value a, IsPrimitive a, FirstClass a, Stored a ~ am, IsSized am, Positive n) => T p a -> T p (Value n a) (Value n a) Source

amplify :: (Storable a, IsArithmetic a, MakeValueTuple a, ValueTuple a ~ Value a, IsPrimitive a, FirstClass a, Stored a ~ am, IsSized am, Positive n) => T p a -> T p (Value n a) (Value n a) Source

amplifyStereo :: (Storable a, IsArithmetic a, MakeValueTuple a, ValueTuple a ~ Value a, IsPrimitive a, FirstClass a, Stored a ~ am, IsSized am, Positive n) => T p a -> T p (T (Value n a)) (T (Value n a)) Source

osciCore :: (C process, FirstClass t, Stored t ~ tm, IsSized tm, Real t, Fraction t, IsFloating t, Positive n) => process (Value n t, Value n t) (Value n t) Source

osciSimple :: (C process, FirstClass t, Stored t ~ tm, IsSized t, IsSized tm, Real t, Fraction t, IsFloating t, Positive n) => (forall r. Value n t -> CodeGenFunction r y) -> process (Value n t, Value n t) y Source

shapeModOsci :: (C process, FirstClass t, Stored t ~ tm, IsSized tm, Real t, Fraction t, IsFloating t, Positive n) => (forall r. c -> Value n t -> CodeGenFunction r y) -> process (c, (Value n t, Value n t)) y Source

delay1 :: (C va, n ~ Size va, al ~ Element va, Storable a, MakeValueTuple a, ValueTuple a ~ al, C al) => T p a -> T p va va Source

differentiate :: (C va, n ~ Size va, al ~ Element va, Additive va, Storable a, MakeValueTuple a, ValueTuple a ~ al, C al) => T p a -> T p va va Source

integrate :: (Storable a, MakeValueTuple a, ValueTuple a ~ Value a, Arithmetic a, FirstClass a, Stored a ~ am, IsSized am, Positive n) => T p a -> T p (Value n a) (Value n a) Source

arrayElement :: (C process, IsFirstClass a, Value a ~ Element v, C v, Natural index, Natural dim, index :<: dim) => Proxy index -> process (Value (Array dim a)) v Source