, MultiParamTypeClasses
, UnicodeSyntax
, ScopedTypeVariables
- , TypeFamilies
#-}
-- | EsounD player streams.
module Sound.EsounD.Player
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.