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

Safe HaskellNone
LanguageHaskell98

Synthesizer.LLVM.Storable.Signal

Description

Functions on storable vectors that are implemented using LLVM.

Synopsis

Documentation

unpackStrict :: (Positive n, Vector a) => Vector (T n a) -> Vector a Source #

unpack :: (Positive n, Vector a) => Vector (T n a) -> Vector a Source #

unpackStereoStrict :: (Positive n, C a) => Vector (T n a) -> Vector (T a) Source #

unpackStereo :: (Positive n, C a) => Vector (T n a) -> Vector (T a) Source #

makeReversePackedStrict :: (Positive n, Vector a, v ~ T n a) => IO (Vector v -> Vector v) Source #

makeReversePacked :: (Positive n, Vector a, v ~ T n a) => IO (Vector v -> Vector v) Source #

continue :: Storable a => Vector a -> (a -> Vector a) -> Vector a Source #

Append two signals where the second signal gets the last value of the first signal as parameter. If the first signal is empty then there is no parameter for the second signal and thus we simply return an empty signal in that case.

continuePacked :: (Positive n, Vector a) => Vector (T n a) -> (a -> Vector (T n a)) -> Vector (T n a) Source #

continuePackedGeneric :: (Storable v, Storable a) => (Vector v -> Vector a) -> Vector v -> (a -> Vector v) -> Vector v Source #

Use this like

do unpackGeneric <- makeUnpackGenericStrict
   return (continuePackedGeneric unpackGeneric x y)

fillBuffer :: (C a, T a ~ value) => value -> IO (Word -> Ptr a -> IO ()) Source #

fillBuffer is not only more general than filling with zeros, it also simplifies type inference.

makeMixer :: (C a, T a ~ value) => (value -> value -> CodeGenFunction () value) -> IO (Word -> Ptr a -> Ptr a -> IO ()) Source #

makeArranger :: (C a, Additive a) => IO (ChunkSize -> T Int (Vector a) -> Vector a) Source #