|
Synthesizer.Generic.Interpolation |
|
|
|
|
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 {} | | 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 |
|
|
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 -> a | Source |
|
|
constantPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> T sig t y -> t -> sig y -> a | Source |
|
|
cyclicPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> T sig t y -> t -> sig y -> a | Source |
|
|
extrapolationPad :: (C t, C y, C sig) => (T sig t y -> t -> sig y -> a) -> T sig t y -> t -> sig y -> a | Source |
|
|
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 -> y | Source |
|
|
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 y | Source |
|
|
multiRelativeZeroPad :: (C t, C t, C y, C sig) => y -> T sig t y -> t -> sig t -> sig y -> sig y | Source |
|
|
multiRelativeConstantPad :: (C t, C t, C y, C sig) => T sig t y -> t -> sig t -> sig y -> sig y | Source |
|
|
multiRelativeCyclicPad :: (C t, C t, C y, C sig) => T sig t y -> t -> sig t -> sig y -> sig y | Source |
|
|
multiRelativeExtrapolationPad :: (C t, C t, C y, C sig) => T sig t y -> t -> sig t -> sig y -> sig y | Source |
|
|
All-in-one interpolation functions
|
|
multiRelativeZeroPadConstant :: (C t, C y, C t, C y, C sig) => t -> sig t -> sig y -> sig y | Source |
|
|
multiRelativeZeroPadLinear :: (C t, C t y, C t, C y, C sig) => t -> sig t -> sig y -> sig y | Source |
|
|
multiRelativeZeroPadCubic :: (C t, C t y, C t, C y, C sig) => t -> sig t -> sig y -> sig y | Source |
|
|
Different kinds of interpolation
|
|
Hard-wired interpolations
|
|
data PrefixReader sig a | Source |
|
Constructors | | Instances | |
|
|
|
|
|
|
|
|
|
|
|
|
cubicAlt :: (C t, C t y, C y, C sig) => T sig t y | Source |
|
|
cubicHalf :: C t y => t -> y -> y -> y | Source |
|
|
Interpolation based on piecewise defined functions
|
|
piecewise :: (C t y, C t, C y, C sig) => Int -> [t -> t] -> T sig t y | Source |
|
|
piecewiseConstant :: (C t y, C t, C y, C sig) => T sig t y | Source |
|
|
piecewiseLinear :: (C t y, C t, C y, C sig) => T sig t y | Source |
|
|
piecewiseCubic :: (C t, C t y, C t, C y, C sig) => T sig t y | Source |
|
|
Interpolation based on arbitrary functions
|
|
|
:: (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 -> y | Source |
|
|
Helper functions
|
|
delayPad :: (C y, C sig) => y -> Int -> sig y -> sig y | Source |
|
|
Produced by Haddock version 2.3.0 |