Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
A warp is a mapping from the space [0,1]
to a user defined space [l,r]
.
Synopsis
- type Warp_f t = t -> t -> t -> t
- warp_lin :: Fractional t => Warp_f t
- warp_lin_inv :: Fractional t => Warp_f t
- warp_exp :: Floating a => Warp_f a
- warp_exp_inv :: Floating a => Warp_f a
- warp_cos :: Floating t => Warp_f t
- warp_cos_inv :: Floating a => Warp_f a
- warp_sin :: Floating t => Warp_f t
- warp_sin_inv :: Floating t => Warp_f t
- warp_amp :: Num a => Warp_f a
- warp_amp_inv :: Floating a => Warp_f a
- warp_db :: (Eq a, Floating a) => Warp_f a
- warp_db_inv :: Floating a => Warp_f a
- warp_curve :: (Ord a, Floating a) => a -> Warp_f a
- warp_curve_inv :: (Ord a, Floating a) => a -> Warp_f a
- warp_named :: (Floating t, RealFrac t) => String -> Maybe (Warp_f t, Warp_f t)
Documentation
warp_lin :: Fractional t => Warp_f t Source #
Linear real value map.
map (warp_lin 1 2) [0,1/2,1] == [1,3/2,2] map (warp_lin (-1) 1) [0,1/2,1] == [-1,0,1]
warp_lin_inv :: Fractional t => Warp_f t Source #
Inverse of warp_lin
map (warp_lin_inv 1 2) [1,3/2,2] == [0,1/2,1] map (warp_lin_inv (-1) 1) [-1,0,1] == [0,1/2,1]
warp_exp :: Floating a => Warp_f a Source #
The left and right must both be non zero and have the same sign.
map (warp_exp 1 2) [0,0.5,1] == [1,2 ** 0.5,2] import Sound.Sc3.Plot plot_p1_ln [map (warp_exp 1 2) [0,0.01 .. 1]]
warp_exp_inv :: Floating a => Warp_f a Source #
warp_cos :: Floating t => Warp_f t Source #
Cosine warp
map (warp_cos 1 2) [0,0.25,0.5,0.75,1] plot_p1_ln [map (warp_cos 1 2) [0,0.01 .. 1]]
warp_cos_inv :: Floating a => Warp_f a Source #
warp_sin :: Floating t => Warp_f t Source #
Sine warp
map (warp_sin 1 2) [0,0.25,0.5,0.75,1] plot_p1_ln [map (warp_sin 1 2) [0,0.01 .. 1]]
warp_sin_inv :: Floating t => Warp_f t Source #
warp_amp :: Num a => Warp_f a Source #
Fader warp. Left and right values are ordinarily zero and one.
map (warp_amp 0 1) [0,0.5,1] == [0,0.25,1]
plot_p1_ln [map (warp_amp 0 2) [0,0.01 .. 1]] plot_p1_ln [map (warp_amp_inv 0 1 . warp_amp 0 1) [0,0.01 .. 1]]
warp_amp_inv :: Floating a => Warp_f a Source #
warp_db :: (Eq a, Floating a) => Warp_f a Source #
DB fader warp. Left and right values are ordinarily negative
infinity and zero. An input of 0
gives -180
.
map (round . warp_db (-180) 0) [0,0.5,1] == [-180,-12,0]
plot_p1_ln [map (warp_db (-60) 0) [0,0.01 .. 1]] plot_p1_ln [map (warp_db_inv 0 60) [0 .. 60]]
warp_db_inv :: Floating a => Warp_f a Source #
warp_curve :: (Ord a, Floating a) => a -> Warp_f a Source #
A curve warp given by a real n.
warp_curve (-3) 1 2 0.25 == 1.5552791692202022 warp_curve (-3) 1 2 0.50 == 1.8175744761936437
plot_p1_ln [map (warp_curve (-3) 1 2) [0,0.01 .. 1]] plot_p1_ln (map (\c -> map (warp_curve c 1 2) [0,0.01 .. 1]) [0,3,6,9]) plot_p1_ln [map (warp_curve_inv 7 20 20000 . warp_curve 7 20 20000) [0,0.01 .. 1]]
warp_named :: (Floating t, RealFrac t) => String -> Maybe (Warp_f t, Warp_f t) Source #
Select warp functions by name. Numerical names are interpreted as curve values for warpCurve
.
let Just w = warp_named "lin" let Just w = warp_named "-3" let Just w = warp_named "6" plot_p1_ln [map ((fst w) 1 2) [0,0.01 .. 1]]