WAVE-0.1.5: readtest.hs
--- Bart Massey 2007
--- Show some information about a WAVE file given as an
--- argument.
import System.Environment
import ParseArgs
import WAVE
argd :: [ Arg Int ]
argd = [ Arg { argIndex = 0,
argName = Nothing,
argAbbr = Nothing,
argData = argDataOptional "input" ArgtypeString,
argDesc = "Input file" }]
main = do
args <- parseArgsIO ArgsComplete argd
h <- getArgStdio args 0 ReadMode
wav <- hGetWAVE h
let samples = waveSamples wav
case (waveFrames (waveHeader wav)) of
Just n -> let n' = length samples in
if (n /= n') then do
putStrLn "WAVE size mismatch"
putStrLn ("Header: " ++ (show n))
putStrLn ("Samples: " ++ (show n'))
else do
mapM_ (putStrLn . show) samples