synthesizer-dimensional-0.8.1.1: Audio signal processing with static physical dimensions
Safe HaskellSafe-Inferred
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 #

data FlatPosition #

Constructors

FlatLeft 
FlatRight 

Instances

Instances details
Enum FlatPosition 
Instance details

Defined in Synthesizer.Piecewise

Ix FlatPosition 
Instance details

Defined in Synthesizer.Piecewise

Show FlatPosition 
Instance details

Defined in Synthesizer.Piecewise

Eq FlatPosition 
Instance details

Defined in Synthesizer.Piecewise

Ord FlatPosition 
Instance details

Defined in Synthesizer.Piecewise