packages feed

mediabus 0.3.0.1 → 0.3.1.0

raw patch · 13 files changed

+143/−113 lines, 13 filesdep +monad-loggerdep ~mediabusPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: monad-logger

Dependency ranges changed: mediabus

API changes (from Hackage documentation)

- Data.MediaBus.Media.Audio.Raw: instance (Data.Typeable.Internal.Typeable * t, Data.MediaBus.Basics.Ticks.KnownRate r, Data.MediaBus.Media.Channels.KnownChannelLayout * c, Data.MediaBus.Media.Samples.CanBeSample (Data.MediaBus.Media.Audio.Raw.Pcm c t)) => GHC.Show.Show (Data.MediaBus.Media.Audio.Audio r c (Data.MediaBus.Media.Audio.Raw.Raw * t))
- Data.MediaBus.Media.Buffer: instance Data.MediaBus.Media.Samples.CanBeSample a => GHC.Show.Show (Data.MediaBus.Media.Buffer.MediaBuffer a)
+ Data.MediaBus.Media.Audio.Raw: instance (Data.Typeable.Internal.Typeable * t, Data.MediaBus.Basics.Ticks.KnownRate r, Data.MediaBus.Media.Channels.KnownChannelLayout * c, Data.MediaBus.Media.Samples.CanBeSample (Data.MediaBus.Media.Audio.Raw.Pcm c t), GHC.Show.Show (Data.MediaBus.Media.Audio.Raw.Pcm c t)) => GHC.Show.Show (Data.MediaBus.Media.Audio.Audio r c (Data.MediaBus.Media.Audio.Raw.Raw * t))
+ Data.MediaBus.Media.Audio.Raw.Stereo: instance GHC.Show.Show a => GHC.Show.Show (Data.MediaBus.Media.Audio.Raw.Pcm Data.MediaBus.Media.Audio.Raw.Stereo.Stereo a)
+ Data.MediaBus.Media.Buffer: instance (GHC.Show.Show a, Data.MediaBus.Media.Samples.CanBeSample a) => GHC.Show.Show (Data.MediaBus.Media.Buffer.MediaBuffer a)
- Data.MediaBus.Basics.Series: _Next :: forall a_anDw b_anDx b_anRz. Prism (Series a_anDw b_anRz) (Series a_anDw b_anDx) b_anRz b_anDx
+ Data.MediaBus.Basics.Series: _Next :: forall a_anQQ b_anQR b_ao4T. Prism (Series a_anQQ b_ao4T) (Series a_anQQ b_anQR) b_ao4T b_anQR
- Data.MediaBus.Basics.Series: _Start :: forall a_anDw b_anDx a_anRE. Prism (Series a_anRE b_anDx) (Series a_anDw b_anDx) a_anRE a_anDw
+ Data.MediaBus.Basics.Series: _Start :: forall a_anQQ b_anQR a_ao4Y. Prism (Series a_ao4Y b_anQR) (Series a_anQQ b_anQR) a_ao4Y a_anQQ
- Data.MediaBus.Conduit.Async: frameContentQSink :: (NFData a, MonadBaseControl IO m, Show a) => FrameContentQ a -> Sink (Stream i s t p a) m ()
+ Data.MediaBus.Conduit.Async: frameContentQSink :: (NFData a, MonadBaseControl IO m, Show a, MonadLogger m) => FrameContentQ a -> Sink (Stream i s t p a) m ()
- Data.MediaBus.Conduit.Async: frameContentQSource :: (Random i, NFData c, NFData p, Default p, HasStaticDuration c, HasDuration c, MonadBaseControl IO m, KnownRate r, Integral t, Integral s, NFData t, NFData s) => FrameContentQ c -> Source m (Stream i s (Ticks r t) p (Discontinous c))
+ Data.MediaBus.Conduit.Async: frameContentQSource :: (Random i, NFData c, NFData p, Default p, HasStaticDuration c, HasDuration c, MonadBaseControl IO m, MonadLogger m, KnownRate r, Integral t, Integral s, NFData t, NFData s) => FrameContentQ c -> Source m (Stream i s (Ticks r t) p (Discontinous c))
- Data.MediaBus.Conduit.Async: withAsyncPolledSource :: (MonadResource m, MonadBaseControl IO m, KnownRate r, Integral t, Integral s, Default p, HasStaticDuration c, HasDuration c, NFData c, NFData p, NFData s, NFData t, Random i, Random t, Random s, Show c) => Int -> Source m (Stream i s (Ticks r t) p c) -> ((Async (), Source m (Stream i s (Ticks r t) p (Discontinous c))) -> m o) -> m o
+ Data.MediaBus.Conduit.Async: withAsyncPolledSource :: (MonadResource m, MonadLogger m, MonadBaseControl IO m, KnownRate r, Integral t, Integral s, Default p, HasStaticDuration c, HasDuration c, NFData c, NFData p, NFData s, NFData t, Random i, Random t, Random s, Show c) => Int -> Source m (Stream i s (Ticks r t) p c) -> ((Async (), Source m (Stream i s (Ticks r t) p (Discontinous c))) -> m o) -> m o
- Data.MediaBus.Media.Discontinous: _Got :: forall a_aDbz a_aDDS. Prism (Discontinous a_aDDS) (Discontinous a_aDbz) a_aDDS a_aDbz
+ Data.MediaBus.Media.Discontinous: _Got :: forall a_aDIq a_aEaK. Prism (Discontinous a_aEaK) (Discontinous a_aDIq) a_aEaK a_aDIq
- Data.MediaBus.Media.Discontinous: _Missing :: forall a_aDbz. Prism' (Discontinous a_aDbz) ()
+ Data.MediaBus.Media.Discontinous: _Missing :: forall a_aDIq. Prism' (Discontinous a_aDIq) ()
- Data.MediaBus.Media.Stream: frameCtxInit :: forall i_aRMo s_aRMp t_aRMq p_aRMr p_aRW1. Lens (FrameCtx i_aRMo s_aRMp t_aRMq p_aRMr) (FrameCtx i_aRMo s_aRMp t_aRMq p_aRW1) p_aRMr p_aRW1
+ Data.MediaBus.Media.Stream: frameCtxInit :: forall i_aSKb s_aSKc t_aSKd p_aSKe p_aSTO. Lens (FrameCtx i_aSKb s_aSKc t_aSKd p_aSKe) (FrameCtx i_aSKb s_aSKc t_aSKd p_aSTO) p_aSKe p_aSTO
- Data.MediaBus.Media.Stream: frameCtxSeqNumRef :: forall i_aRMo s_aRMp t_aRMq p_aRMr s_aRW2. Lens (FrameCtx i_aRMo s_aRMp t_aRMq p_aRMr) (FrameCtx i_aRMo s_aRW2 t_aRMq p_aRMr) s_aRMp s_aRW2
+ Data.MediaBus.Media.Stream: frameCtxSeqNumRef :: forall i_aSKb s_aSKc t_aSKd p_aSKe s_aSTP. Lens (FrameCtx i_aSKb s_aSKc t_aSKd p_aSKe) (FrameCtx i_aSKb s_aSTP t_aSKd p_aSKe) s_aSKc s_aSTP
- Data.MediaBus.Media.Stream: frameCtxSourceId :: forall i_aRMo s_aRMp t_aRMq p_aRMr i_aRW3. Lens (FrameCtx i_aRMo s_aRMp t_aRMq p_aRMr) (FrameCtx i_aRW3 s_aRMp t_aRMq p_aRMr) i_aRMo i_aRW3
+ Data.MediaBus.Media.Stream: frameCtxSourceId :: forall i_aSKb s_aSKc t_aSKd p_aSKe i_aSTQ. Lens (FrameCtx i_aSKb s_aSKc t_aSKd p_aSKe) (FrameCtx i_aSTQ s_aSKc t_aSKd p_aSKe) i_aSKb i_aSTQ
- Data.MediaBus.Media.Stream: frameCtxTimestampRef :: forall i_aRMo s_aRMp t_aRMq p_aRMr t_aRW4. Lens (FrameCtx i_aRMo s_aRMp t_aRMq p_aRMr) (FrameCtx i_aRMo s_aRMp t_aRW4 p_aRMr) t_aRMq t_aRW4
+ Data.MediaBus.Media.Stream: frameCtxTimestampRef :: forall i_aSKb s_aSKc t_aSKd p_aSKe t_aSTR. Lens (FrameCtx i_aSKb s_aSKc t_aSKd p_aSKe) (FrameCtx i_aSKb s_aSKc t_aSTR p_aSKe) t_aSKd t_aSTR
- Data.MediaBus.Media.Stream: framePayload :: forall s_aRWG t_aRWH c_aRWI c_aSd9. Lens (Frame s_aRWG t_aRWH c_aRWI) (Frame s_aRWG t_aRWH c_aSd9) c_aRWI c_aSd9
+ Data.MediaBus.Media.Stream: framePayload :: forall s_aSUt t_aSUu c_aSUv c_aTb6. Lens (Frame s_aSUt t_aSUu c_aSUv) (Frame s_aSUt t_aSUu c_aTb6) c_aSUv c_aTb6
- Data.MediaBus.Media.Stream: frameSeqNum :: forall s_aRWG t_aRWH c_aRWI s_aSda. Lens (Frame s_aRWG t_aRWH c_aRWI) (Frame s_aSda t_aRWH c_aRWI) s_aRWG s_aSda
+ Data.MediaBus.Media.Stream: frameSeqNum :: forall s_aSUt t_aSUu c_aSUv s_aTb7. Lens (Frame s_aSUt t_aSUu c_aSUv) (Frame s_aTb7 t_aSUu c_aSUv) s_aSUt s_aTb7
- Data.MediaBus.Media.Stream: frameTimestamp :: forall s_aRWG t_aRWH c_aRWI t_aSdb. Lens (Frame s_aRWG t_aRWH c_aRWI) (Frame s_aRWG t_aSdb c_aRWI) t_aRWH t_aSdb
+ Data.MediaBus.Media.Stream: frameTimestamp :: forall s_aSUt t_aSUu c_aSUv t_aTb8. Lens (Frame s_aSUt t_aSUu c_aSUv) (Frame s_aSUt t_aTb8 c_aSUv) t_aSUu t_aTb8
- Data.MediaBus.Media.Stream: stream :: forall i_aSdH s_aSdI t_aSdJ p_aSdK c_aSdL i_aSCZ s_aSD0 t_aSD1 p_aSD2 c_aSD3. Iso (Stream i_aSdH s_aSdI t_aSdJ p_aSdK c_aSdL) (Stream i_aSCZ s_aSD0 t_aSD1 p_aSD2 c_aSD3) (Streamish i_aSdH s_aSdI t_aSdJ p_aSdK c_aSdL) (Streamish i_aSCZ s_aSD0 t_aSD1 p_aSD2 c_aSD3)
+ Data.MediaBus.Media.Stream: stream :: forall i_aTbE s_aTbF t_aTbG p_aTbH c_aTbI i_aTB4 s_aTB5 t_aTB6 p_aTB7 c_aTB8. Iso (Stream i_aTbE s_aTbF t_aTbG p_aTbH c_aTbI) (Stream i_aTB4 s_aTB5 t_aTB6 p_aTB7 c_aTB8) (Streamish i_aTbE s_aTbF t_aTbG p_aTbH c_aTbI) (Streamish i_aTB4 s_aTB5 t_aTB6 p_aTB7 c_aTB8)

Files

mediabus.cabal view
@@ -1,5 +1,5 @@ name: mediabus-version: 0.3.0.1+version: 0.3.1.0 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -69,6 +69,7 @@         lens >=4.15.1 && <4.16,         lifted-async >=0.9.1.1 && <0.10,         monad-control >=1.0.1.0 && <1.1,+        monad-logger >=0.3.20.2 && <0.4,         mtl >=2.2.1 && <2.3,         network >=2.6.3.1 && <2.7,         parallel >=3.2.1.0 && <3.3,@@ -112,7 +113,7 @@         conduit >=1.2.9 && <1.3,         conduit-combinators >=1.1.0 && <1.2,         conduit-extra >=1.1.15 && <1.2,-        mediabus >=0.3.0.1 && <0.4,+        mediabus >=0.3.1.0 && <0.4,         containers >=0.5.7.1 && <0.6,         data-default >=0.7.1.1 && <0.8,         deepseq >=1.4.2.0 && <1.5,
src/Data/MediaBus/Basics/Sequence.hs view
@@ -1,53 +1,65 @@ -- | This modules contains the 'SeqNum' newtype wrapper to indicate that a type -- is a sequence number. module Data.MediaBus.Basics.Sequence-    ( SeqNum(..)-    , fromSeqNum-    , type SeqNum8-    , type SeqNum16-    , type SeqNum32-    , type SeqNum64-    , HasSeqNum(..)-    ) where+  ( SeqNum(..)+  , fromSeqNum+  , type SeqNum8+  , type SeqNum16+  , type SeqNum32+  , type SeqNum64+  , HasSeqNum(..)+  ) where -import           Test.QuickCheck            ( Arbitrary(..) )-import           Data.MediaBus.Basics.Monotone-import           Data.MediaBus.Basics.Series-import           Control.Lens-import           Data.Default-import           Text.Printf-import           GHC.Generics               ( Generic )-import           Control.DeepSeq-import           System.Random-import           Data.Word+import Control.DeepSeq+import Control.Lens+import Data.Default+import Data.MediaBus.Basics.Monotone+import Data.MediaBus.Basics.Series+import Data.Word+import GHC.Generics (Generic)+import System.Random+import Test.QuickCheck (Arbitrary(..))+import Text.Printf  -- | The newtype wrapper that indicates that something is a sequence number.-newtype SeqNum s = MkSeqNum { _fromSeqNum :: s }-    deriving (Num, Eq, Bounded, Enum, LocalOrd, Arbitrary, Default, Generic, Random)+newtype SeqNum s = MkSeqNum+  { _fromSeqNum :: s+  } deriving ( Num+             , Eq+             , Bounded+             , Enum+             , LocalOrd+             , Arbitrary+             , Default+             , Generic+             , Random+             )  instance NFData s =>          NFData (SeqNum s)  instance HasSeqNum (SeqNum s) where-    type GetSeqNum (SeqNum s) = s-    type SetSeqNum (SeqNum s) s' = SeqNum s'-    seqNum = fromSeqNum+  type GetSeqNum (SeqNum s) = s+  type SetSeqNum (SeqNum s) s' = SeqNum s'+  seqNum = fromSeqNum  instance Show s =>          Show (SeqNum s) where-    show (MkSeqNum s) = printf "SEQNUM: %10s" (show s)+  showsPrec d (MkSeqNum s) =+    showParen (d > 10) (printf "sn: %10s" . showsPrec 11 s)  instance (Eq a, LocalOrd a) =>          Ord (SeqNum a) where-    compare !x !y-        | x == y = EQ-        | x `succeeds` y = GT-        | otherwise = LT+  compare !x !y+    | x == y = EQ+    | x `succeeds` y = GT+    | otherwise = LT -deriving instance (Real a, Num a, Eq a, LocalOrd a) => Real-         (SeqNum a)+deriving instance+         (Real a, Num a, Eq a, LocalOrd a) => Real (SeqNum a) -deriving instance (Integral a, Enum a, Real a, Eq a, LocalOrd a) =>+deriving instance+         (Integral a, Enum a, Real a, Eq a, LocalOrd a) =>          Integral (SeqNum a)  -- | An 'Iso' between a 'SeqNum' and its' value.@@ -55,7 +67,6 @@ fromSeqNum = iso _fromSeqNum MkSeqNum  -- * Type aliases- -- | A 'Word8' based sequence number. type SeqNum8 = SeqNum Word8 @@ -69,18 +80,17 @@ type SeqNum64 = SeqNum Word64  -- * Lens type classes- -- | A class for types providing a lens to a sequence number. class SetSeqNum t (GetSeqNum t) ~ t =>       HasSeqNum t where-    type GetSeqNum t-    type SetSeqNum t s-    -- | A lens for the sequence number contained in @t@-    seqNum :: Lens t (SetSeqNum t s) (GetSeqNum t) s+  type GetSeqNum t+  type SetSeqNum t s+  -- | A lens for the sequence number contained in @t@+  seqNum :: Lens t (SetSeqNum t s) (GetSeqNum t) s  instance (HasSeqNum a, HasSeqNum b, GetSeqNum a ~ GetSeqNum b) =>          HasSeqNum (Series a b) where-    type GetSeqNum (Series a b) = GetSeqNum a-    type SetSeqNum (Series a b) t = Series (SetSeqNum a t) (SetSeqNum b t)-    seqNum f (Start !a) = Start <$> seqNum f a-    seqNum f (Next !b) = Next <$> seqNum f b+  type GetSeqNum (Series a b) = GetSeqNum a+  type SetSeqNum (Series a b) t = Series (SetSeqNum a t) (SetSeqNum b t)+  seqNum f (Start !a) = Start <$> seqNum f a+  seqNum f (Next !b) = Next <$> seqNum f b
src/Data/MediaBus/Basics/Series.hs view
@@ -34,8 +34,9 @@ instance (Show a, Show b) =>          Show (Series a b) where   showsPrec d (Start !x) =-    showParen (d > 10) $ showString "START: " . showsPrec 11 x-  showsPrec d (Next !x) = showsPrec d x+    showParen (d > 10) $ showString "start: " . showsPrec 11 x+  showsPrec d (Next !x) =+    showParen (d > 10) $ showString "next: " . showsPrec 11 x  instance (Ord a, Ord b) =>          Ord (Series a b) where
src/Data/MediaBus/Basics/SourceId.hs view
@@ -4,26 +4,26 @@ -- 'SourceId' is that every thing that has a certain source id stems from **the -- same media source**, e.g. the same microphone, audio file, synthesizer,... module Data.MediaBus.Basics.SourceId-    ( SourceId(..)-    , sourceIdValue-    , type SrcId32-    , type SrcId64-    , HasSourceId(..)-    , EachSourceId(..)-    ) where+  ( SourceId(..)+  , sourceIdValue+  , type SrcId32+  , type SrcId64+  , HasSourceId(..)+  , EachSourceId(..)+  ) where -import           Control.Lens-import           Test.QuickCheck-import           Data.Default-import           GHC.Generics    ( Generic )-import           Control.DeepSeq-import           Data.Word+import Control.DeepSeq+import Control.Lens+import Data.Default+import Data.Word+import GHC.Generics (Generic)+import Test.QuickCheck  -- | Things that can be uniquely identified by a looking at a (much simpler) -- representation, the 'identity'.-newtype SourceId i = MkSourceId { _sourceIdValue :: i }-    deriving (Eq, Arbitrary, Default, Ord, Generic)-+newtype SourceId i = MkSourceId+  { _sourceIdValue :: i+  } deriving (Eq, Arbitrary, Default, Ord, Generic)  -- | An 'Iso' for the value of a 'SourceId' sourceIdValue :: Iso (SourceId a) (SourceId b) a b@@ -40,19 +40,20 @@  instance Show i =>          Show (SourceId i) where-    show (MkSourceId x) = "SOURCE-ID: " ++ show x+  showsPrec d (MkSourceId x) =+    showParen (d > 10) $ showString "source-id: " . showsPrec 11 x  -- | Type class for a lens over the contained source id class HasSourceId s t where-    type SourceIdFrom s-    type SourceIdTo t-    -- | A lens for the 'SourceId'-    sourceId :: Lens s t (SourceIdFrom s) (SourceIdTo t)+  type SourceIdFrom s+  type SourceIdTo t+  -- | A lens for the 'SourceId'+  sourceId :: Lens s t (SourceIdFrom s) (SourceIdTo t)  -- | Type class with a 'Traversal' for types that may or may not contain anctual -- source id. class EachSourceId s t where-    type SourceIdsFrom s-    type SourceIdsTo t-    -- | A 'Traversal' for the 'SourceId'-    eachSourceId :: Traversal s t (SourceIdsFrom s) (SourceIdsTo t)+  type SourceIdsFrom s+  type SourceIdsTo t+  -- | A 'Traversal' for the 'SourceId'+  eachSourceId :: Traversal s t (SourceIdsFrom s) (SourceIdsTo t)
src/Data/MediaBus/Basics/Ticks.hs view
@@ -122,8 +122,7 @@ -- | Types which contain a rate, but are agnostic of it. The counter example would be -- if the rate was a type index of a data family. class (HasRate i, GetRate i ~ ri, SetRate i rj ~ j, KnownRate rj) =>-      CoerceRate i j ri rj-    where+      CoerceRate i j ri rj where   -- | Change the static sample rate, without e.g. resampling   coerceRate :: proxy rj -> i -> SetRate i rj @@ -283,10 +282,11 @@  instance (CanBeTicks r w, Show w) =>          Show (Ticks r w) where-  show tix@(MkTicks x) =+  showsPrec d (MkTicks x) =+    showParen (d > 7) $+    showString $     printf-      "%10s (%10d @ %10d Hz)"-      (show (view nominalDiffTime tix))+      "%8d / %dHz"       (toInteger x)       (rateVal (Proxy :: Proxy r)) @@ -400,7 +400,6 @@   => proxy (ticks :/ rate) -> Ticks rate i ticksFromStaticDuration _ =   MkTicks (fromIntegral (natVal (Proxy :: Proxy ticks)))-  instance (HasTimestamp a, HasTimestamp b, GetTimestamp a ~ GetTimestamp b) =>          HasTimestamp (Series a b) where
src/Data/MediaBus/Conduit/Async.hs view
@@ -15,19 +15,20 @@ import Control.Concurrent.STM import Control.Exception (evaluate) import Control.Lens+import Control.Monad.Logger import Control.Monad.State import Control.Parallel.Strategies (NFData, rdeepseq, withStrategy) import Data.Default import Data.MediaBus.Basics.Clock import Data.MediaBus.Basics.Ticks+import Data.MediaBus.Conduit.Stream import Data.MediaBus.Media.Discontinous import Data.MediaBus.Media.Stream-import Data.MediaBus.Conduit.Stream import Data.Proxy import Data.Time.Clock-import Debug.Trace import System.Random import Text.Printf+import Data.String  data PollFrameContentSourceSt s t = MkPollFrameContentSourceSt   { _ppSeqNum :: !s@@ -41,6 +42,7 @@ -- generating a 'Discontinous' output. withAsyncPolledSource   :: ( MonadResource m+     , MonadLogger m      , MonadBaseControl IO m      , KnownRate r      , Integral t@@ -91,7 +93,7 @@ -- 'FrameContentQ'. When the queue is full, **drop the oldest element** and push -- in the new element, anyway. frameContentQSink-  :: (NFData a, MonadBaseControl IO m, Show a)+  :: (NFData a, MonadBaseControl IO m, Show a, MonadLogger m)   => FrameContentQ a -> Sink (Stream i s t p a) m () frameContentQSink (MkFrameContentQ _ _ !ringRef) = awaitForever go   where@@ -99,13 +101,16 @@       maybe (return ()) pushInRing (x ^? eachFrameContent)       return ()       where-        pushInRing !buf' =-          liftBase $ do-            !buf <- evaluate $ withStrategy rdeepseq buf'-            atomically $ do-              isFull <- isFullTBQueue ringRef-              when isFull (void $ readTBQueue ringRef)-              writeTBQueue ringRef buf+        pushInRing !buf' = do+          isFull <-+            liftBase $ do+              !buf <- evaluate $ withStrategy rdeepseq buf'+              atomically $ do+                isFull <- isFullTBQueue ringRef+                when isFull (void $ readTBQueue ringRef)+                writeTBQueue ringRef buf+                return isFull+          when isFull $ $logInfo "queue full"  -- | Periodically poll a 'FrameContentQ' and yield the content as frames with -- newly generated timestamp and sequence number values.@@ -117,6 +122,7 @@      , HasStaticDuration c      , HasDuration c      , MonadBaseControl IO m+     , MonadLogger m      , KnownRate r      , Integral t      , Integral s@@ -141,7 +147,9 @@             !t1 <- now             return (diffTime t1 t0 ^. utcClockTimeDiff))     yieldMissing !dt !wasMissing = do-      unless wasMissing (traceM (printf "*** UNDERFLOW: Missing %s" (show dt))) -- TODO replace by proper logging+      unless+        wasMissing+        ($logDebug (fromString (printf "underflow: %s" (show dt))))       replicateM_ (floor (dt / pTime)) (yieldNextBuffer Missing)     yieldStart =       (MkFrameCtx <$> liftBase randomIO <*> use ppTicks <*> use ppSeqNum <*>
src/Data/MediaBus/Media/Audio.hs view
@@ -10,8 +10,8 @@ import Data.MediaBus.Basics.Ticks import Control.Lens --- | Family of audio media types, indexed by the sampleRate, the channel layout---   and a /codec/ parameter. This class is intended as a basis for all audio+-- | Family of audio media types, indexed by a sampleRate, a channel layout+--   and a /codec/ parameter. This type family is intended as a basis for all audio --   media, raw as well as encoded audio. data family Audio (sampleRate :: Rate) channelLayout encoding 
src/Data/MediaBus/Media/Audio/Raw.hs view
@@ -81,7 +81,7 @@        showsPrec 11 (MkRateProxy :: RateProxy r) .        showString " " . showsPrec 11 (MkRateProxy :: RateProxy r)) -instance (Typeable t, KnownRate r, KnownChannelLayout c, CanBeSample (Pcm c t)) =>+instance (Typeable t, KnownRate r, KnownChannelLayout c, CanBeSample (Pcm c t), Show (Pcm c t)) =>          Show (Audio r c (Raw t)) where   showsPrec d (MkPcm !c) =     showParen (d > 10) $
src/Data/MediaBus/Media/Audio/Raw/Signed16bit.hs view
@@ -35,7 +35,7 @@ s16Sample = iso _s16Sample MkS16  instance Show S16 where-  show (MkS16 !x) = printf "S16: %6d" x+  showsPrec d (MkS16 !x) = showParen (d > 10) $ showString (printf "S16: %6d" x)  instance CanBeBlank S16 where   blank = 0
src/Data/MediaBus/Media/Audio/Raw/Stereo.hs view
@@ -35,6 +35,13 @@   type ChannelsTo (Pcm Stereo b) = b   eachChannel f (MkStereo !l !r) = MkStereo <$> f l <*> f r +instance Show a =>+         Show (Pcm Stereo a) where+  showsPrec d (MkStereo l r) =+    showParen+      (d > 10)+      (showChar 'L' . showsPrec 11 l . showString " R" . showsPrec 11 r)+ instance IsPcmValue a =>          IsPcmValue (Pcm Stereo a) where   pcmAverage (MkStereo !l0 !r0) (MkStereo !l1 !r1) =@@ -50,7 +57,7 @@  instance Storable s =>          Storable (Pcm Stereo s) where-  sizeOf s = 2 * sizeOf s+  sizeOf _ = 2 * sizeOf (undefined :: s)   alignment = alignment   peekByteOff ptr off = do     l <- peekByteOff ptr off
src/Data/MediaBus/Media/Buffer.hs view
@@ -44,7 +44,9 @@ type HasMediaBuffer' s = (HasMediaBuffer s s, MediaBufferFrom s ~ MediaBufferTo s)  -- | Like 'mediaBuffer' but with @s ~ t@ and @MediaBufferFrom s ~ MediaBufferTo t@-mediaBuffer' :: HasMediaBuffer' s => Lens' s (MediaBufferFrom s)+mediaBuffer'+  :: HasMediaBuffer' s+  => Lens' s (MediaBufferFrom s) mediaBuffer' = mediaBuffer  -- | Like 'HasMediaBuffer' but with the typical lens type parameters @s t a b@@@ -75,11 +77,13 @@   fromList = mediaBufferFromList   toList = mediaBufferToList -instance (CanBeSample a) =>+instance (Show a, CanBeSample a) =>          Show (MediaBuffer a) where-  show m =-    "MediaBuffer: " ++-    show (mediaBufferLength m) ++ " x " ++ show (typeRep (Proxy :: Proxy a))+  showsPrec d m =+    showParen (d > 10) $+    showString "media buffer: " .+    showsPrec 8 (mediaBufferLength m) .+    showString " * " . showsPrec 8 (typeRep (Proxy :: Proxy a))  instance CanBeSample sampleType =>          Default (MediaBuffer sampleType) where@@ -93,7 +97,6 @@  -- ** Conversion -- *** List Conversion- -- | Convert the media buffer vector contents to a list in O(n). mediaBufferToList   :: CanBeSample s@@ -107,7 +110,6 @@ mediaBufferFromList = MkMediaBuffer . V.fromList  -- *** 'ByteString' Conversion- -- | An efficient conversion of a 'ByteString' to a 'MediaBuffer' mediaBufferFromByteString   :: CanBeSample a
src/Data/MediaBus/Media/Segment.hs view
@@ -53,8 +53,7 @@  instance (HasStaticDuration d, Show c) =>          Show (Segment d c) where-    showsPrec d (MkSegment c) =-      showParen (d > 10) $+    showsPrec _d (MkSegment c) =           showString "[| "           . shows c           . showString (printf " |%10s]" (show (getStaticDuration (Proxy :: Proxy d))))
src/Data/MediaBus/Media/Stream.hs view
@@ -26,11 +26,10 @@ import Data.MediaBus.Basics.Sequence import Data.MediaBus.Basics.Series import Data.MediaBus.Basics.Ticks-import Data.MediaBus.Media.Media import Data.MediaBus.Media.Channels+import Data.MediaBus.Media.Media import GHC.Generics (Generic) import Test.QuickCheck-import Text.Printf  -- | Meta information about a media stream. data FrameCtx i s t p = MkFrameCtx@@ -81,13 +80,13 @@  instance (Show i, Show s, Show t, Show p) =>          Show (FrameCtx i s t p) where-  show (MkFrameCtx sid tsr snr spr) =-    printf-      "FRAME-CTX: %15s | %15s | %15s | %s"-      (show sid)-      (show snr)-      (show tsr)-      (show spr)+  showsPrec d (MkFrameCtx sid tsr snr spr) =+    showParen (d > 10) $+    showString "frame context: " .+    showsPrec 11 sid .+    showChar ' ' .+    showsPrec 11 snr .+    showChar ' ' . showsPrec 11 tsr . showChar ' ' . showsPrec 11 spr  -- | A 'Frame' can be anything that has a start time and is exactly one time -- unit long, it can respresent anything ranging from an audio buffer with 20ms@@ -157,8 +156,11 @@  instance (Show s, Show t, Show v) =>          Show (Frame s t v) where-  show (MkFrame ts sn v) =-    printf "FRAME: %15s | %15s | %s" (show sn) (show ts) (show v)+  showsPrec d (MkFrame ts sn v) =+    showParen (d > 10) $+    showString "frame: " .+    showsPrec 11 sn .+    showChar ' ' . showsPrec 11 ts . showChar ' ' . showsPrec 11 v  -- | A type for values that belong to a 'Series' of 'Frame's started by a -- 'FrameCtx'. This combines the sum type 'Series' which has either 'Start' or@@ -207,4 +209,4 @@  instance (Show i, Show s, Show t, Show c, Show p) =>          Show (Stream i s t p c) where-  show (MkStream s) = show s+  showsPrec d (MkStream s) = showsPrec d s