|
Synthesizer.Dimensional.RateAmplitude.Filter | Portability | requires multi-parameter type classes | Stability | provisional | Maintainer | synthesizer@henning-thielemann.de |
|
|
|
|
|
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
|
|
|
|
Smooth
|
|
|
:: (C q, C q yv, C u, C v) | | => T (Recip u) q | cut-off freqeuncy
| -> T s u q (R s v q yv -> R s v q yv) | | needs a good handling of boundaries, yet
|
|
|
|
:: (C yv, C q, C q yv, C u, C v, Storable q, Storable yv) | | => T (Recip u) q | minimum 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 |
|
|
|
:: (C yv, C q, C u, C v, Storable q, Storable yv) | | => T q yv | | -> T u q | minDelay, minimal delay, may be negative
| -> T u q | maxDelay, 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.
|
|
|
:: (C yv, C q, C q yv, C u, C v, Storable q, Storable yv) | | => T q yv | | -> T u q | maxDelay, must be positive
| -> T s u q (R s u q q -> R s v q yv -> R s v q yv) | | symmetric phaser
|
|
|
|
:: (C yv, C q, C q yv, C u, C v, Storable q, Storable yv) | | => T q yv | | -> T u q | maxDelay, 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 yv | Source |
|
|
firstOrderHighpass :: (C q, C q yv, C u, C v) => FrequencyFilter s u q r (Parameter q) v yv yv | Source |
|
|
|
:: (C flat q, C q, C q yv, C u, C v) | | => Int | Order 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 | |
|
|
|
:: (C flat q, C q, C q yv, C u, C v) | | => Int | Order 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 | |
|
|
|
:: (C flat q, C q, C q yv, C u, C v) | | => Int | Order 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 | |
|
|
|
:: (C flat q, C q, C q yv, C u, C v) | | => Int | Order 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 | |
|
|
|
:: (C flat q, C q, C q yv, C u, C v) | | => Int | Order 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 | |
|
|
|
:: (C flat q, C q, C q yv, C u, C v) | | => Int | Order 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Allpass
|
|
|
:: (C q, C q yv, C u, C v) | | => Int | order, number of filters in the cascade
| -> q | the 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 => a | Source |
|
|
Reverb
|
|
|
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 |