Copyright | (c) Henning Thielemann 2008-2009 |
---|---|
License | GPL |
Maintainer | synthesizer@henning-thielemann.de |
Stability | provisional |
Portability | requires multi-parameter type classes |
Safe Haskell | None |
Language | Haskell2010 |
- splitAt :: (C t, C u, C v, Storable yv) => T u t -> T s u t (R s v y yv -> (R s v y yv, R s v y yv))
- take :: (C t, C u, C v) => T u t -> T s u t (R s v y yv -> R s v y yv)
- drop :: (C t, C u, C v) => T u t -> T s u t (R s v y yv -> R s v y yv)
- takeUntilPause :: (C t, C u, C y, C y yv, C v) => T v y -> T u t -> T s u t (R s v y yv -> R s v y yv)
- unzip :: (C u, C v) => T s u t (R s v y (yv0, yv1) -> (R s v y yv0, R s v y yv1))
- unzip3 :: (C u, C v) => T s u t (R s v y (yv0, yv1, yv2) -> (R s v y yv0, R s v y yv1, R s v y yv2))
- leftFromStereo :: C u => T s u t (R s u y (T yv) -> R s u y yv)
- rightFromStereo :: C u => T s u t (R s u y (T yv) -> R s u y yv)
- concat :: (Ord y, C y, C v, C u, C y yv) => T s u t ([R s v y yv] -> R s v y yv)
- concatVolume :: (C y, C v, C u, C y yv) => T v y -> T s u t ([R s v y yv] -> R s v y yv)
- append :: (Ord y, C y, C v, C u, C y yv) => T s u t (R s v y yv -> R s v y yv -> R s v y yv)
- appendVolume :: (C y, C v, C u, C y yv) => T v y -> T s u t (R s v y yv -> R s v y yv -> R s v y yv)
- zip :: (Ord y, C y, C v, C y yv0, C y yv1) => T s u t (R s v y yv0 -> R s v y yv1 -> R s v y (yv0, yv1))
- zipVolume :: (C y, C v, C y yv0, C y yv1) => T v y -> T s u t (R s v y yv0 -> R s v y yv1 -> R s v y (yv0, yv1))
- zip3 :: (Ord y, C y, C v, C y yv0, C y yv1, C y yv2) => T s u t (R s v y yv0 -> R s v y yv1 -> R s v y yv2 -> R s v y (yv0, yv1, yv2))
- zip3Volume :: (C y, C v, C y yv0, C y yv1, C y yv2) => T v y -> T s u t (R s v y yv0 -> R s v y yv1 -> R s v y yv2 -> R s v y (yv0, yv1, yv2))
- mergeStereo :: (Ord y, C y, C v, C y yv) => T s u t (R s v y yv -> R s v y yv -> R s v y (T yv))
- mergeStereoVolume :: (C y, C v, C y yv) => T v y -> T s u t (R s v y yv -> R s v y yv -> R s v y (T yv))
- arrange :: (C t, C u, RealFrac t, Ord y, C y, C v, C y yv, Storable yv) => T u t -> T u t -> T s u t (T (T t) (R s v y yv) -> R s v y yv)
- arrangeVolume :: (C t, C u, RealFrac t, C y, C v, C y yv, Storable yv) => T u t -> T v y -> T u t -> T s u t (T (T t) (R s v y yv) -> R s v y yv)
- arrangeStorableVolume :: (C t, C u, RealFrac t, C y, C v, C y yv, Storable yv) => T u t -> T v y -> T u t -> T s u t (T (T t) (T (Phantom s) (Dimensional v y) (T yv)) -> T (Phantom s) (Dimensional v y) (T yv))
dissection
splitAt :: (C t, C u, C v, Storable yv) => T u t -> T s u t (R s v y yv -> (R s v y yv, R s v y yv)) Source #
takeUntilPause :: (C t, C u, C y, C y yv, C v) => T v y -> T u t -> T s u t (R s v y yv -> R s v y yv) Source #
unzip3 :: (C u, C v) => T s u t (R s v y (yv0, yv1, yv2) -> (R s v y yv0, R s v y yv1, R s v y yv2)) Source #
glueing
concat :: (Ord y, C y, C v, C u, C y yv) => T s u t ([R s v y yv] -> R s v y yv) Source #
Similar to foldr1 append
but more efficient and accurate,
because it reduces the number of amplifications.
Does not work for infinite lists,
because no maximum amplitude can be computed.
concatVolume :: (C y, C v, C u, C y yv) => T v y -> T s u t ([R s v y yv] -> R s v y yv) Source #
Give the output volume explicitly. Does also work for infinite lists.
append :: (Ord y, C y, C v, C u, C y yv) => T s u t (R s v y yv -> R s v y yv -> R s v y yv) Source #
appendVolume :: (C y, C v, C u, C y yv) => T v y -> T s u t (R s v y yv -> R s v y yv -> R s v y yv) Source #
zip :: (Ord y, C y, C v, C y yv0, C y yv1) => T s u t (R s v y yv0 -> R s v y yv1 -> R s v y (yv0, yv1)) Source #
zipVolume :: (C y, C v, C y yv0, C y yv1) => T v y -> T s u t (R s v y yv0 -> R s v y yv1 -> R s v y (yv0, yv1)) Source #
zip3 :: (Ord y, C y, C v, C y yv0, C y yv1, C y yv2) => T s u t (R s v y yv0 -> R s v y yv1 -> R s v y yv2 -> R s v y (yv0, yv1, yv2)) Source #
zip3Volume :: (C y, C v, C y yv0, C y yv1, C y yv2) => T v y -> T s u t (R s v y yv0 -> R s v y yv1 -> R s v y yv2 -> R s v y (yv0, yv1, yv2)) Source #
mergeStereo :: (Ord y, C y, C v, C y yv) => T s u t (R s v y yv -> R s v y yv -> R s v y (T yv)) Source #
mergeStereoVolume :: (C y, C v, C y yv) => T v y -> T s u t (R s v y yv -> R s v y yv -> R s v y (T yv)) Source #
:: (C t, C u, RealFrac t, Ord y, C y, C v, C y yv, Storable yv) | |
=> T u t | Maximum chunk size |
-> T u t | Unit of the time values in the time ordered list. |
-> T s u t (T (T t) (R s v y yv) -> R s v y yv) | The mixed signal. |
Uses maximum input volume as output volume. Does not work for infinite schedules, because no maximum amplitude can be computed.
:: (C t, C u, RealFrac t, C y, C v, C y yv, Storable yv) | |
=> T u t | Maximum chunk size |
-> T v y | Output volume |
-> T u t | Unit of the time values in the time ordered list. |
-> T s u t (T (T t) (R s v y yv) -> R s v y yv) | The mixed signal. |
Given a list of signals with time stamps, mix them into one signal as they occur in time. Ideal for composing music.