hommage-0.0.5: doc/Sound.Hommage.WavFile.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><TITLE
>Sound.Hommage.WavFile</TITLE
><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"
></HEAD
><BODY
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "topbar"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD
><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "
></TD
><TD CLASS = "title"
></TD
><TD CLASS = "topbut"
><A HREF = "Sound.Hommage.html"
>Parent</A
></TD
><TD CLASS = "topbut"
><A HREF = "index.html"
>Contents</A
></TD
><TD CLASS = "topbut"
><A HREF = "doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "modulebar"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD
><FONT SIZE = "6"
>Sound.Hommage.WavFile</FONT
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF = "#1"
> Binary Files</A
></DT
><DT
><A HREF = "#2"
> WAV-Files</A
></DT
><DT
><A HREF = "#3"
> Cast between Int16 and Double representation of WAV-data</A
></DT
><DT
><A HREF = "#4"
> Low-Level implemetation </A
></DT
><DD
><DL
><DT
><A HREF = "#5"
> Arrays and Files</A
></DT
><DT
><A HREF = "#6"
> Single Stream</A
></DT
><DT
><A HREF = "#7"
> Buffered Stream</A
></DT
><DT
><A HREF = "#8"
> Header Stuff and others</A
></DT
></DL
></DD
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
>Synopsis</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwriteDataFile"
>writeDataFile</A
> :: (Storable a) => FilePath -> [a] -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AreadDataFile"
>readDataFile</A
> :: (Storable a) => FilePath -> IO [a]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenDataFile"
>openDataFile</A
> :: (Storable a) => FilePath -> [a]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwriteWavFile"
>writeWavFile</A
> :: FilePath -> Either [Int16] [(Int16, Int16)] -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwriteWavFileMono"
>writeWavFileMono</A
> :: FilePath -> [Int16] -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwriteWavFileStereo"
>writeWavFileStereo</A
> :: FilePath -> [(Int16, Int16)] -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AreadWavFile"
>readWavFile</A
> :: FilePath -> IO (Either [Int16] [(Int16, Int16)])</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenWavFile"
>openWavFile</A
> :: FilePath -> Either [Int16] [(Int16, Int16)]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwriteWavFiles"
>writeWavFiles</A
> :: FilePath -> String -> [Either [Int16] [(Int16, Int16)]] -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwavInt16ToDouble"
>wavInt16ToDouble</A
> :: Int16 -> Double</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwavDoubleToInt16"
>wavDoubleToInt16</A
> :: Double -> Int16</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AreadArrayFromFile"
>readArrayFromFile</A
> :: (Storable a) => <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderSize"
>HeaderSize</A
> -> FilePath -> IO (StorableArray Int a, Int)</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwriteArrayToFileWithHeader"
>writeArrayToFileWithHeader</A
> :: (MArray StorableArray a IO, Storable a) => <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
> -> FilePath -> StorableArray Int a -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwriteArrayToFile"
>writeArrayToFile</A
> :: (MArray StorableArray a IO, Storable a) => FilePath -> StorableArray Int a -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenSingleInputFile"
>openSingleInputFile</A
> :: (Storable a) => Int -> <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderSize"
>HeaderSize</A
> -> FilePath -> IO (IO (), IO (Maybe a), Int)</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenSingleOutputFile"
>openSingleOutputFile</A
> :: (Storable a) => Int -> FilePath -> IO (IO (), a -> IO ())</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenSingleInputWavFile"
>openSingleInputWavFile</A
> :: Int -> FilePath -> IO (IO (), Either (IO (Maybe Int16)) (IO (Maybe (Int16, Int16))), Int)</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenSingleOutputWavFileMono"
>openSingleOutputWavFileMono</A
> :: Int -> FilePath -> IO (IO (), Int16 -> IO ())</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenSingleOutputWavFileStereo"
>openSingleOutputWavFileStereo</A
> :: Int -> FilePath -> IO (IO (), (Int16, Int16) -> IO ())</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenInputFile"
>openInputFile</A
> :: (Storable a) => <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderSize"
>HeaderSize</A
> -> FilePath -> Int -> IO (IO (), StorableArray Int a -> Int -> IO Int, Int)</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenOutputFile"
>openOutputFile</A
> :: (Storable a) => FilePath -> IO (IO (), StorableArray Int a -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenOutputFileWithHeader"
>openOutputFileWithHeader</A
> :: (Storable a) => <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
> -> FilePath -> IO (IO (), StorableArray Int a -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenInputWavFile"
>openInputWavFile</A
> :: FilePath -> IO (IO (), StorableArray Int Int16 -> Int -> IO (), Int, Bool)</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenOutputWavFileMono"
>openOutputWavFileMono</A
> :: FilePath -> IO (IO (), StorableArray Int Int16 -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AopenOutputWavFileStereo"
>openOutputWavFileStereo</A
> :: FilePath -> IO (IO (), StorableArray Int Int16 -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A HREF = "#t%3AHeaderFun"
>HeaderFun</A
> = (Handle -> IO (), Handle -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A HREF = "#t%3AHeaderSize"
>HeaderSize</A
> = Int</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AnoHeader"
>noHeader</A
> :: <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwavHeaderFunMono"
>wavHeaderFunMono</A
> :: <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwavHeaderFunStereo"
>wavHeaderFunStereo</A
> :: <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AwavHeaderSize"
>wavHeaderSize</A
> :: <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderSize"
>HeaderSize</A
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AinitWriteWavHeaderMono"
>initWriteWavHeaderMono</A
> :: Handle -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AinitWriteWavHeaderStereo"
>initWriteWavHeaderStereo</A
> :: Handle -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AinitReadWavHeader"
>initReadWavHeader</A
> :: Handle -> IO (Maybe (Bool, Int, Int, Int))</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AcloseWriteWavHeader"
>closeWriteWavHeader</A
> :: Handle -> Int -> IO ()</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3Aencode"
>encode</A
> :: Int -> String</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3Adecode"
>decode</A
> :: String -> Int</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AencodeWavLengt"
>encodeWavLengt</A
> :: Int -> (String, String)</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AinitWavHeaderMono"
>initWavHeaderMono</A
> :: [Char]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AinitWavHeaderStereo"
>initWavHeaderStereo</A
> :: [Char]</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AsizeOfArrayElements"
>sizeOfArrayElements</A
> :: (Storable a) => StorableArray Int a -> Int</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AinferSizeOfArrayElements"
>inferSizeOfArrayElements</A
> :: (Storable a) => (StorableArray Int a -> IO Int) -> StorableArray Int a -> Int</TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3AinferSizeOfArrayElements'"
>inferSizeOfArrayElements'</A
> :: (Storable a) => (StorableArray Int a -> Int -> IO ()) -> StorableArray Int a -> Int</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "1"
> Binary Files</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwriteDataFile"
></A
><B
>writeDataFile</B
> :: (Storable a) => FilePath -> [a] -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AreadDataFile"
></A
><B
>readDataFile</B
> :: (Storable a) => FilePath -> IO [a]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenDataFile"
></A
><B
>openDataFile</B
> :: (Storable a) => FilePath -> [a]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "2"
> WAV-Files</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwriteWavFile"
></A
><B
>writeWavFile</B
> :: FilePath -> Either [Int16] [(Int16, Int16)] -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwriteWavFileMono"
></A
><B
>writeWavFileMono</B
> :: FilePath -> [Int16] -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwriteWavFileStereo"
></A
><B
>writeWavFileStereo</B
> :: FilePath -> [(Int16, Int16)] -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AreadWavFile"
></A
><B
>readWavFile</B
> :: FilePath -> IO (Either [Int16] [(Int16, Int16)])</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenWavFile"
></A
><B
>openWavFile</B
> :: FilePath -> Either [Int16] [(Int16, Int16)]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwriteWavFiles"
></A
><B
>writeWavFiles</B
> :: FilePath -> String -> [Either [Int16] [(Int16, Int16)]] -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "3"
> Cast between Int16 and Double representation of WAV-data</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwavInt16ToDouble"
></A
><B
>wavInt16ToDouble</B
> :: Int16 -> Double</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwavDoubleToInt16"
></A
><B
>wavDoubleToInt16</B
> :: Double -> Int16</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "4"
> Low-Level implemetation </A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section2"
><A NAME = "5"
> Arrays and Files</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AreadArrayFromFile"
></A
><B
>readArrayFromFile</B
> :: (Storable a) => <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderSize"
>HeaderSize</A
> -> FilePath -> IO (StorableArray Int a, Int)</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwriteArrayToFileWithHeader"
></A
><B
>writeArrayToFileWithHeader</B
> :: (MArray StorableArray a IO, Storable a) => <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
> -> FilePath -> StorableArray Int a -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwriteArrayToFile"
></A
><B
>writeArrayToFile</B
> :: (MArray StorableArray a IO, Storable a) => FilePath -> StorableArray Int a -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section2"
><A NAME = "6"
> Single Stream</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenSingleInputFile"
></A
><B
>openSingleInputFile</B
> :: (Storable a) => Int -> <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderSize"
>HeaderSize</A
> -> FilePath -> IO (IO (), IO (Maybe a), Int)</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenSingleOutputFile"
></A
><B
>openSingleOutputFile</B
> :: (Storable a) => Int -> FilePath -> IO (IO (), a -> IO ())</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenSingleInputWavFile"
></A
><B
>openSingleInputWavFile</B
> :: Int -> FilePath -> IO (IO (), Either (IO (Maybe Int16)) (IO (Maybe (Int16, Int16))), Int)</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenSingleOutputWavFileMono"
></A
><B
>openSingleOutputWavFileMono</B
> :: Int -> FilePath -> IO (IO (), Int16 -> IO ())</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenSingleOutputWavFileStereo"
></A
><B
>openSingleOutputWavFileStereo</B
> :: Int -> FilePath -> IO (IO (), (Int16, Int16) -> IO ())</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section2"
><A NAME = "7"
> Buffered Stream</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenInputFile"
></A
><B
>openInputFile</B
> :: (Storable a) => <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderSize"
>HeaderSize</A
> -> FilePath -> Int -> IO (IO (), StorableArray Int a -> Int -> IO Int, Int)</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenOutputFile"
></A
><B
>openOutputFile</B
> :: (Storable a) => FilePath -> IO (IO (), StorableArray Int a -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenOutputFileWithHeader"
></A
><B
>openOutputFileWithHeader</B
> :: (Storable a) => <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
> -> FilePath -> IO (IO (), StorableArray Int a -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenInputWavFile"
></A
><B
>openInputWavFile</B
> :: FilePath -> IO (IO (), StorableArray Int Int16 -> Int -> IO (), Int, Bool)</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenOutputWavFileMono"
></A
><B
>openOutputWavFileMono</B
> :: FilePath -> IO (IO (), StorableArray Int Int16 -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AopenOutputWavFileStereo"
></A
><B
>openOutputWavFileStereo</B
> :: FilePath -> IO (IO (), StorableArray Int Int16 -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section2"
><A NAME = "8"
> Header Stuff and others</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A NAME = "t%3AHeaderFun"
></A
><B
>HeaderFun</B
> = (Handle -> IO (), Handle -> Int -> IO ())</TD
></TR
><TR
><TD CLASS = "doc"
> The first Action is applied after opening the file. Then the data
bytes are written. The second Action is then called with the number of
bytes of the data. It must close the handle. </TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>type</SPAN
> <A NAME = "t%3AHeaderSize"
></A
><B
>HeaderSize</B
> = Int</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AnoHeader"
></A
><B
>noHeader</B
> :: <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwavHeaderFunMono"
></A
><B
>wavHeaderFunMono</B
> :: <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
></TD
></TR
><TR
><TD CLASS = "doc"
> The first Action writes the Header of the wav-file.
Then the wav-data is written. The second action moves
the Handle to the positions where the lenght of the wav-file
are encoded (in the header) and writes the right number, which
is unknown before all data is written.
Afterwards it closes the file.</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwavHeaderFunStereo"
></A
><B
>wavHeaderFunStereo</B
> :: <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderFun"
>HeaderFun</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AwavHeaderSize"
></A
><B
>wavHeaderSize</B
> :: <A HREF = "Sound.Hommage.WavFile.html#t%3AHeaderSize"
>HeaderSize</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AinitWriteWavHeaderMono"
></A
><B
>initWriteWavHeaderMono</B
> :: Handle -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AinitWriteWavHeaderStereo"
></A
><B
>initWriteWavHeaderStereo</B
> :: Handle -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AinitReadWavHeader"
></A
><B
>initReadWavHeader</B
> :: Handle -> IO (Maybe (Bool, Int, Int, Int))</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AcloseWriteWavHeader"
></A
><B
>closeWriteWavHeader</B
> :: Handle -> Int -> IO ()</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3Aencode"
></A
><B
>encode</B
> :: Int -> String</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3Adecode"
></A
><B
>decode</B
> :: String -> Int</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AencodeWavLengt"
></A
><B
>encodeWavLengt</B
> :: Int -> (String, String)</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AinitWavHeaderMono"
></A
><B
>initWavHeaderMono</B
> :: [Char]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AinitWavHeaderStereo"
></A
><B
>initWavHeaderStereo</B
> :: [Char]</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AsizeOfArrayElements"
></A
><B
>sizeOfArrayElements</B
> :: (Storable a) => StorableArray Int a -> Int</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AinferSizeOfArrayElements"
></A
><B
>inferSizeOfArrayElements</B
> :: (Storable a) => (StorableArray Int a -> IO Int) -> StorableArray Int a -> Int</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AinferSizeOfArrayElements'"
></A
><B
>inferSizeOfArrayElements'</B
> :: (Storable a) => (StorableArray Int a -> Int -> IO ()) -> StorableArray Int a -> Int</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "botbar"
>Produced by <A HREF = "http://www.haskell.org/haddock/"
>Haddock</A
> version HADDOCK_VERSION</TD
></TR
></TABLE
></BODY
></HTML
>