module Sound.File.Sndfile.Buffer.StorableVector.Examples where
import qualified Data.StorableVector as V
import qualified Sound.File.Sndfile as SF
import qualified Sound.File.Sndfile.Buffer.StorableVector as BV
normalizeSoundFile :: FilePath -> FilePath -> IO ()
normalizeSoundFile inPath outPath = do
(info, Just (x :: BV.Buffer Double)) <- SF.readFile inPath
let n = V.maximum (V.map abs (BV.fromBuffer x))
y = if n == 0 then x else BV.withBuffer (V.map (/n)) x
_ <- SF.writeFile info outPath y
return ()