synthesizer-dimensional-0.8.1: Audio signal processing with static physical dimensions

Safe HaskellNone
LanguageHaskell2010

Synthesizer.Dimensional.RateAmplitude.Piece

Contents

Synopsis

Piecewise

step :: (C q, C u, C v, Write sig q) => T s u v sig q Source #

linear :: (C q, C u, C v, Write sig q) => T s u v sig q Source #

exponential :: (C q, C u, C v, Write sig q) => T v q -> T s u v sig q Source #

cosine :: (C q, C u, C v, Write sig q) => T s u v sig q Source #

halfSine :: (C q, C u, C v, Write sig q) => FlatPosition -> T s u v sig q Source #

cubic :: (C q, C u, C v, Write sig q) => T (DimensionGradient u v) q -> T (DimensionGradient u v) q -> T s u v sig q Source #

type T s u v sig q = Piece (T u q) (T v q) (T v q -> LazySize -> q -> T s u q (T (Phantom s) (Flat q) (sig q))) Source #

type Sequence s u v sig q = T (T u q) (T v q) (T v q -> LazySize -> q -> T s u q (T (Phantom s) (Flat q) (sig q))) Source #

run :: (C q, C q, C u, C v, Write sig q) => T u q -> Sequence s u v sig q -> T s u q (T (Phantom s) (Dimensional v q) (sig q)) Source #

Since this function looks for the maximum node value, and since the signal parameter inference phase must be completed before signal processing, infinite descriptions cannot be used here.

runVolume :: (C q, C q, C u, C v, Write sig q) => T u q -> Sequence s u v sig q -> T v q -> T s u q (T (Phantom s) (Dimensional v q) (sig q)) Source #

runState :: (C q, C q, C u, C v) => Sequence s u v T q -> T s u q (R s v q q) Source #

runStateVolume :: (C q, C q, C u, C v) => Sequence s u v T q -> T v q -> T s u q (R s v q q) Source #

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

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

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, y) -> (PieceDist t y sig, T t y sig) -> (PieceRightDouble y, T t y sig) infixr 5 #

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

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

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