synthesizer-core-0.6: Audio signal processing coded in Haskell: Low level part

Safe HaskellNone

Synthesizer.Plain.Analysis

Contents

Synopsis

Notions of volume

volumeMaximum :: C y => T y -> ySource

Volume based on Manhattan norm.

volumeEuclidean :: C y => T y -> ySource

Volume based on Energy norm.

volumeSum :: (C y, C y) => T y -> ySource

Volume based on Sum norm.

volumeVectorMaximum :: (C y yv, Ord y) => T yv -> ySource

Volume based on Manhattan norm.

volumeVectorEuclidean :: (C y, C y yv) => T yv -> ySource

Volume based on Energy norm.

volumeVectorEuclideanSqr :: (C y, Sqr y yv) => T yv -> ySource

volumeVectorSum :: (C y yv, C y) => T yv -> ySource

Volume based on Sum norm.

bounds :: Ord y => T y -> (y, y)Source

Compute minimum and maximum value of the stream the efficient way. Input list must be non-empty and finite.

Miscellaneous

histogramDiscreteArray :: T Int -> (Int, T Int)Source

Input list must be finite. List is scanned twice, but counting may be faster.

histogramLinearArray :: C y => T y -> (Int, T y)Source

Input list must be finite. If the input signal is empty, the offset is undefined. List is scanned twice, but counting may be faster. The sum of all histogram values is one less than the length of the signal.

histogramDiscreteIntMap :: T Int -> (Int, T Int)Source

Input list must be finite. If the input signal is empty, the offset is undefined. List is scanned once, counting may be slower.

histogramLinearIntMap :: C y => T y -> (Int, T y)Source

histogramIntMap :: C y => y -> T y -> (Int, T Int)Source

quantize :: C y => y -> T y -> T IntSource

attachOne :: T i -> T (i, Int)Source

meanValues :: C y => T y -> [(Int, y)]Source

spread :: C y => (y, y) -> [(Int, y)]Source

directCurrentOffset :: C y => T y -> ySource

Requires finite length. This is identical to the arithmetic mean.

scalarProduct :: C y => T y -> T y -> ySource

centroid :: C y => T y -> ySource

directCurrentOffset must be non-zero.

centroidAlt :: C y => T y -> ySource

firstMoment :: C y => T y -> ySource

average :: C y => T y -> ySource

rectify :: C y => T y -> T ySource

zeros :: (Ord y, C y) => T y -> T BoolSource

Detects zeros (sign changes) in a signal. This can be used as a simple measure of the portion of high frequencies or noise in the signal. It ca be used as voiced/unvoiced detector in a vocoder.

zeros x !! n is True if and only if (x !! n >= 0) /= (x !! (n+1) >= 0). The result will be one value shorter than the input.

flipFlopHysteresis :: Ord y => (y, y) -> BinaryLevel -> T y -> T BinaryLevelSource

Detect thresholds with a hysteresis.

chirpTransform :: C y => y -> T y -> T ySource

Almost naive implementation of the chirp transform, a generalization of the Fourier transform.

More sophisticated algorithms like Rader, Cooley-Tukey, Winograd, Prime-Factor may follow.

binarySign :: (Ord y, C y) => T y -> T BinaryLevelSource

deltaSigmaModulation :: C y => T y -> T BinaryLevelSource

A kind of discretization for signals with sample values between -1 and 1. If you smooth the resulting signal (after you transformed with 'map binaryLevelToNumber'), you should obtain an approximation to the input signal.

deltaSigmaModulationPositive :: C y => y -> T y -> T ySource

A kind of discretization for signals with sample values between 0 and a threshold. We accumulate input values and emit a threshold value whenever the accumulator exceeds the threshold. This is intended for generating clicks from input noise.

See also deltaSigmaModulation.