hommage-0.0.5: Haskell Offline Music Manipulation And Generation EDSLSource codeContentsIndex
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 DoubleSource
The complex value i = (0 :+ 1)
w :: Int -> Complex DoubleSource
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