|
| Synthesizer.Dimensional.RateAmplitude.Control | | Portability | requires multi-parameter type classes | | Stability | provisional | | Maintainer | synthesizer@henning-thielemann.de |
|
|
|
|
|
| Description |
| Control curves which can be used
as envelopes, for controlling filter parameters and so on.
|
|
| Synopsis |
|
| constant :: (C y, C u, C v) => T v y -> T s u t (R s v y y) | | | constantVector :: T v y -> yv -> T s u t (R s v y yv) | | | linear :: (C q, C q, C u, C v) => T (DimensionGradient u v) q -> T v q -> T s u q (R s v q q) | | | line :: (C q, C u, C v) => T u q -> (T v q, T v q) -> T s u q (R s v q q) | | | exponential :: (C q, C q, C u, C v) => T u q -> T v q -> T s u q (R s v q q) | | | exponential2 :: (C q, C q, C u, C v) => T u q -> T v q -> T s u q (R s v q q) | | | exponentialFromTo :: (C q, C q, C u, C v) => T u q -> (T v q, T v q) -> T s u q (R s v q q) | | | cubicHermite :: (C q, C q, C u, C v) => (T u q, (T v q, T (DimensionGradient u v) q)) -> (T u q, (T v q, T (DimensionGradient u v) q)) -> T s u q (R s v q q) | | | stepPiece :: (C q, C u, C v) => Piece s u v q | | | linearPiece :: (C q, C u, C v) => Piece s u v q | | | exponentialPiece :: (C q, C u, C v) => T v q -> Piece s u v q | | | cosinePiece :: (C q, C u, C v) => Piece s u v q | | | cubicPiece :: (C q, C u, C v) => T (DimensionGradient u v) q -> T (DimensionGradient u v) q -> Piece s u v q | | | piecewise :: (C q, C q, C u, C v) => Piecewise s u v q -> T s u q (R s v q q) | | | piecewiseVolume :: (C q, C q, C u, C v) => Piecewise s u v q -> T v q -> T s u q (R s v q q) | | | type Piece s u v q = Piece (T u q) (T v q) (T v q -> q -> T s u q (R s q)) | | | type Piecewise s u v q = T (T u q) (T v q) (T v q -> q -> T s u q (R s q)) | | | -|# | | | #|- | | | =|# | | | #|= | | | |# | | | #| | | | mapLinearDimension :: (C y, C y, C u, C v) => T v y -> T (Mul v u) y -> T s u t (R s u y y -> R s (Mul v u) y y) | | | mapExponentialDimension :: (C y, C u) => y -> T u y -> T s u t (R s Scalar y y -> R s u y y) |
|
|
|
| Primitives
|
|
|
| :: (C y, C u, C v) | | | => T v y | value
| | -> T s u t (R s v y y) | |
|
|
|
| :: | | | => T v y | amplitude
| | -> yv | value
| | -> T s u t (R s v y yv) | | | The amplitude must be positive!
This is not checked.
|
|
|
|
| :: (C q, C q, C u, C v) | | | => T (DimensionGradient u v) q | slope of the curve
| | -> T v q | initial value
| | -> T s u q (R s v q q) | | Caution: This control curve can contain samples
with an absolute value greater than 1.
Linear curves starting with zero are impossible.
Maybe you prefer using line.
|
|
|
|
| :: (C q, C u, C v) | | | => T u q | duration of the ramp
| | -> (T v q, T v q) | initial and final value
| | -> T s u q (R s v q q) | | | Generates a finite ramp.
|
|
|
|
| :: (C q, C q, C u, C v) | | | => T u q | time where the function reaches 1/e of the initial value
| | -> T v q | initial value
| | -> T s u q (R s v q q) | |
|
|
|
| :: (C q, C q, C u, C v) | | | => T u q | half life, time where the function reaches 1/2 of the initial value
| | -> T v q | initial value
| | -> T s u q (R s v q q) | |
|
|
|
| :: (C q, C q, C u, C v) | | | => T u q | duration of the ramp
| | -> (T v q, T v q) | initial and final value
| | -> T s u q (R s v q q) | | | Generate an exponential curve through two nodes.
|
|
|
|
|
| Piecewise
|
|
|
|
|
|
|
|
|
|
|
|
|
| Since this function looks for the maximum node value,
and since the signal parameter inference phase must be completed before signal processing,
infinite descriptions cannot be used here.
|
|
|
|
| type Piece s u v q = Piece (T u q) (T v q) (T v q -> q -> T s u q (R s q)) | Source |
|
|
| type Piecewise s u v q = T (T u q) (T v q) (T v q -> q -> T s u q (R s q)) | Source |
|
|
| -|# |
|
| #|- |
|
| =|# |
|
| #|= |
|
| |# |
|
| #| |
|
| Preparation
|
|
|
| :: (C y, C y, C u, C v) | | | => T v y | range: one is mapped to center + range * ampX
| | -> T (Mul v u) y | center: zero is mapped to center
| | -> T s u t (R s u y y -> R s (Mul v u) y y) | | | Map a control curve without amplitude unit
by a linear (affine) function with a unit.
|
|
|
|
| :: (C y, C u) | | | => y | range: one is mapped to center*range, must be positive
| | -> T u y | center: zero is mapped to center
| | -> T s u t (R s Scalar y y -> R s u y y) | | | Map a control curve without amplitude unit
exponentially to one with a unit.
|
|
|
| Produced by Haddock version 2.4.2 |