synthesizer-0.2: Audio signal processing coded in HaskellSource codeContentsIndex
Synthesizer.Physical.Cut
Portabilityrequires multi-parameter type classes
Stabilityprovisional
Maintainersynthesizer@henning-thielemann.de
Contents
Dissection
Glueing
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' yvSource
drop :: (C t, C t', C t t') => t' -> T t t' y y' yv -> T t t' y y' yvSource
propSplit :: (Eq t', Eq y', Eq yv, C t t', C t', C t) => t' -> T t t' y y' yv -> BoolSource
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' yvSource
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' yvSource
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' yvSource
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' yvSource
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 -> BoolSource
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 -> BoolSource
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
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) -> BoolSource
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) -> BoolSource
splitSampleRateEventList :: Eq t' => T time (T t t' y y' yv) -> (T t t', T time (T y y' yv))Source
arrangeSource
:: (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' yvThe 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.

arrangeVolumeSource
:: (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' yvThe 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.4.2