Sound.Hommage.FFT
 Contents FFT FFT
Description
This module implements the Fast Fourier Transformation purely in Haskell.
Synopsis
 fft :: Int -> [Double] -> [[Complex Double]] fft' :: Int -> [Complex Double] -> [Double] fftt :: Int -> ([[Complex Double]] -> [Complex Double]) -> [Double] -> [Double] fftc :: Int -> [Complex Double] -> [[Complex Double]] fftc' :: Int -> [Complex Double] -> [[Complex Double]] ffttv :: Int -> [Double] -> [Double] -> [Double] fftco :: Int -> [Complex Double] -> [[Complex Double]] fftco' :: Int -> [Complex Double] -> [Complex Double] rect_transform :: Floating a => Int -> [a] -> [[a]] rect_filter :: Floating a => Int -> ([[a]] -> [[a]]) -> [a] -> [a] rect_filter' :: Floating a => Int -> [[a]] -> [a] -> [a] i :: Complex Double w :: Int -> Complex Double ws :: Bool -> Int -> [Complex Double] map2 :: (a -> a -> b) -> [a] -> [b] zip2 :: [a] -> [a] -> [a] evens odds drop_odds appendpair :: ([a], [a]) -> [a] reorder :: Int -> [[a]] -> [[a]] reorder_init reorder_init' :: [a] -> [[a]] butterfly :: Complex Double -> Complex Double -> Complex Double -> (Complex Double, Complex Double) butterfly' :: Complex Double -> Complex Double -> Complex Double -> (Complex Double, Complex Double) fft_level :: [Complex Double] -> [[Complex Double]] -> [[Complex Double]] fft_merge :: [Complex Double] -> [Complex Double] -> [Complex Double] -> ([Complex Double], [Complex Double]) fft_init_overlap fft_level' :: [Complex Double] -> [[Complex Double]] -> [[Complex Double]] fft_merge' :: [Complex Double] -> [Complex Double] -> [Complex Double] -> ([Complex Double], [Complex Double]) fft_init fft_overlap_loop expandComplex overlap_curve :: Int -> [Double] mix_overlap :: Int -> [[Double]] -> [Double]
FFT
 fft :: Int -> [Double] -> [[Complex Double]] Source
FFT transformation. Input is grouped into overlapping parts of 2^(N+2) reals and mapped to sublists with 2^(N+1) complex numbers.
 fft' :: Int -> [Complex Double] -> [Double] Source
Inverse FFT transformation. Complex input is grouped into parts with length 2^(N+1) and mapped to sublists with 2^(N+2) reals, which are overlapped and mixed.
 fftt :: Int -> ([[Complex Double]] -> [Complex Double]) -> [Double] -> [Double] Source
FFT transformation with overlapping and windowing. Argument function maps the coefficients. Windowsize: 2^(N+2), i. e. 2^(N+1) coefficients
FFT
 fftc :: Int -> [Complex Double] -> [[Complex Double]] Source
FFT transformation for complex input (segments of length 2^n). No overlapping or windowing.
 fftc' :: Int -> [Complex Double] -> [[Complex Double]] Source
Inverse FFT transformation for complex input (segments of length 2^n). No overlapping or windowing.
 ffttv :: Int -> [Double] -> [Double] -> [Double] Source
 fftco :: Int -> [Complex Double] -> [[Complex Double]] Source
FFT for complex input with overlapping. Segment-size: 2^(n+1)
 fftco' :: Int -> [Complex Double] -> [Complex Double] Source
 rect_transform :: Floating a => Int -> [a] -> [[a]] Source
A self-inverse transformation similar to FFT but with a simple butterfly operation that uses always W=1. Modifying the data between application and inverse is similar to filtering but the result will be built up from rectangle waves instead of sinus waves.
 rect_filter :: Floating a => Int -> ([[a]] -> [[a]]) -> [a] -> [a] Source
 rect_filter' :: Floating a => Int -> [[a]] -> [a] -> [a] Source
 i :: Complex Double Source
The complex value i = (0 :+ 1)
 w :: Int -> Complex Double Source
The n-th root of 1
 ws :: Bool -> Int -> [Complex Double] Source
the 2n-th root with exponents 0, 1, .. n. False=inverse (exponents are negated)
 map2 :: (a -> a -> b) -> [a] -> [b] Source
 zip2 :: [a] -> [a] -> [a] Source
evens
odds
drop_odds
 appendpair :: ([a], [a]) -> [a] Source
returns [] if argument has zero or one element.
 reorder :: Int -> [[a]] -> [[a]] Source
list is grouped into sublists with length N (must be power of 2) and bitwise reverse order
reorder_init
 reorder_init' :: [a] -> [[a]] Source
 butterfly :: Complex Double -> Complex Double -> Complex Double -> (Complex Double, Complex Double) Source
 butterfly' :: Complex Double -> Complex Double -> Complex Double -> (Complex Double, Complex Double) Source
 fft_level :: [Complex Double] -> [[Complex Double]] -> [[Complex Double]] Source
 fft_merge :: [Complex Double] -> [Complex Double] -> [Complex Double] -> ([Complex Double], [Complex Double]) Source
fft_init_overlap
 fft_level' :: [Complex Double] -> [[Complex Double]] -> [[Complex Double]] Source
 fft_merge' :: [Complex Double] -> [Complex Double] -> [Complex Double] -> ([Complex Double], [Complex Double]) Source
fft_init
fft_overlap_loop
expandComplex
 overlap_curve :: Int -> [Double] Source
Creates a fade with length N
 mix_overlap :: Int -> [[Double]] -> [Double] Source
Overlaps a sequence of parts of length N (overlaps by N/2).
Produced by Haddock version 2.4.2