module Sound.Iteratee.Writer (
fileDriverAudio,
runAudioMonad
)
where
import Sound.Iteratee.Base
import Sound.Iteratee.Codecs
import Data.MutableIter
import Foreign.Storable (Storable)
runAudioMonad :: AudioMonad a -> IO a
runAudioMonad am = do
(a, s) <- runStateT am NoState
case s of
NoState -> return a
WaveState{} -> runWaveAM (put s >> return a)
fileDriverAudio :: (Storable el) =>
(forall r. MIteratee (IOBuffer r el) AudioMonad a)
-> FilePath
-> IO a
fileDriverAudio i fp = runAM (fileDriverRandom defaultChunkLength i fp)
where
runAM = runAudioMonad