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

Safe HaskellSafe-Inferred

Synthesizer.Piecewise

Description

Construction of a data type that describes piecewise defined curves.

Synopsis

Documentation

type T t y sig = [PieceData t y sig]Source

newtype Piece t y sig Source

The curve type of a piece of a piecewise defined control curve.

Constructors

Piece 

Fields

computePiece :: y -> y -> t -> sig
 

pieceFromFunction :: (y -> y -> t -> sig) -> Piece t y sigSource

data PieceData t y sig Source

The full description of a control curve piece.

Constructors

PieceData 

Fields

pieceType :: Piece t y sig
 
pieceY0 :: y
 
pieceY1 :: y
 
pieceDur :: t
 

newtype PieceRightSingle y Source

Constructors

PRS y 

newtype PieceRightDouble y Source

Constructors

PRD y 

data PieceDist t y sig Source

Constructors

PD t (Piece t y sig) y 

(#|-) :: (t, Piece t y sig) -> (PieceRightSingle y, T t y sig) -> (PieceDist t y sig, T t y sig)Source

The 6 operators simplify constructing a list of PieceData a. The description consists of nodes (namely the curve values at nodes) and the connecting curve types. The naming scheme is as follows: In the middle there is a bar |. With respect to the bar, the pad symbol # is at the side of the curve type, at the other side there is nothing, a minus sign -, or an equality sign =.

  1. Nothing means that here is the start or the end node of a curve.
  2. Minus means that here is a node where left and right curve meet at the same value. The node description is thus one value.
  3. Equality sign means that here is a split node, where left and right curve might have different ending and beginning values, respectively. The node description consists of a pair of values.

(-|#) :: y -> (PieceDist t y sig, T t y sig) -> (PieceRightSingle y, T t y sig)Source

(#|=) :: (t, Piece t y sig) -> (PieceRightDouble y, T t y sig) -> (PieceDist t y sig, T t y sig)Source

(=|#) :: (y, y) -> (PieceDist t y sig, T t y sig) -> (PieceRightDouble y, T t y sig)Source

(#|) :: (t, Piece t y sig) -> y -> (PieceDist t y sig, T t y sig)Source

(|#) :: y -> (PieceDist t y sig, T t y sig) -> T t y sigSource