X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Sound%2FEsounD%2FStreams.hs;h=374b60240eb6b6d17971c72fd549ed43b42f4023;hb=4570a37d1fc8f21a4ee1221c6ed289d281f1b005;hp=216fdafda4cf4b2f21284a5260fe5c7bc3e10a34;hpb=e8ea338a1b550c6c91726f1d30ad3416d73ec6af;p=EsounD.git diff --git a/Sound/EsounD/Streams.hs b/Sound/EsounD/Streams.hs index 216fdaf..374b602 100644 --- a/Sound/EsounD/Streams.hs +++ b/Sound/EsounD/Streams.hs @@ -4,14 +4,32 @@ #-} -- | EsounD stream I/O module Sound.EsounD.Streams - ( Writable(..) + ( Stream(..) + , ReadableStream(..) + , WritableStream(..) ) where import Control.Monad.IO.Class import Control.Monad.Trans.Region -class Writable ws dvec where - write ∷ ( AncestorRegion pr cr - , MonadIO cr - ) - ⇒ ws pr → dvec → cr () +-- | ESD streams. +class Stream s where + streamSampleRate ∷ s pr → Int + +-- | ESD streams which behave as sources. +class Stream rs ⇒ ReadableStream rs dvec where + readFrames ∷ ( AncestorRegion pr cr + , MonadIO cr + ) + ⇒ rs pr + → Int -- ^ number of frames to read + → cr dvec -- ^ frames in deinterleaved vectors + +-- | ESD streams which behave as sinks. +class Stream ws ⇒ WritableStream ws dvec where + writeFrames ∷ ( AncestorRegion pr cr + , MonadIO cr + ) + ⇒ ws pr + → dvec -- ^ frames in deinterleaved vectors + → cr ()