Safe Haskell | None |
---|---|

Language | Haskell2010 |

## Synopsis

- data Signal v = Signal {}
- take :: Int -> Signal v -> [v]
- zipSignalWith :: (a -> b -> c) -> Signal a -> Signal b -> Signal c
- origin :: C a => Signal a -> a
- ones :: C a => Signal a
- delay :: C v => Int -> Signal v -> Signal v
- delayPad :: v -> Int -> Signal v -> Signal v
- delayOpt :: (Eq v, C v) => Int -> Signal v -> Signal v
- delayOnce :: C v => Signal v -> Signal v
- delayPadOnce :: v -> Signal v -> Signal v
- delayOptOnce :: (Eq v, C v) => Signal v -> Signal v
- delayGen :: (Signal v -> Signal v) -> Int -> Signal v -> Signal v
- reverseTwoWay :: Signal v -> Signal v
- flipPair :: (a, b) -> (b, a)
- testDelayGen :: Signal Double
- nonRecursiveFilter :: C a v => [a] -> Signal v -> Signal v
- nonRecursiveFilterMod :: C a v => Signal [a] -> Signal v -> Signal v
- interpolatePaddedZero :: (Ord a, C a) => b -> T a b -> a -> Signal a -> Signal b -> Signal b
- interpolatePaddedCyclic :: (Ord a, C a) => T a b -> a -> Signal a -> Signal b -> Signal b
- interpolatePaddedExtrapolation :: (Ord a, C a) => T a b -> a -> Signal a -> Signal b -> Signal b
- interpolateCore :: (Ord a, C a) => T a b -> a -> Signal a -> Signal b -> Signal b
- interpolateHalfWay :: (Ord a, C a) => T a b -> a -> [a] -> Signal b -> [b]
- data T t a v

# Documentation

A TwoWay.Signal stores values of the past and the future

delay :: C v => Int -> Signal v -> Signal v Source #

shift signal in time, keep all values but if required pad with zeros

delayOpt :: (Eq v, C v) => Int -> Signal v -> Signal v Source #

shift signal in time, zero values at either ends will be flushed

delayPadOnce :: v -> Signal v -> Signal v Source #

delayGen :: (Signal v -> Signal v) -> Int -> Signal v -> Signal v Source #

General routine that supports delaying and prefetching using a general one-sample delaying routine.

reverseTwoWay :: Signal v -> Signal v Source #

nonRecursiveFilterMod :: C a v => Signal [a] -> Signal v -> Signal v Source #

Modulated non-recursive filter. The number of values before time 0 (past) or the filter mask lengths must be at most finite.

interpolatePaddedZero :: (Ord a, C a) => b -> T a b -> a -> Signal a -> Signal b -> Signal b Source #

Interpolation allowing negative frequencies, but requires storage of all past values.

interpolatePaddedExtrapolation :: (Ord a, C a) => T a b -> a -> Signal a -> Signal b -> Signal b Source #

Description of a basic filter that can be used in larger networks.

Mask [a] | A static filter described by its mask |

ModMask (Signal [a]) | A modulated filter described by a list of masks |

FracDelay (T t v) t | Delay the signal by a fractional amount of samples. This is achieved by interpolation. |

ModFracDelay (T t v) (Signal t) | Delay with varying delay times. |

Delay Int | Delay the signal by given amount of samples. |

Past [v] | Replace the past by the given one. This must be present in each recursive filter cycle to let the magic work! |