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

Safe HaskellNone

Synthesizer.LLVM.CausalParameterized.Helix

Contents

Description

Synopsis

time and phase control based on the helix model

static :: (Storable vh, MakeValueTuple vh, ValueTuple vh ~ v, C v, C nodesStep, C nodesLeap, RationalConstant a, Fraction a, Storable a, MakeValueTuple a, ValueTuple a ~ Value a, FirstClass a, Stored a ~ am, IsSized am, NumberOfElements a ~ D1) => (forall r. T r nodesLeap (Value a) v) -> (forall r. T r nodesStep (Value a) v) -> T p Int -> T p a -> T p (Vector vh) -> T p (Value a, Value a) vSource

Inputs are (shape, phase).

The shape parameter is limited at the beginning and at the end such that only available data is used for interpolation. Actually, we allow almost one step less than possible, since the right boundary of the interval of admissible shape values is open.

staticPacked :: (Storable vh, MakeValueTuple vh, ValueTuple vh ~ ve, Element v ~ ve, C ve, C nodesStep, C nodesLeap, Size (nodesLeap (nodesStep v)) ~ n, C (nodesLeap (nodesStep v)), Element (nodesLeap (nodesStep v)) ~ nodesLeap (nodesStep (Element v)), PositiveT n, RationalConstant a, Fraction a, Real a, Storable a, MakeValueTuple a, ValueTuple a ~ Value a, FirstClass a, Stored a ~ am, IsSized am, IsPrimitive a, IsPrimitive am) => (forall r. T r nodesLeap (Value n a) v) -> (forall r. T r nodesStep (Value n a) v) -> T p Int -> T p a -> T p (Vector vh) -> T p (Value n a, Value n a) vSource

dynamic :: (C nodesStep, C nodesLeap, Additive v, C v, RationalConstant a, Fraction a, CmpRet a, CmpResult a ~ Bool, Storable a, MakeValueTuple a, ValueTuple a ~ Value a, FirstClass a, Stored a ~ am, IsSized am, NumberOfElements a ~ D1) => (forall r. T r nodesLeap (Value a) v) -> (forall r. T r nodesStep (Value a) v) -> T p Int -> T p a -> T p v -> T p (Value a, Value a) vSource

If the time control exceeds the end of the input signal, then the last waveform is locked. This is analogous to static.

dynamicLimited :: (C nodesStep, C nodesLeap, Additive v, C v, RationalConstant a, Fraction a, CmpRet a, CmpResult a ~ Bool, Storable a, MakeValueTuple a, ValueTuple a ~ Value a, FirstClass a, Stored a ~ am, IsSized am, NumberOfElements a ~ D1) => (forall r. T r nodesLeap (Value a) v) -> (forall r. T r nodesStep (Value a) v) -> T p Int -> T p a -> T p v -> T p (Value a, Value a) vSource

In contrast to dynamic this one ends when the end of the manipulated signal is reached.

useful control curves

zigZagLong :: (Storable a, MakeValueTuple a, ValueTuple a ~ Value a, FirstClass a, Stored a ~ am, IsSized am, Fraction a, IsFloating a, RationalConstant a, CmpRet a, C a) => T p a -> T p a -> T p (Value a) (Value a)Source

zigZagLongPacked :: (Storable a, MakeValueTuple a, ValueTuple a ~ Value a, Fraction a, RationalConstant a, Real a, FirstClass a, Stored a ~ am, IsSized a, IsSized am, IsPrimitive am, C a, (n :*: SizeOf am) ~ amsize, PositiveT amsize, PositiveT n) => T p a -> T p a -> T p (Value n a) (Value n a)Source