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

Synthesizer.Dimensional.RateAmplitude.Piece

Contents

Synopsis

Piecewise

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

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

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

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

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

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 qSource

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)

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

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)

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

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

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