X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=EsounD.git;a=blobdiff_plain;f=Sound%2FEsounD%2FPlayer.hs;h=cfb4e31edb9b9f3f70d5c1dcf04f071860b90426;hp=7691672c24d5dd26a5a5139ef63f4560ba948a19;hb=bb3dbc2442352e09bafe4415d3784f7f61230b17;hpb=8af725c0cc839ad2493fa17d29ca6becaeb9f600 diff --git a/Sound/EsounD/Player.hs b/Sound/EsounD/Player.hs index 7691672..cfb4e31 100644 --- a/Sound/EsounD/Player.hs +++ b/Sound/EsounD/Player.hs @@ -5,7 +5,6 @@ , MultiParamTypeClasses , UnicodeSyntax , ScopedTypeVariables - , TypeFamilies #-} -- | EsounD player streams. module Sound.EsounD.Player @@ -44,9 +43,13 @@ instance Dup (Player fr ch) where dup pl = do ch' ← dup (plCloseH pl) return pl { plCloseH = ch' } -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) +instance Frame fr ⇒ Writable (Player fr Mono) (L.Vector fr) where + write pl v + = liftIO $ sanitizeIOError $ L.hPut (plHandle pl) v + +instance Frame fr ⇒ Writable (Player fr Stereo) (L.Vector fr, L.Vector fr) where + write pl (l, r) + = liftIO $ sanitizeIOError $ L.hPut (plHandle pl) (interleave l r) -- | Open an ESD handle for playing a stream. openPlayer ∷ ∀fr ch s pr.