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

Stability | provisional |

Maintainer | synthesizer@henning-thielemann.de |

- accumulateDownsample2Strict :: Storable v => (v -> v -> v) -> Maybe v -> Vector v -> (Maybe v, Vector v)
- accumulateDownsample2 :: Storable v => (v -> v -> v) -> T v -> T v
- sumsDownsample2 :: (C v, Storable v) => T v -> T v
- sumsDownsample2Alt :: (C v, Storable v) => T v -> T v
- convolveDownsample2 :: (C a v, Storable a, Storable v) => T a -> T v -> T v
- halfLazySize :: T ChunkSize -> T ChunkSize
- downsample2Strict :: Storable v => Int -> Vector v -> Vector v
- laxTailStrict :: Storable v => Vector v -> Vector v
- downsample2 :: Storable v => T v -> T v
- pyramid :: Storable v => (v -> v -> v) -> Int -> T v -> [T v]
- accumulatePosModulatedPyramid :: Storable v => ([T v] -> (Int, Int) -> v) -> ([Int], [T v]) -> T (Int, Int) -> T v
- sumsPosModulatedPyramid :: (C v, Storable v) => Int -> T (Int, Int) -> T v -> T v
- accumulateBinPosModulatedPyramid :: Storable v => (v -> v -> v) -> Int -> T (Int, Int) -> T v -> T v
- movingAverageModulatedPyramid :: (C a, C a v, Storable Int, Storable v) => a -> Int -> Int -> T Int -> T v -> T v
- movingAccumulateModulatedPyramid :: Storable v => (v -> v -> v) -> v -> Int -> Int -> T Int -> T v -> T v
- inverseFrequencyModulationFloor :: (Storable v, Read sig t, C t, Ord t) => ChunkSize -> sig t -> T v -> T v
- inverseFrequencyModulationChunk :: (Storable v, C t, Ord t) => ChunkSize -> (s -> Maybe (t, s)) -> (t, s) -> Vector v -> (T v, Maybe (t, s))

# Documentation

accumulateDownsample2Strict :: Storable v => (v -> v -> v) -> Maybe v -> Vector v -> (Maybe v, Vector v)Source

The Maybe type carries an unpaired value from one block to the next one.

accumulateDownsample2 :: Storable v => (v -> v -> v) -> T v -> T vSource

laxTailStrict :: Storable v => Vector v -> Vector vSource

downsample2 :: Storable v => T v -> T vSource

accumulatePosModulatedPyramid :: Storable v => ([T v] -> (Int, Int) -> v) -> ([Int], [T v]) -> T (Int, Int) -> T vSource

Moving average, where window bounds must be always non-negative.

The laziness granularity is `2^height`

.

This function is only slightly more efficient than its counterpart from Generic.Filter, since it generates strict blocks and not one-block chunky signals.

accumulateBinPosModulatedPyramid :: Storable v => (v -> v -> v) -> Int -> T (Int, Int) -> T v -> T vSource

movingAverageModulatedPyramid :: (C a, C a v, Storable Int, Storable v) => a -> Int -> Int -> T Int -> T v -> T vSource

The first argument is the amplification. The main reason to introduce it, was to have only a Module constraint instead of Field. This way we can also filter stereo signals.

movingAccumulateModulatedPyramid :: Storable v => (v -> v -> v) -> v -> Int -> Int -> T Int -> T v -> T vSource

inverseFrequencyModulationFloor :: (Storable v, Read sig t, C t, Ord t) => ChunkSize -> sig t -> T v -> T vSource

The function is like that of
`Synthesizer.State.Filter.NonRecursive.inverseFrequencyModulationFloor`

,
but this function preserves in a sense the chunk structure.

The result will have laziness breaks at least at the chunk boundaries that correspond to the breaks in the input signal. However we insert more breaks, such that a maximum chunk size can be warrented. (Since control and input signal are aligned in time, we might as well use the control chunk structure. Currently I do not know what is better. For the above example it doesn't matter.)

This function cannot be written using generic functions, since we have to inspect the chunks individually.