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

Safe HaskellNone
LanguageHaskell2010

Synthesizer.Plain.Interpolation

Synopsis

Documentation

data T t y Source #

interpolation as needed for resampling

func :: T t y -> t -> T y -> y Source #

offset :: T t y -> Int Source #

number :: T t y -> Int Source #

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

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

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

Only for finite input signals.

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

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

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

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

All values of frequency control must be non-negative.

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

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

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

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

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 Source #

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

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

constant :: T t y Source #

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 Source #

Consider the signal to be piecewise linear.

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

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 Source #

function Source #

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

margin :: T t y -> Margin Source #

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

alternative implementation of single