synthesizer-0.2.0.1: Audio signal processing coded in HaskellSource codeContentsIndex
Synthesizer.Dimensional.RateAmplitude.Filter
Portabilityrequires multi-parameter type classes
Stabilityprovisional
Maintainersynthesizer@henning-thielemann.de
Contents
Non-recursive
Amplification
Filter operators from calculus
Smooth
Delay
Recursive
Without resonance
With resonance
Allpass
Reverb
Filter operators from calculus
Description
Synopsis
amplify :: (C y, C u, C v) => y -> T s u t (R s v y yv -> R s v y yv)
amplifyDimension :: (C y, C u, C v0, C v1) => T v0 y -> T s u t (R s v1 y yv -> R s (Mul v0 v1) y yv)
negate :: (C yv, C u, C v) => T s u t (R s v y yv -> R s v y yv)
envelope :: (C flat y0, C y0, C u, C v) => T s u t (T s flat y0 -> R s v y y0 -> R s v y y0)
envelopeVector :: (C flat y0, C y0 yv, C y, C u, C v) => T s u t (T s flat y0 -> R s v y yv -> R s v y yv)
envelopeVectorDimension :: (C y0 yv, C y, C u, C v0, C v1) => T s u t (R s v0 y y0 -> R s v1 y yv -> R s (Mul v0 v1) y yv)
differentiate :: (C yv, C q, C u, C v) => T s u q (R s v q yv -> R s (DimensionGradient u v) q yv)
meanStatic :: (C q, C q yv, C u, C v) => T (Recip u) q -> T s u q (R s v q yv -> R s v q yv)
mean :: (C yv, C q, C q yv, C u, C v, Storable q, Storable yv) => T (Recip u) q -> T s u q (R s (Recip u) q q -> R s v q yv -> R s v q yv)
delay :: (C yv, C y, C t, C u, C v) => T u t -> T s u t (R s v y yv -> R s v y yv)
phaseModulation :: (C yv, C q, C u, C v, Storable q, Storable yv) => T q yv -> T u q -> T u q -> T s u q (R s u q q -> R s v q yv -> R s v q yv)
frequencyModulation :: (C flat q, C yv, C q, C u, C v) => T q yv -> T s u q (T s flat q -> R s v q yv -> R s v q yv)
frequencyModulationDecoupled :: (C flat q, C yv, C q, C u, C v) => T q yv -> T s u q (T s flat q -> T u q (D v q S) yv -> R s v q yv)
phaser :: (C yv, C q, C q yv, C u, C v, Storable q, Storable yv) => T q yv -> T u q -> T s u q (R s u q q -> R s v q yv -> R s v q yv)
phaserStereo :: (C yv, C q, C q yv, C u, C v, Storable q, Storable yv) => T q yv -> T u q -> T s u q (R s u q q -> R s v q yv -> R s v q (T yv))
firstOrderLowpass :: (C q, C q yv, C u, C v) => FrequencyFilter s u q r (Parameter q) v yv yv
firstOrderHighpass :: (C q, C q yv, C u, C v) => FrequencyFilter s u q r (Parameter q) v yv yv
butterworthLowpass :: (C flat q, C q, C q yv, C u, C v) => Int -> ResonantFilter s u q r flat (Pole q) v yv yv
butterworthHighpass :: (C flat q, C q, C q yv, C u, C v) => Int -> ResonantFilter s u q r flat (Pole q) v yv yv
chebyshevALowpass :: (C flat q, C q, C q yv, C u, C v) => Int -> ResonantFilter s u q r flat (Pole q) v yv yv
chebyshevAHighpass :: (C flat q, C q, C q yv, C u, C v) => Int -> ResonantFilter s u q r flat (Pole q) v yv yv
chebyshevBLowpass :: (C flat q, C q, C q yv, C u, C v) => Int -> ResonantFilter s u q r flat (Pole q) v yv yv
chebyshevBHighpass :: (C flat q, C q, C q yv, C u, C v) => Int -> ResonantFilter s u q r flat (Pole q) v yv yv
universal :: (C flat q, C q, C q yv, C u, C v) => ResonantFilter s u q r flat (Parameter q) v yv (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 flat q, C q, C q yv, C u, C v) => Int -> ResonantFilter s u q r flat (Parameter q) v yv yv
allpassCascade :: (C q, C q yv, C u, C v) => Int -> q -> FrequencyFilter s u q r (Parameter q) v yv yv
allpassFlangerPhase :: C a => a
comb :: (C t, C y yv, C u, C v, Storable yv) => T u t -> y -> T s u t (R s v y yv -> R s v y yv)
combProc :: (C t, C y, C y, C y yv, C u, C v, Storable yv) => T u t -> T s u t (R s v y yv -> R s v y yv) -> T s u t (R s v y yv -> R s v y yv)
integrate :: (C yv, C q, C u, C v) => T s u q (R s v q yv -> R s (Mul u v) q yv)
Non-recursive
Amplification
amplify :: (C y, C u, C v) => y -> T s u t (R s v y yv -> R s v y yv)Source
The amplification factor must be positive.
amplifyDimension :: (C y, C u, C v0, C v1) => T v0 y -> T s u t (R s v1 y yv -> R s (Mul v0 v1) y yv)Source
negate :: (C yv, C u, C v) => T s u t (R s v y yv -> R s v y yv)Source
envelope :: (C flat y0, C y0, C u, C v) => T s u t (T s flat y0 -> R s v y y0 -> R s v y y0)Source
envelopeVector :: (C flat y0, C y0 yv, C y, C u, C v) => T s u t (T s flat y0 -> R s v y yv -> R s v y yv)Source
envelopeVectorDimension :: (C y0 yv, C y, C u, C v0, C v1) => T s u t (R s v0 y y0 -> R s v1 y yv -> R s (Mul v0 v1) y yv)Source
Filter operators from calculus
differentiate :: (C yv, C q, C u, C v) => T s u q (R s v q yv -> R s (DimensionGradient u v) q yv)Source
Smooth
meanStaticSource
:: (C q, C q yv, C u, C v)
=> T (Recip u) qcut-off freqeuncy
-> T s u q (R s v q yv -> R s v q yv)
needs a good handling of boundaries, yet
meanSource
:: (C yv, C q, C q yv, C u, C v, Storable q, Storable yv)
=> T (Recip u) qminimum cut-off freqeuncy
-> T s u q (R s (Recip u) q q -> R s v q yv -> R s v q yv)
needs a better handling of boundaries, yet
Delay
delay :: (C yv, C y, C t, C u, C v) => T u t -> T s u t (R s v y yv -> R s v y yv)Source
phaseModulationSource
:: (C yv, C q, C u, C v, Storable q, Storable yv)
=> T q yv
-> T u qminDelay, minimal delay, may be negative
-> T u qmaxDelay, maximal delay, it must be minDelay <= maxDelay and the modulation must always be in the range [minDelay,maxDelay].
-> T s u q (R s u q q -> R s v q yv -> R s v q yv)
frequencyModulation :: (C flat q, C yv, C q, C u, C v) => T q yv -> T s u q (T s flat q -> R s v q yv -> R s v q yv)Source
frequencyModulationDecoupled :: (C flat q, C yv, C q, C u, C v) => T q yv -> T s u q (T s flat q -> T u q (D v q S) yv -> R s v q 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.

phaserSource
:: (C yv, C q, C q yv, C u, C v, Storable q, Storable yv)
=> T q yv
-> T u qmaxDelay, must be positive
-> T s u q (R s u q q -> R s v q yv -> R s v q yv)
symmetric phaser
phaserStereoSource
:: (C yv, C q, C q yv, C u, C v, Storable q, Storable yv)
=> T q yv
-> T u qmaxDelay, must be positive
-> T s u q (R s u q q -> R s v q yv -> R s v q (T yv))
Recursive
Without resonance
firstOrderLowpass :: (C q, C q yv, C u, C v) => FrequencyFilter s u q r (Parameter q) v yv yvSource
firstOrderHighpass :: (C q, C q yv, C u, C v) => FrequencyFilter s u q r (Parameter q) v yv yvSource
butterworthLowpassSource
:: (C flat q, C q, C q yv, C u, C v)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> ResonantFilter s u q r flat (Pole q) v yv yv
butterworthHighpassSource
:: (C flat q, C q, C q yv, C u, C v)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> ResonantFilter s u q r flat (Pole q) v yv yv
chebyshevALowpassSource
:: (C flat q, C q, C q yv, C u, C v)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> ResonantFilter s u q r flat (Pole q) v yv yv
chebyshevAHighpassSource
:: (C flat q, C q, C q yv, C u, C v)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> ResonantFilter s u q r flat (Pole q) v yv yv
chebyshevBLowpassSource
:: (C flat q, C q, C q yv, C u, C v)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> ResonantFilter s u q r flat (Pole q) v yv yv
chebyshevBHighpassSource
:: (C flat q, C q, C q yv, C u, C v)
=> IntOrder of the filter, must be even, the higher the order, the sharper is the separation of frequencies.
-> ResonantFilter s u q r flat (Pole q) v yv yv
With resonance
universal :: (C flat q, C q, C q yv, C u, C v) => ResonantFilter s u q r flat (Parameter q) v yv (Result yv)Source
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 flat q, C q, C q yv, C u, C v) => Int -> ResonantFilter s u q r flat (Parameter q) v yv yvSource
Allpass
allpassCascadeSource
:: (C q, C q yv, C u, C v)
=> Intorder, number of filters in the cascade
-> qthe phase shift to be achieved for the given frequency
-> FrequencyFilter s u q r (Parameter q) v yv yv
the lowest comb frequency is used as the filter frequency
allpassFlangerPhase :: C a => aSource
Reverb
comb :: (C t, C y yv, C u, C v, Storable yv) => T u t -> y -> T s u t (R s v y yv -> R s v y yv)Source
Infinitely many equi-delayed exponentially decaying echos.
combProc :: (C t, C y, C y, C y yv, C u, C v, Storable yv) => T u t -> T s u t (R s v y yv -> R s v y yv) -> T s u t (R s v y yv -> R s v y yv)Source
Infinitely many equi-delayed echos processed by an arbitrary time-preserving signal processor.
Filter operators from calculus
integrate :: (C yv, C q, C u, C v) => T s u q (R s v q yv -> R s (Mul u v) q yv)Source
Produced by Haddock version 2.4.2