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

Portabilityrequires multi-parameter type classes
Stabilityprovisional
Maintainersynthesizer@henning-thielemann.de

Synthesizer.State.Control

Contents

Description

 

Synopsis

Control curve generation

constant :: a -> T aSource

linearSource

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.

lineSource

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.

exponentialMultiscaleSource

Arguments

:: C a 
=> a

time where the function reaches 1/e of the initial value

-> a

initial value

-> T a

exponential decay

exponentialSource

Arguments

:: C a 
=> a

time where the function reaches 1/e of the initial value

-> a

initial value

-> T a

exponential decay

exponentialMultiscaleNeutralSource

Arguments

:: C y 
=> y

time where the function reaches 1/e of the initial value

-> T y

exponential decay

exponential2MultiscaleSource

Arguments

:: C a 
=> a

half life

-> a

initial value

-> T a

exponential decay

exponential2Source

Arguments

:: C a 
=> a

half life

-> a

initial value

-> T a

exponential decay

exponential2MultiscaleNeutralSource

Arguments

:: C y 
=> y

half life

-> T y

exponential decay

exponentialFromToMultiscaleSource

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

exponentialFromToSource

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

vectorExponentialSource

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.

vectorExponential2Source

Arguments

:: (C a, C a v) 
=> a

half life

-> v

initial value

-> T v

exponential decay

cosineSource

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

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