Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type T c t y = T (c, SamplePhase t) y
- simple :: Primitive cAmp => amp -> (c -> T t y) -> T (T cAmp c) t (T amp y)
- flat :: (C y, Primitive cAmp) => (c -> T t y) -> T (T cAmp c) t (Flat y)
- abstract :: Primitive cAmp => (c -> T t y) -> T (T cAmp c) t (Abstract y)
- amplified :: (C y, C u, Primitive cAmp) => T u y -> (c -> T t y) -> T (T cAmp c) t (Dimensional u y y)
- mapLinear :: (C y, C u, Primitive cAmp) => y -> T u y -> (c -> T t y) -> T (T cAmp c) t (Dimensional u y y)
- mapExponential :: (C y, C u, Primitive cAmp) => y -> T u y -> (c -> T t y) -> T (T cAmp c) t (Dimensional u y y)
- sampledTone :: (C t, Transform sig y, C u) => T t y -> T t y -> T u t -> T (Dimensional u t) amp (sig y) -> T (Flat t) t (T amp y)
Documentation
type T c t y = T (c, SamplePhase t) y Source #
We define a dimensional parametrized waveform in terms of a Map.
This allows any kind and number of control parameters
and distortion of waveforms using (distortion <<<)
amplified :: (C y, C u, Primitive cAmp) => T u y -> (c -> T t y) -> T (T cAmp c) t (Dimensional u y y) Source #
mapLinear :: (C y, C u, Primitive cAmp) => y -> T u y -> (c -> T t y) -> T (T cAmp c) t (Dimensional u y y) Source #
mapExponential :: (C y, C u, Primitive cAmp) => y -> T u y -> (c -> T t y) -> T (T cAmp c) t (Dimensional u y y) Source #
sampledTone :: (C t, Transform sig y, C u) => T t y -> T t y -> T u t -> T (Dimensional u t) amp (sig y) -> T (Flat t) t (T amp y) Source #
Interpolate first within waves and then across waves, which is simpler but maybe less efficient for lists. However for types with fast indexing/drop like StorableVector this is optimal.