|
Synthesizer.Physical.Cut | Portability | requires multi-parameter type classes | Stability | provisional | Maintainer | synthesizer@henning-thielemann.de |
|
|
|
|
|
Description |
Cut signals
|
|
Synopsis |
|
splitAt :: (C t, C t', C t t') => t' -> T t t' y y' yv -> (T t t' y y' yv, T t t' y y' yv) | | take :: (C t, C t', C t t') => t' -> T t t' y y' yv -> T t t' y y' yv | | drop :: (C t, C t', C t t') => t' -> T t t' y y' yv -> T t t' y y' yv | | propSplit :: (Eq t', Eq y', Eq yv, C t t', C t', C t) => t' -> T t t' y y' yv -> Bool | | takeUntilPause :: (C t, C t', C t t', C y', C y yv, C y y') => y' -> t' -> T t t' y y' yv -> T t t' y y' yv | | unzip :: T t t' y y' (yv0, yv1) -> (T t t' y y' yv0, T t t' y y' yv1) | | unzip3 :: T t t' y y' (yv0, yv1, yv2) -> (T t t' y y' yv0, T t t' y y' yv1, T t t' y y' yv2) | | concat :: (C y', C y', Eq t', C y y', C y yv) => [T t t' y y' yv] -> T t t' y y' yv | | concatVolume :: (C y', Eq t', C y y', C y yv) => y' -> [T t t' y y' yv] -> T t t' y y' yv | | append :: (Eq t', C y', C y', C y y', C y yv) => T t t' y y' yv -> T t t' y y' yv -> T t t' y y' yv | | propConcatAppend :: (Eq t', Eq y', Eq yv, C y yv, C y y', C t', C y') => T t t' y y' yv -> T t t' y y' yv -> Bool | | propAppendSplit :: (Eq t', Eq y', Eq yv, C y yv, C y y', C y', C t t', C t', C t) => t' -> T t t' y y' yv -> Bool | | zip :: (Eq t', C y', C y', C y y', C y yv0, C y yv1) => T t t' y y' yv0 -> T t t' y y' yv1 -> T t t' y y' (yv0, yv1) | | zip3 :: (Eq t', C y', C y', C y y', C y yv0, C y yv1, C y yv2) => T t t' y y' yv0 -> T t t' y y' yv1 -> T t t' y y' yv2 -> T t t' y y' (yv0, yv1, yv2) | | propZip :: (Eq t', Eq y', C y', C y', Eq yv0, Eq yv1, C y yv1, C y yv0, C y y') => T t t' y y' (yv0, yv1) -> Bool | | propZip3 :: (Eq t', Eq y', C y', C y', Eq yv0, Eq yv1, Eq yv2, C y yv2, C y yv1, C y yv0, C y y') => T t t' y y' (yv0, yv1, yv2) -> Bool | | splitSampleRateEventList :: Eq t' => T time (T t t' y y' yv) -> (T t t', T time (T y y' yv)) | | arrange :: (RealFrac t, C t, Eq t', C t, C t', C t t', Ord y', C y', C y y', C y yv) => t' -> T t (T t t' y y' yv) -> T t t' y y' yv | | arrangeVolume :: (RealFrac t, C t, Eq t', C t, C t', C t t', C y', C y y', C y yv) => y' -> t' -> T t (T t t' y y' yv) -> T t t' y y' yv |
|
|
|
Dissection
|
|
splitAt :: (C t, C t', C t t') => t' -> T t t' y y' yv -> (T t t' y y' yv, T t t' y y' yv) | Source |
|
|
take :: (C t, C t', C t t') => t' -> T t t' y y' yv -> T t t' y y' yv | Source |
|
|
drop :: (C t, C t', C t t') => t' -> T t t' y y' yv -> T t t' y y' yv | Source |
|
|
|
|
takeUntilPause :: (C t, C t', C t t', C y', C y yv, C y y') => y' -> t' -> T t t' y y' yv -> T t t' y y' yv | Source |
|
|
unzip :: T t t' y y' (yv0, yv1) -> (T t t' y y' yv0, T t t' y y' yv1) | Source |
|
|
unzip3 :: T t t' y y' (yv0, yv1, yv2) -> (T t t' y y' yv0, T t t' y y' yv1, T t t' y y' yv2) | Source |
|
|
Glueing
|
|
concat :: (C y', C y', Eq t', C y y', C y yv) => [T t t' y y' yv] -> T t t' y 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 in this case a maximum amplitude cannot be computed.
|
|
concatVolume :: (C y', Eq t', C y y', C y yv) => y' -> [T t t' y y' yv] -> T t t' y y' yv | Source |
|
Like concat, but you have to specify the amplitude of the resulting signal.
This way we can process infinite lists, too.
The list must contain at least one element for getting a sample rate.
|
|
append :: (Eq t', C y', C y', C y y', C y yv) => T t t' y y' yv -> T t t' y y' yv -> T t t' y y' yv | Source |
|
|
propConcatAppend :: (Eq t', Eq y', Eq yv, C y yv, C y y', C t', C y') => T t t' y y' yv -> T t t' y y' yv -> Bool | Source |
|
|
propAppendSplit :: (Eq t', Eq y', Eq yv, C y yv, C y y', C y', C t t', C t', C t) => t' -> T t t' y y' yv -> Bool | Source |
|
|
zip :: (Eq t', C y', C y', C y y', C y yv0, C y yv1) => T t t' y y' yv0 -> T t t' y y' yv1 -> T t t' y y' (yv0, yv1) | Source |
|
|
zip3 :: (Eq t', C y', C y', C y y', C y yv0, C y yv1, C y yv2) => T t t' y y' yv0 -> T t t' y y' yv1 -> T t t' y y' yv2 -> T t t' y y' (yv0, yv1, yv2) | Source |
|
|
|
|
propZip3 :: (Eq t', Eq y', C y', C y', Eq yv0, Eq yv1, Eq yv2, C y yv2, C y yv1, C y yv0, C y y') => T t t' y y' (yv0, yv1, yv2) -> Bool | Source |
|
|
splitSampleRateEventList :: Eq t' => T time (T t t' y y' yv) -> (T t t', T time (T y y' yv)) | Source |
|
|
|
:: (RealFrac t, C t, Eq t', C t, C t', C t t', Ord y', C y', C y y', C y yv) | | => t' | Unit of the time values in the time ordered list.
| -> T t (T t t' y y' yv) | A list of pairs: (relative start time, signal part),
The start time is relative
to the start time of the previous event.
| -> T t t' y y' yv | The mixed signal.
| Given a list of signals with time stamps,
mix them into one signal as they occur in time.
Ideally for composing music.
The amplitude of the output is designed for the worst case
(all signals coincide).
This is usually too pessimistic.
Maybe you prefer arrangeVolume.
Infinite schedules are not supported,
because no maximum amplitude can be computed.
If you want infinite schedules,
then arrangeVolume is your friend, again.
|
|
|
|
:: (RealFrac t, C t, Eq t', C t, C t', C t t', C y', C y y', C y yv) | | => y' | Amplitude of output.
| -> t' | Unit of the time values in the time ordered list.
| -> T t (T t t' y y' yv) | A list of pairs: (relative start time, signal part),
The start time is relative
to the start time of the previous event.
| -> T t t' y y' yv | The mixed signal.
| Similar to arrange but allows for infinite schedules.
To this end it needs the amplitude of the resulting signal.
|
|
|
Produced by Haddock version 2.3.0 |