Copyright | (c) Henning Thielemann 2006 |
---|---|

License | GPL |

Maintainer | synthesizer@henning-thielemann.de |

Stability | provisional |

Portability | requires multi-parameter type classes |

Safe Haskell | None |

Language | Haskell2010 |

## Synopsis

- takeUntilPause :: C a => a -> Int -> T a -> T a
- takeUntilInterval :: (a -> Bool) -> Int -> T a -> T a
- chopStorable :: Storable a => T Bool -> T a -> [T a]
- chopChunkySize :: T Bool -> T -> [T]
- selectBool :: (T a, T a) -> T Bool -> T a
- select :: Ix i => Array i (T a) -> T i -> T a
- arrange :: C v => T Int (T v) -> T v
- arrangeList :: C v => T Int (T v) -> T v

# dissection

takeUntilPause :: C a => a -> Int -> T a -> T a Source #

Take signal until it falls short of a certain amplitude for a given time.

takeUntilInterval :: (a -> Bool) -> Int -> T a -> T a Source #

Take values until the predicate p holds for n successive values. The list is truncated at the beginning of the interval of matching values.

chopStorable :: Storable a => T Bool -> T a -> [T a] Source #

Split a storable signal into a sequence of signals.
A new piece is started whenever the Boolean signal contains a `True`

.
The first piece in the result is the part from the beginning until the first `True`

.
That is, if the signal `Bool`

starts with a `True`

,
then the first result piece is empty.

When the control signal is at least as long as the storable signal and if we neglect the chunking structure, then it holds

concat (chopStorable bs xs) == xs