Portability | requires multi-parameter type classes |
---|---|
Stability | provisional |
Maintainer | synthesizer@henning-thielemann.de |
- amplify :: C y amp => y -> T s u t (Single s (Numeric amp) (Numeric amp) yv yv)
- amplifyDimension :: (C y, C u, C v0, C v1) => T v0 y -> T s u t (Single s (Dimensional v1 y) (Dimensional (Mul v0 v1) y) yv yv)
- amplifyScalarDimension :: (C y, C u, C v) => T v y -> T s u t (Single s (Dimensional Scalar y) (Dimensional v y) yv yv)
- negate :: C (Displacement sample) => T s u t (T s sample sample)
- envelope :: C y => T s u t (T s (Flat y, Numeric amp y) (Numeric amp y))
- envelopeScalarDimension :: (C y, C u, C v) => T s u t (T s (Dimensional Scalar y y, Dimensional v y y) (Dimensional v y y))
- envelopeVector :: C y (Displacement sample) => T s u t (T s (Flat y, sample) sample)
- envelopeVectorDimension :: (C y0 yv, C y, C u, C v0, C v1) => T s u t (T s (Dimensional v0 y y0, Dimensional v1 y yv) (Dimensional (Mul v0 v1) y yv))
- differentiate :: (C yv, C q, C u, C v) => T s u q (Single s (Dimensional v q) (Dimensional (DimensionGradient u v) q) yv yv)
- type ResonantFilter s u q ic amp yv0 yv1 = T s u q (T (Converter s (Dimensional Scalar q q, Dimensional (Recip u) q q) ic) (T s (T amp yv0, SampleRateDep s ic) (T amp yv1)))
- type FrequencyFilter s u q ic amp yv0 yv1 = T s u q (T (Converter s (Dimensional (Recip u) q q) ic) (T s (T amp yv0, SampleRateDep s ic) (T amp yv1)))
- firstOrderLowpass :: (C q, C q yv, C u) => FrequencyFilter s u q (Parameter q) amp yv yv
- firstOrderHighpass :: (C q, C q yv, C u) => FrequencyFilter s u q (Parameter q) amp yv yv
- butterworthLowpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (Parameter a) amp yv yv
- butterworthHighpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (Parameter a) amp yv yv
- chebyshevALowpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (ParameterA a) amp yv yv
- chebyshevAHighpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (ParameterA a) amp yv yv
- chebyshevBLowpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (ParameterB a) amp yv yv
- chebyshevBHighpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (ParameterB a) amp yv yv
- butterworthLowpassPole :: (C q, C q yv, C u) => Int -> ResonantFilter s u q (Pole q) amp yv yv
- butterworthHighpassPole :: (C q, C q yv, C u) => Int -> ResonantFilter s u q (Pole q) amp yv yv
- chebyshevALowpassPole :: (C q, C q yv, C u) => Int -> ResonantFilter s u q (Pole q) amp yv yv
- chebyshevAHighpassPole :: (C q, C q yv, C u) => Int -> ResonantFilter s u q (Pole q) amp yv yv
- chebyshevBLowpassPole :: (C q, C q yv, C u) => Int -> ResonantFilter s u q (Pole q) amp yv yv
- chebyshevBHighpassPole :: (C q, C q yv, C u) => Int -> ResonantFilter s u q (Pole q) amp yv yv
- universal :: (C q, C q yv, C u) => ResonantFilter s u q (Parameter q) amp yv (Result yv)
- highpassFromUniversal :: Single s amp amp (Result yv) yv
- bandpassFromUniversal :: Single s amp amp (Result yv) yv
- lowpassFromUniversal :: Single s amp amp (Result yv) yv
- bandlimitFromUniversal :: Single s amp amp (Result yv) yv
- moogLowpass :: (C q, C q yv, C u) => Int -> ResonantFilter s u q (Parameter q) amp yv yv
- allpassCascade :: (C q, C q yv, C u) => Int -> q -> FrequencyFilter s u q (Parameter q) amp yv yv
- allpassPhaser :: (C q, C q yv, C u) => Int -> ResonantFilter s u q (q, Parameter q) amp yv yv
- allpassFlangerPhase :: C a => a
- integrate :: (C yv, C q, C u, C v) => T s u q (T s (Dimensional v q yv) (Dimensional (Mul u v) q yv))
Non-recursive
Amplification
amplify :: C y amp => y -> T s u t (Single s (Numeric amp) (Numeric amp) yv yv)Source
The amplification factor must be positive.
amplifyDimension :: (C y, C u, C v0, C v1) => T v0 y -> T s u t (Single s (Dimensional v1 y) (Dimensional (Mul v0 v1) y) yv yv)Source
amplifyScalarDimension :: (C y, C u, C v) => T v y -> T s u t (Single s (Dimensional Scalar y) (Dimensional v y) yv yv)Source
envelopeScalarDimension :: (C y, C u, C v) => T s u t (T s (Dimensional Scalar y y, Dimensional v y y) (Dimensional v y y))Source
envelopeVector :: C y (Displacement sample) => T s u t (T s (Flat y, sample) sample)Source
envelopeVectorDimension :: (C y0 yv, C y, C u, C v0, C v1) => T s u t (T s (Dimensional v0 y y0, Dimensional v1 y yv) (Dimensional (Mul v0 v1) y yv))Source
Filter operators from calculus
differentiate :: (C yv, C q, C u, C v) => T s u q (Single s (Dimensional v q) (Dimensional (DimensionGradient u v) q) yv yv)Source
Recursive
type ResonantFilter s u q ic amp yv0 yv1 = T s u q (T (Converter s (Dimensional Scalar q q, Dimensional (Recip u) q q) ic) (T s (T amp yv0, SampleRateDep s ic) (T amp yv1)))Source
type FrequencyFilter s u q ic amp yv0 yv1 = T s u q (T (Converter s (Dimensional (Recip u) q q) ic) (T s (T amp yv0, SampleRateDep s ic) (T amp yv1)))Source
Without resonance
firstOrderLowpass :: (C q, C q yv, C u) => FrequencyFilter s u q (Parameter q) amp yv yvSource
firstOrderHighpass :: (C q, C q yv, C u) => FrequencyFilter s u q (Parameter q) amp yv yvSource
chebyshevALowpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (ParameterA a) amp yv yvSource
chebyshevAHighpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (ParameterA a) amp yv yvSource
chebyshevBLowpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (ParameterB a) amp yv yvSource
chebyshevBHighpass :: (C a, C a yv, Storable a, Storable yv, C u) => Int -> ResonantFilter s u a (ParameterB a) amp yv yvSource
With resonance
highpassFromUniversal :: Single s amp amp (Result yv) yvSource
bandpassFromUniversal :: Single s amp amp (Result yv) yvSource
lowpassFromUniversal :: Single s amp amp (Result yv) yvSource
bandlimitFromUniversal :: Single s amp amp (Result yv) yvSource
moogLowpass :: (C q, C q yv, C u) => Int -> ResonantFilter s u q (Parameter q) amp yv yvSource
Allpass
:: (C q, C q yv, C u) | |
=> Int | order, number of filters in the cascade |
-> q | the phase shift to be achieved for the given frequency |
-> FrequencyFilter s u q (Parameter q) amp yv yv |
the lowest comb frequency is used as the filter frequency
:: (C q, C q yv, C u) | |
=> Int | order, number of filters in the cascade |
-> ResonantFilter s u q (q, Parameter q) amp yv yv |
We use the mixing ratio as resonance parameter.
Mixing ratio r
means:
Amplify input by r
and delayed signal by 1-r
.
Maximum effect is achieved for r=0.5
.
allpassFlangerPhase :: C a => aSource