synthesizer-0.2: Audio signal processing coded in HaskellSource codeContentsIndex
Synthesizer.Dimensional.Rate.Filter
Portabilityrequires multi-parameter type classes
Stabilityprovisional
Maintainersynthesizer@henning-thielemann.de
Contents
Non-recursive
Amplification
Smooth
Delay
Recursive
Without resonance
With resonance
Allpass
Reverb
Helper functions
Description
Synopsis
negate :: (C sig, C yv, C u) => T s u t (T s sig yv -> T s sig yv)
envelope :: (C sig, C flat y0, C y0, C u) => T s u t (T s flat y0 -> T s sig y0 -> T s sig y0)
envelopeVector :: (C sig, C flat y0, C y0 yv, C u) => T s u t (T s flat y0 -> T s sig yv -> T s sig yv)
convolveVector :: (C sig, C q yv, C q, C u) => T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)
mean :: (C sig, C yv, C q, C q yv, C u, Storable q, Storable yv) => T (Recip u) q -> T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)
meanStatic :: (C sig, C yv, C q, C q yv, C u) => T (Recip u) q -> T s u q (T s sig yv -> T s sig yv)
delay :: (C sig, C yv, C t, C u) => T u t -> T s u t (T s sig yv -> T s sig yv)
phaseModulation :: (C sig, C yv, C q, C u, Storable q, Storable yv) => T q yv -> T u q -> T u q -> T s u q (R s u q q -> T s sig yv -> T s sig yv)
phaser :: (C sig, C yv, C q, C q yv, C u, Storable q, Storable yv) => T q yv -> T u q -> T s u q (R s u q q -> T s sig yv -> T s sig yv)
phaserStereo :: (C sig, C yv, C q, C q yv, C u, Storable q, Storable yv) => T q yv -> T u q -> T s u q (R s u q q -> T s sig yv -> T s sig (T yv))
frequencyModulation :: (C sig, C flat t, C yv, C t, C u) => T t yv -> T s u t (T s flat t -> T s sig yv -> T s sig yv)
frequencyModulationDecoupled :: (C sig, C flat t, C yv, C t, C u) => T t yv -> T u t sig yv -> T s u t (T s flat t -> T s sig yv)
firstOrderLowpass :: (C sig, C q, C q yv, C u) => T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)
firstOrderHighpass :: (C sig, C q, C q yv, C u) => T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)
butterworthLowpass :: (C sig, C flat q, C q, C q yv, C u) => Int -> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
butterworthHighpass :: (C sig, C flat q, C q, C q yv, C u) => Int -> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
chebyshevALowpass :: (C sig, C flat q, C q, C q yv, C u) => Int -> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
chebyshevAHighpass :: (C sig, C flat q, C q, C q yv, C u) => Int -> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
chebyshevBLowpass :: (C sig, C flat q, C q, C q yv, C u) => Int -> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
chebyshevBHighpass :: (C sig, C flat q, C q, C q yv, C u) => Int -> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
universal :: (C sig, C flat q, C q, C q yv, C u) => T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig (Result yv))
highpassFromUniversal :: C sig => T s sig (Result yv) -> T s sig yv
bandpassFromUniversal :: C sig => T s sig (Result yv) -> T s sig yv
lowpassFromUniversal :: C sig => T s sig (Result yv) -> T s sig yv
bandlimitFromUniversal :: C sig => T s sig (Result yv) -> T s sig yv
moogLowpass :: (C sig, C flat q, C q, C q yv, C u) => Int -> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
allpassCascade :: (C sig, C q, C q yv, C u) => Int -> q -> T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)
allpassFlangerPhase :: C a => a
comb :: (C sig, C t, C y yv, C u, Storable yv) => T u t -> y -> T s u t (T s sig yv -> T s sig yv)
interpolateMultiRelativeZeroPad :: (C q, C yv) => T q yv -> T q -> T yv -> T yv
Non-recursive
Amplification
negate :: (C sig, C yv, C u) => T s u t (T s sig yv -> T s sig yv)Source
envelope :: (C sig, C flat y0, C y0, C u) => T s u t (T s flat y0 -> T s sig y0 -> T s sig y0)Source
envelopeVector :: (C sig, C flat y0, C y0 yv, C u) => T s u t (T s flat y0 -> T s sig yv -> T s sig yv)Source
convolveVector :: (C sig, C q yv, C q, C u) => T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)Source
Smooth
meanSource
:: (C sig, C yv, C q, C q yv, C u, Storable q, Storable yv)
=> T (Recip u) qminimum cut-off freqeuncy
-> T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)
needs a better handling of boundaries, yet
meanStaticSource
:: (C sig, C yv, C q, C q yv, C u)
=> T (Recip u) qcut-off freqeuncy
-> T s u q (T s sig yv -> T s sig yv)
needs a better handling of boundaries, yet
Delay
delay :: (C sig, C yv, C t, C u) => T u t -> T s u t (T s sig yv -> T s sig yv)Source
phaseModulationSource
:: (C sig, C yv, C q, C u, Storable q, Storable yv)
=> T q yv
-> T u qminimal deviation from current time, usually negative
-> T u qmaximal deviation, it must be minDev <= maxDev and the modulation must always be in the range [minDev,maxDev].
-> T s u q (R s u q q -> T s sig yv -> T s sig yv)
phaserSource
:: (C sig, C yv, C q, C q yv, C u, Storable q, Storable yv)
=> T q yv
-> T u qmaxDev, must be positive
-> T s u q (R s u q q -> T s sig yv -> T s sig yv)
symmetric phaser
phaserStereoSource
:: (C sig, C yv, C q, C q yv, C u, Storable q, Storable yv)
=> T q yv
-> T u qmaxDev, must be positive
-> T s u q (R s u q q -> T s sig yv -> T s sig (T yv))
frequencyModulation :: (C sig, C flat t, C yv, C t, C u) => T t yv -> T s u t (T s flat t -> T s sig yv -> T s sig yv)Source
frequencyModulationDecoupled :: (C sig, C flat t, C yv, C t, C u) => T t yv -> T u t sig yv -> T s u t (T s flat t -> T s sig yv)Source

Frequency modulation where the input signal can have a sample rate different from the output. (The sample rate values can differ, the unit must be the same. We could lift that restriction, but then the unit handling becomes more complicated, and I didn't have a use for it so far.)

The function can be used for resampling.

Recursive
Without resonance
firstOrderLowpass :: (C sig, C q, C q yv, C u) => T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)Source
firstOrderHighpass :: (C sig, C q, C q yv, C u) => T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)Source
butterworthLowpassSource
:: (C sig, C flat q, C q, C q yv, C u)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
butterworthHighpassSource
:: (C sig, C flat q, C q, C q yv, C u)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
chebyshevALowpassSource
:: (C sig, C flat q, C q, C q yv, C u)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
chebyshevAHighpassSource
:: (C sig, C flat q, C q, C q yv, C u)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
chebyshevBLowpassSource
:: (C sig, C flat q, C q, C q yv, C u)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
chebyshevBHighpassSource
:: (C sig, C flat q, C q, C q yv, C u)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)
With resonance
universalSource
:: (C sig, C flat q, C q, C q yv, C u)
=> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig (Result yv))highpass, bandpass, lowpass filter
highpassFromUniversal :: C sig => T s sig (Result yv) -> T s sig yvSource
bandpassFromUniversal :: C sig => T s sig (Result yv) -> T s sig yvSource
lowpassFromUniversal :: C sig => T s sig (Result yv) -> T s sig yvSource
bandlimitFromUniversal :: C sig => T s sig (Result yv) -> T s sig yvSource
moogLowpass :: (C sig, C flat q, C q, C q yv, C u) => Int -> T s u q (T s flat q -> R s (Recip u) q q -> T s sig yv -> T s sig yv)Source
Allpass
allpassCascadeSource
:: (C sig, C q, C q yv, C u)
=> Intorder, number of filters in the cascade
-> qthe phase shift to be achieved for the given frequency
-> T s u q (R s (Recip u) q q -> T s sig yv -> T s sig yv)
allpassFlangerPhase :: C a => aSource
Reverb
comb :: (C sig, C t, C y yv, C u, Storable yv) => T u t -> y -> T s u t (T s sig yv -> T s sig yv)Source
Infinitely many equi-delayed exponentially decaying echos.
Helper functions
interpolateMultiRelativeZeroPad :: (C q, C yv) => T q yv -> T q -> T yv -> T yvSource
Produced by Haddock version 2.4.2