synthesizer-core-0.6: Audio signal processing coded in Haskell: Low level part

Portability requires multi-parameter type classes provisional synthesizer@henning-thielemann.de None

Synthesizer.State.Control

Description

Synopsis

Control curve generation

constant :: a -> T aSource

Arguments

 :: C a => a steepness -> a initial value -> T a linear progression

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.

Arguments

 :: C y => Int length -> (y, y) initial and final value -> T y linear progression

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.

Arguments

 :: C a => a time where the function reaches 1/e of the initial value -> a initial value -> T a exponential decay

Arguments

 :: C a => a time where the function reaches 1/e of the initial value -> a initial value -> T a exponential decay

Arguments

 :: C y => y time where the function reaches 1/e of the initial value -> T y exponential decay

Arguments

 :: C a => a half life -> a initial value -> T a exponential decay

Arguments

 :: C a => a half life -> a initial value -> T a exponential decay

Arguments

 :: C y => y half life -> T y exponential decay

Arguments

 :: C y => y time where the function reaches 1/e of the initial value -> y initial value -> y value after given time -> T y exponential decay

Arguments

 :: C y => y time where the function reaches 1/e of the initial value -> y initial value -> y value after given time -> T y exponential decay

Arguments

 :: (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.

Arguments

 :: (C a, C a v) => a half life -> v initial value -> T v exponential decay

Arguments

 :: C a => a time t0 where 1 is approached -> a time t1 where -1 is approached -> T a a cosine wave where one half wave is between t0 and t1

cubicHermite :: C a => (a, (a, a)) -> (a, (a, a)) -> T aSource

piecewise curves

splitDurations :: C t => [t] -> [(Int, t)]Source

piecewise :: C a => T a a (a -> T a) -> T aSource

type Piece a = Piece a a (a -> T a)Source

Constructors

 FlatLeft FlatRight
``` 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