From: PHO Date: Wed, 3 Nov 2010 06:31:14 +0000 (+0900) Subject: decided the Player type X-Git-Tag: RELEASE-0.1~23 X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=EsounD.git;a=commitdiff_plain;h=0465b7e3bed042d72da053bceeb4959403cc53a6 decided the Player type --- diff --git a/EsounD.cabal b/EsounD.cabal index cd06f1b..60e1e5b 100644 --- a/EsounD.cabal +++ b/EsounD.cabal @@ -22,10 +22,20 @@ Source-Repository head Library Build-Depends: - base == 4.2.*, - bindings-EsounD == 0.1.*, - regions == 0.7.*, - storablevector == 0.2.* + MonadCatchIO-transformers == 0.2.*, + base == 4.2.*, + bindings-EsounD == 0.1.*, + network == 2.2.*, + regions == 0.7.*, + safer-file-handles == 0.8.*, + storablevector == 0.2.* Exposed-Modules: Sound.EsounD + + Extensions: + KindSignatures + UnicodeSyntax + + GHC-Options: + -Wall diff --git a/Sound/EsounD.hs b/Sound/EsounD.hs new file mode 100644 index 0000000..ba46305 --- /dev/null +++ b/Sound/EsounD.hs @@ -0,0 +1,45 @@ +-- | Type-safe bindings to EsounD with monadic regions. +module Sound.EsounD + ( Player + , openPlayer + ) + where + +import Control.Monad.CatchIO +import Control.Monad.Trans.Region +import Network +import System.IO.SaferFileHandles + +{- +data Mono +data Stereo + +data Recorder frame channels +data Filter frame channels +data Sampler +-} + +-- ^ An ESD handle for playing a stream. +data Player frame channels (r ∷ * → *) + = Player { + plRate ∷ Int + , plHandle ∷ RegionalFileHandle WriteMode r + } + +instance Dup (Player frame channels) where + dup pl + = do h' ← dup (plHandle pl) + return pl { plHandle = h' } + +-- ^ Open an ESD handle for playing a stream. +openPlayer ∷ MonadCatchIO pr + ⇒ Int -- ^ sample rate for the stream. + → HostName -- ^ host to connect to. + → Maybe String -- ^ name used to identify this stream to + -- ESD (if any). + → RegionT s pr (Player frame channels (RegionT s pr)) +openPlayer rate host name + = return Player { + plRate = rate + , plHandle = error "FIXME: not implemented" + } diff --git a/Sound/EsounD.hsc b/Sound/EsounD.hsc deleted file mode 100644 index 2e86329..0000000 --- a/Sound/EsounD.hsc +++ /dev/null @@ -1,14 +0,0 @@ -module Sound.EsounD - ( - ) - where - -{- -data Mono -data Stereo - -data Player frame channels -data Recorder frame channels -data Filter frame channels -data Sampler --}