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

Safe HaskellNone
LanguageHaskell98

Synthesizer.LLVM.Causal.ProcessPacked

Synopsis

Documentation

type Serial n a = T (T n a) Source #

pack :: (Read va, n ~ Size va, a ~ Element va, Write vb, n ~ Size vb, b ~ Element vb) => T a b -> T 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 :: (Read va, n ~ Size va, a ~ Element va, Write vb, n ~ Size vb, b ~ Element vb) => T a b -> T 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.

raise :: (Positive n, Additive a) => Exp a -> T (Serial n a) (Serial n a) Source #

amplify :: (Positive n, PseudoRing a) => Exp a -> T (Serial n a) (Serial n a) Source #

amplifyStereo :: (Positive n, PseudoRing a) => Exp a -> T (T (Serial n a)) (T (Serial n a)) Source #

delay1 :: (Positive n, C a, C a, Value n a ~ v) => Exp a -> T v v Source #

differentiate :: (Positive n, C a, Additive a, Value n a ~ v) => Exp a -> T v v Source #

integrate :: (Positive n, C a, Additive a, Value n a ~ v) => Exp a -> T v v Source #

osciCore :: (Positive n, C t, Fraction t) => T (Serial n t, Serial n t) (Serial n t) Source #

osci :: (Positive n, C t, Fraction t) => (forall r. Serial n t -> CodeGenFunction r y) -> T (Serial n t, Serial n t) y Source #

shapeModOsci :: (Positive n, C t, Fraction t) => (forall r. c -> Serial n t -> CodeGenFunction r y) -> T (c, (Serial n t, Serial n t)) y Source #

arrayElement :: (Positive n, C a, C a, Struct a ~ aStruct, IsFirstClass aStruct, Natural i, Natural d, i :<: d) => Proxy i -> T (T (Array d a)) (Serial n a) Source #