synthesizer-0.2.0.1: Audio signal processing coded in HaskellSource codeContentsIndex
Synthesizer.Generic.Filter.NonRecursive
Portabilityrequires multi-parameter type classes
Stabilityprovisional
Maintainersynthesizer@henning-thielemann.de
Contents
Envelope application
Smoothing
Filter operators from calculus
Description
Synopsis
negate :: (C a, Transform sig a) => sig a -> sig a
amplify :: (C a, Transform sig a) => a -> sig a -> sig a
amplifyVector :: (C a v, Transform sig v) => a -> sig v -> sig v
envelope :: (C a, Transform sig a) => sig a -> sig a -> sig a
envelopeVector :: (C a v, Read sig a, Transform sig v) => sig a -> sig v -> sig v
fadeInOut :: (C a, Write sig a) => Int -> Int -> Int -> sig a -> sig a
delay :: (C y, Write sig y) => Int -> sig y -> sig y
delayPad :: Write sig y => y -> Int -> sig y -> sig y
delayPos :: (C y, Write sig y) => Int -> sig y -> sig y
delayNeg :: Transform sig y => Int -> sig y -> sig y
delayLazySize :: (C y, Write sig y) => LazySize -> Int -> sig y -> sig y
delayPadLazySize :: Write sig y => LazySize -> y -> Int -> sig y -> sig y
delayPosLazySize :: (C y, Write sig y) => LazySize -> Int -> sig y -> sig y
generic :: (C a v, Transform sig a, Write sig v) => sig a -> sig v -> sig v
binomial :: (C a, C a, C a v, Transform sig v) => a -> a -> sig v -> sig v
ratioFreqToVariance :: C a => a -> a -> a
binomial1 :: (C v, Transform sig v) => sig v -> sig v
sums :: (C v, Transform sig v) => Int -> sig v -> sig v
differentiate :: (C v, Transform sig v) => sig v -> sig v
differentiateCenter :: (C v, Transform sig v) => sig v -> sig v
differentiate2 :: (C v, Transform sig v) => sig v -> sig v
Envelope application
negate :: (C a, Transform sig a) => sig a -> sig aSource
amplify :: (C a, Transform sig a) => a -> sig a -> sig aSource
amplifyVector :: (C a v, Transform sig v) => a -> sig v -> sig vSource
envelopeSource
:: (C a, Transform sig a)
=> sig athe envelope
-> sig athe signal to be enveloped
-> sig a
envelopeVectorSource
:: (C a v, Read sig a, Transform sig v)
=> sig athe envelope
-> sig vthe signal to be enveloped
-> sig v
fadeInOut :: (C a, Write sig a) => Int -> Int -> Int -> sig a -> sig aSource
Smoothing
delay :: (C y, Write sig y) => Int -> sig y -> sig ySource
delayPad :: Write sig y => y -> Int -> sig y -> sig ySource
delayPos :: (C y, Write sig y) => Int -> sig y -> sig ySource
delayNeg :: Transform sig y => Int -> sig y -> sig ySource
delayLazySize :: (C y, Write sig y) => LazySize -> Int -> sig y -> sig ySource
delayPadLazySize :: Write sig y => LazySize -> y -> Int -> sig y -> sig ySource
The pad value y must be defined, otherwise the chunk size of the padding can be observed.
delayPosLazySize :: (C y, Write sig y) => LazySize -> Int -> sig y -> sig ySource
generic :: (C a v, Transform sig a, Write sig v) => sig a -> sig v -> sig vSource
Unmodulated non-recursive filter
binomial :: (C a, C a, C a v, Transform sig v) => a -> a -> sig v -> sig vSource
ratioFreqToVariance :: C a => a -> a -> aSource
Compute the variance of the Gaussian such that its Fourier transform has value ratio at frequency freq.
binomial1 :: (C v, Transform sig v) => sig v -> sig vSource
sums :: (C v, Transform sig v) => Int -> sig v -> sig vSource
Moving (uniformly weighted) average in the most trivial form. This is very slow and needs about n * length x operations.
Filter operators from calculus
differentiate :: (C v, Transform sig v) => sig v -> sig vSource
Forward difference quotient. Shortens the signal by one. Inverts Synthesizer.Generic.Filter.Recursive.Integration.run in the sense that differentiate (zero : integrate x) == x. The signal is shifted by a half time unit.
differentiateCenter :: (C v, Transform sig v) => sig v -> sig vSource

Central difference quotient. Shortens the signal by two elements, and shifts the signal by one element. (Which can be fixed by prepending an appropriate value.) For linear functions this will yield essentially the same result as differentiate. You obtain the result of differentiateCenter if you smooth the one of differentiate by averaging pairs of adjacent values.

ToDo: Vector variant

differentiate2 :: (C v, Transform sig v) => sig v -> sig vSource
Second derivative. It is differentiate2 == differentiate . differentiate but differentiate2 should be faster.
Produced by Haddock version 2.4.2