Portability | requires multi-parameter type classes |
---|---|
Stability | provisional |
Maintainer | synthesizer@henning-thielemann.de |
- constant :: a -> T a
- linear :: C a => a -> a -> T a
- linearMultiscale :: C y => y -> y -> T y
- linearMultiscaleNeutral :: C y => y -> T y
- line :: C y => Int -> (y, y) -> T y
- exponentialMultiscale :: C a => a -> a -> T a
- exponential :: C a => a -> a -> T a
- exponentialMultiscaleNeutral :: C y => y -> T y
- exponential2Multiscale :: C a => a -> a -> T a
- exponential2 :: C a => a -> a -> T a
- exponential2MultiscaleNeutral :: C y => y -> T y
- exponentialFromToMultiscale :: C y => y -> y -> y -> T y
- exponentialFromTo :: C y => y -> y -> y -> T y
- vectorExponential :: (C a, C a v) => a -> v -> T v
- vectorExponential2 :: (C a, C a v) => a -> v -> T v
- cosine :: C a => a -> a -> T a
- cubicHermite :: C a => (a, (a, a)) -> (a, (a, a)) -> T a
- splitDurations :: C t => [t] -> [(Int, t)]
- piecewise :: C a => T a a (a -> T a) -> T a
- type Piece a = Piece a a (a -> T a)
- stepPiece :: Piece a
- linearPiece :: C a => Piece a
- exponentialPiece :: C a => a -> Piece a
- cosinePiece :: C a => Piece a
- data FlatPosition
- halfSinePiece :: C a => FlatPosition -> Piece a
- cubicPiece :: C a => a -> a -> Piece a
- curveMultiscale :: (y -> y -> y) -> y -> y -> T y
- curveMultiscaleNeutral :: (y -> y -> y) -> y -> y -> T y
Control curve generation
linearMultiscale :: C y => y -> y -> T ySource
As stable as the addition of time values.
linearMultiscaleNeutral :: C y => y -> T ySource
Linear curve starting at zero.
Linear curve of a fixed length. The final value is not actually reached, instead we stop one step before. This way we can concatenate several lines without duplicate adjacent values.
:: (C a, C a v) | |
=> a | time where the function reaches 1/e of the initial value |
-> v | initial value |
-> T v | exponential decay |
This is an extension of exponential
to vectors
which is straight-forward but requires more explicit signatures.
But since it is needed rarely I setup a separate function.
cubicHermite :: C a => (a, (a, a)) -> (a, (a, a)) -> T aSource
piecewise curves
splitDurations :: C t => [t] -> [(Int, t)]Source
linearPiece :: C a => Piece aSource
exponentialPiece :: C a => a -> Piece aSource
cosinePiece :: C a => Piece aSource
data FlatPosition Source
halfSinePiece :: C a => FlatPosition -> Piece aSource
Graphics.Gnuplot.Simple.plotList [] $ Sig.toList $ piecewise $ 1 |# (10.9, halfSinePiece FlatRight) #| 2
cubicPiece :: C a => a -> a -> Piece aSource
auxiliary functions
curveMultiscale :: (y -> y -> y) -> y -> y -> T ySource
curveMultiscaleNeutral :: (y -> y -> y) -> y -> y -> T ySource