]> gitweb @ CieloNegro.org - EsounD.git/blobdiff - Sound/EsounD/Player.hs
save my changes from being lost
[EsounD.git] / Sound / EsounD / Player.hs
index 0525a7bea358e40cb458dd081583f453d80d6acc..7691672c24d5dd26a5a5139ef63f4560ba948a19 100644 (file)
@@ -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.