synthesizer-0.0.3: Audio signal processing coded in HaskellSource codeContentsIndex
Synthesizer.Generic.Interpolation
Contents
Interpolation with various padding methods
Interpolation of multiple values with various padding methods
Interpolation of multiple values with various padding methods
All-in-one interpolation functions
Different kinds of interpolation
Hard-wired interpolations
Interpolation based on piecewise defined functions
Interpolation based on arbitrary functions
Helper functions
Description
ToDo: use AffineSpace instead of Module for the particular interpolation types, since affine combinations assert reconstruction of constant functions. They are more natural for interpolation of internal control parameters. However, how can cubic interpolation expressed by affine combinations without divisions?
Synopsis
data T sig t y = Cons {
number :: Int
offset :: Int
func :: t -> sig y -> y
}
zeroPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> y -> T sig t y -> t -> sig y -> a
constantPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> T sig t y -> t -> sig y -> a
cyclicPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> T sig t y -> t -> sig y -> a
extrapolationPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> T sig t y -> t -> sig y -> a
skip :: (C t, C y, C sig) => T sig t y -> (t, sig y) -> (t, sig y)
single :: (C t, C y, C sig) => T sig t y -> t -> sig y -> y
multiRelative :: (C t, C t, C y, C sig) => T sig t y -> t -> sig y -> sig t -> sig y
multiRelativeZeroPad :: (C t, C t, C y, C sig) => y -> T sig t y -> t -> sig t -> sig y -> sig y
multiRelativeConstantPad :: (C t, C t, C y, C sig) => T sig t y -> t -> sig t -> sig y -> sig y
multiRelativeCyclicPad :: (C t, C t, C y, C sig) => T sig t y -> t -> sig t -> sig y -> sig y
multiRelativeExtrapolationPad :: (C t, C t, C y, C sig) => T sig t y -> t -> sig t -> sig y -> sig y
multiRelativeZeroPadConstant :: (C t, C y, C t, C y, C sig) => t -> sig t -> sig y -> sig y
multiRelativeZeroPadLinear :: (C t, C t y, C t, C y, C sig) => t -> sig t -> sig y -> sig y
multiRelativeZeroPadCubic :: (C t, C t y, C t, C y, C sig) => t -> sig t -> sig y -> sig y
data PrefixReader sig a = PrefixReader Int (StateT sig Maybe a)
getNode :: (C y, C sig) => PrefixReader (sig y) y
fromPrefixReader :: (C y, C sig) => String -> Int -> PrefixReader (sig y) (t -> y) -> T sig t y
constant :: (C y, C sig) => T sig t y
linear :: (C t y, C y, C sig) => T sig t y
cubic :: (C t, C t y, C y, C sig) => T sig t y
cubicAlt :: (C t, C t y, C y, C sig) => T sig t y
cubicHalf :: C t y => t -> y -> y -> y
piecewise :: (C t y, C t, C y, C sig) => Int -> [t -> t] -> T sig t y
piecewiseConstant :: (C t y, C t, C y, C sig) => T sig t y
piecewiseLinear :: (C t y, C t, C y, C sig) => T sig t y
piecewiseCubic :: (C t, C t y, C t, C y, C sig) => T sig t y
function :: (C t y, C t, C y, C sig) => (Int, Int) -> (t -> t) -> T sig t y
linearComb :: (C sig, C t, C y, C t y) => sig t -> sig y -> y
delayPad :: (C y, C sig) => y -> Int -> sig y -> sig y
Documentation
data T sig t y Source
interpolation as needed for resampling
Constructors
Cons
number :: Int
offset :: Int
func :: t -> sig y -> y
Interpolation with various padding methods
zeroPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> y -> T sig t y -> t -> sig y -> aSource
constantPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> T sig t y -> t -> sig y -> aSource
cyclicPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> T sig t y -> t -> sig y -> aSource
extrapolationPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> T sig t y -> t -> sig y -> aSource
Interpolation of multiple values with various padding methods
skip :: (C t, C y, C sig) => T sig t y -> (t, sig y) -> (t, sig y)Source
single :: (C t, C y, C sig) => T sig t y -> t -> sig y -> ySource
Interpolation of multiple values with various padding methods
multiRelative :: (C t, C t, C y, C sig) => T sig t y -> t -> sig y -> sig t -> sig ySource
multiRelativeZeroPad :: (C t, C t, C y, C sig) => y -> T sig t y -> t -> sig t -> sig y -> sig ySource
multiRelativeConstantPad :: (C t, C t, C y, C sig) => T sig t y -> t -> sig t -> sig y -> sig ySource
multiRelativeCyclicPad :: (C t, C t, C y, C sig) => T sig t y -> t -> sig t -> sig y -> sig ySource
multiRelativeExtrapolationPad :: (C t, C t, C y, C sig) => T sig t y -> t -> sig t -> sig y -> sig ySource
All-in-one interpolation functions
multiRelativeZeroPadConstant :: (C t, C y, C t, C y, C sig) => t -> sig t -> sig y -> sig ySource
multiRelativeZeroPadLinear :: (C t, C t y, C t, C y, C sig) => t -> sig t -> sig y -> sig ySource
multiRelativeZeroPadCubic :: (C t, C t y, C t, C y, C sig) => t -> sig t -> sig y -> sig ySource
Different kinds of interpolation
Hard-wired interpolations
data PrefixReader sig a Source
Constructors
PrefixReader Int (StateT sig Maybe a)
show/hide Instances
getNode :: (C y, C sig) => PrefixReader (sig y) ySource
fromPrefixReader :: (C y, C sig) => String -> Int -> PrefixReader (sig y) (t -> y) -> T sig t ySource
constant :: (C y, C sig) => T sig t ySource
linear :: (C t y, C y, C sig) => T sig t ySource
cubic :: (C t, C t y, C y, C sig) => T sig t ySource
cubicAlt :: (C t, C t y, C y, C sig) => T sig t ySource
cubicHalf :: C t y => t -> y -> y -> ySource
Interpolation based on piecewise defined functions
piecewise :: (C t y, C t, C y, C sig) => Int -> [t -> t] -> T sig t ySource
piecewiseConstant :: (C t y, C t, C y, C sig) => T sig t ySource
piecewiseLinear :: (C t y, C t, C y, C sig) => T sig t ySource
piecewiseCubic :: (C t, C t y, C t, C y, C sig) => T sig t ySource
Interpolation based on arbitrary functions
functionSource
:: (C t y, C t, C y, C sig)
=> (Int, Int)(left extent, right extent), e.g. (1,1) for linear hat
-> t -> t
-> T sig t y
linearComb :: (C sig, C t, C y, C t y) => sig t -> sig y -> ySource
Helper functions
delayPad :: (C y, C sig) => y -> Int -> sig y -> sig ySource
Produced by Haddock version 2.3.0