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

Safe HaskellNone

Synthesizer.Plain.Interpolation

Synopsis

Documentation

data T t y

interpolation as needed for resampling

func :: T t y -> t -> T y -> y

offset :: T t y -> Int

number :: T t y -> Int

zeroPad :: C t => (T t y -> t -> T y -> a) -> y -> T t y -> t -> T y -> a

constantPad :: C t => (T t y -> t -> T y -> a) -> T t y -> t -> T y -> a

cyclicPad :: C t => (T t y -> t -> T y -> a) -> T t y -> t -> T y -> a

Only for finite input signals.

extrapolationPad :: C t => (T t y -> t -> T y -> a) -> T t y -> t -> T y -> a

The extrapolation may miss some of the first and some of the last points

single :: C t => T t y -> t -> T y -> y

multiRelative :: C t => T t y -> t -> T y -> T t -> T y

All values of frequency control must be non-negative.

multiRelativeZeroPad :: C t => y -> T t y -> t -> T t -> T y -> T y

multiRelativeConstantPad :: C t => T t y -> t -> T t -> T y -> T y

multiRelativeCyclicPad :: C t => T t y -> t -> T t -> T y -> T y

multiRelativeExtrapolationPad :: C t => T t y -> t -> T t -> T y -> T y

The extrapolation may miss some of the first and some of the last points

multiRelativeZeroPadConstant :: (C t, C y) => t -> T t -> T y -> T y

multiRelativeZeroPadLinear :: (C t, C t y) => t -> T t -> T y -> T y

multiRelativeZeroPadCubic :: (C t, C t y) => t -> T t -> T y -> T y

constant :: T t y

Consider the signal to be piecewise constant, where the leading value is used for filling the interval [0,1).

linear :: C t y => T t y

Consider the signal to be piecewise linear.

cubic :: (C t, C t y) => T t y

Consider the signal to be piecewise cubic, with smooth connections at the nodes. It uses a cubic curve which has node values x0 at 0 and x1 at 1 and derivatives (x1-xm1)2 and (x2-x0)2, respectively. You can see how it works if you evaluate the expression for t=0 and t=1 as well as the derivative at these points.

piecewise :: C t y => Int -> [t -> t] -> T t y

function

Arguments

:: C t y 
=> (Int, Int)

(left extent, right extent), e.g. (1,1) for linear hat

-> (t -> t) 
-> T t y 

with this wrapper you can use the collection of interpolating functions from Donadio's DSP library

data Margin

Instances

margin :: T t y -> Margin

singleRec :: (Ord t, C t) => T t y -> t -> T y -> y

alternative implementation of single