X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=EsounD.git;a=blobdiff_plain;f=Sound%2FEsounD%2FPlayer.hs;h=7691672c24d5dd26a5a5139ef63f4560ba948a19;hp=0525a7bea358e40cb458dd081583f453d80d6acc;hb=8af725c0cc839ad2493fa17d29ca6becaeb9f600;hpb=2c9350d4762d69bbfcdc58212e27506c3d4f7494 diff --git a/Sound/EsounD/Player.hs b/Sound/EsounD/Player.hs index 0525a7b..7691672 100644 --- a/Sound/EsounD/Player.hs +++ b/Sound/EsounD/Player.hs @@ -1,9 +1,11 @@ {-# LANGUAGE - FlexibleInstances + FlexibleContexts + , FlexibleInstances , KindSignatures , MultiParamTypeClasses , UnicodeSyntax , ScopedTypeVariables + , TypeFamilies #-} -- | EsounD player streams. module Sound.EsounD.Player @@ -17,11 +19,11 @@ import Control.Monad.Trans.Region import Control.Monad.Trans.Region.OnExit import Control.Monad.Unicode import Data.Bits -import Data.StorableVector.Lazy as Lazy +import Data.StorableVector.Lazy as L import Foreign.C.String import Network import Prelude.Unicode -import Sound.EsounD.Streams +import Sound.EsounD.Streams import Sound.EsounD.Internals import System.IO import System.IO.SaferFileHandles.Unsafe @@ -42,9 +44,9 @@ instance Dup (Player fr ch) where dup pl = do ch' ← dup (plCloseH pl) return pl { plCloseH = ch' } -instance Frame fr ⇒ Writable (Player fr Mono) (Lazy.Vector fr) where - write pl v - = liftIO $ sanitizeIOError $ Lazy.hPut (plHandle pl) v +instance (Mux L.Vector fr ch, dvec ~ DemuxedVec L.Vector fr ch) ⇒ Writable (Player fr ch) dvec where + write pl dvec + = liftIO $ sanitizeIOError $ L.hPut (plHandle pl) (mux dvec) -- | Open an ESD handle for playing a stream. openPlayer ∷ ∀fr ch s pr.