synthesizer-0.0.3: Audio signal processing coded in HaskellSource codeContentsIndex
Synthesizer.Piecewise
Description
Construction of a data type that describes piecewise defined curves.
Synopsis
type T t y sig = [PieceData t y sig]
newtype Piece t y sig = Piece {
computePiece :: y -> y -> t -> sig
}
pieceFromFunction :: (y -> y -> t -> sig) -> Piece t y sig
data PieceData t y sig = PieceData {
pieceType :: Piece t y sig
pieceY0 :: y
pieceY1 :: y
pieceDur :: t
}
newtype PieceRightSingle y = PRS y
newtype PieceRightDouble y = PRD y
data PieceDist t y sig = 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)
(-|#) :: y -> (PieceDist t y sig, T t y sig) -> (PieceRightSingle y, T t y sig)
(#|=) :: (t, Piece t y sig) -> (PieceRightDouble y, T t y sig) -> (PieceDist t y sig, T t y sig)
(=|#) :: (y, y) -> (PieceDist t y sig, T t y sig) -> (PieceRightDouble y, T t y sig)
(#|) :: (t, Piece t y sig) -> y -> (PieceDist t y sig, T t y sig)
(|#) :: y -> (PieceDist t y sig, T t y sig) -> T t y sig
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
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
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
Produced by Haddock version 2.3.0