Portability | requires multi-parameter type classes |
---|---|

Stability | provisional |

Maintainer | synthesizer@henning-thielemann.de |

- newtype Parameter a = Parameter [a]
- shiftParam :: (Scalar a, Fractional a, C a) => Int -> a -> a -> Parameter a
- makePhase :: C a => Parameter a -> a -> a
- scalarProdScrewExp :: C a => a -> Int -> a -> Int -> Int -> a
- screwProd :: C a => Int -> a -> Int -> Int -> a -> a
- integrateScrewExp :: C a => a -> Int -> (a, a)
- integrateNum :: (C a, C a v) => Int -> (a, a) -> (a -> v) -> v

# Documentation

shiftParam :: (Scalar a, Fractional a, C a) => Int -> a -> a -> Parameter aSource

Compute coefficients for an allpass that shifts low frequencies by approximately the shift you want. To achieve this we solve a linear least squares problem, where low frequencies are more weighted than high ones. The output is a list of coefficients for an arbitrary order allpass.

integrateScrewExp :: C a => a -> Int -> (a, a)Source

integrateNum :: (C a, C a v) => Int -> (a, a) -> (a -> v) -> vSource