-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Handling of samples in an (audio) signal
--
-- This package provides a type class to handle signed and unsigned
-- samples of various size and number of channels in a uniform way.
--
-- We expect that you use the types Int8, Word8 and so on
-- for monophonic samples and thus provide instances of the class for
-- them. Further we define Stereo record and mu-law sample type.
-- Quadrophony can be achieved by nested Stereo value, but I'm uncertain,
-- whether this is a good way to go. Maybe we add 5+1 channels or so in
-- future.
--
-- This is used by packages sox, alsa,
-- synthesizer.
@package sample-frame
@version 0.0.4
module Sound.Frame
-- | This is a class for nested tuples used as sample frames.
--
-- Should we make Storable a superclass of C?
class C y
-- | The argument is not touched and can be undefined
numberOfChannels :: C y => y -> Int
-- | Size of elements. In a nested record type, like Stereo (Stereo
-- a), it is the size of the atomic element, in our example
-- a. We assume that the atomic element values all have the same
-- size, such that sizeOfElement undefined is defined.
sizeOfElement :: C y => y -> Int
-- | Default implementations for a foldable Frame.
numberOfChannelsFoldable :: (C y, Foldable f) => f y -> Int
sizeOfElementFoldable :: (C y, Foldable f) => f y -> Int
-- | Returns the size of an undefined element. This might be more efficient
-- than sizeOfElementFoldable.
sizeOfElementType :: C y => f y -> Int
-- | Space that an element consumes in a Storable Array. This is space for
-- the element plus padding.
paddedSizeOf :: Storable a => a -> Int
withSignal :: (y -> a) -> sig y -> a
instance Sound.Frame.C GHC.Word.Word8
instance Sound.Frame.C GHC.Int.Int8
instance Sound.Frame.C GHC.Word.Word16
instance Sound.Frame.C GHC.Int.Int16
instance Sound.Frame.C GHC.Word.Word32
instance Sound.Frame.C GHC.Int.Int32
instance Sound.Frame.C GHC.Types.Float
instance Sound.Frame.C GHC.Types.Double
module Sound.Frame.MuLaw
data T
cons :: Word8 -> T
decons :: T -> Word8
fromLinear16 :: Int16 -> T
toLinear16 :: T -> Int16
instance GHC.Classes.Eq Sound.Frame.MuLaw.T
instance GHC.Show.Show Sound.Frame.MuLaw.T
instance Test.QuickCheck.Arbitrary.Arbitrary Sound.Frame.MuLaw.T
instance Foreign.Storable.Storable Sound.Frame.MuLaw.T
instance Sound.Frame.C Sound.Frame.MuLaw.T
module Sound.Frame.Stereo
data T a
left :: T a -> a
right :: T a -> a
cons :: a -> a -> T a
map :: (a -> b) -> T a -> T b
swap :: T a -> T a
data Channel
Left :: Channel
Right :: Channel
select :: T a -> Channel -> a
interleave :: (T a, T b) -> T (a, b)
sequence :: Functor f => f (T a) -> T (f a)
liftApplicative :: Applicative f => (f a -> f b) -> f (T a) -> f (T b)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Sound.Frame.Stereo.T a)
instance GHC.Show.Show a => GHC.Show.Show (Sound.Frame.Stereo.T a)
instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Sound.Frame.Stereo.T a)
instance GHC.Base.Functor Sound.Frame.Stereo.T
instance GHC.Base.Applicative Sound.Frame.Stereo.T
instance Data.Foldable.Foldable Sound.Frame.Stereo.T
instance Data.Traversable.Traversable Sound.Frame.Stereo.T
instance Foreign.Storable.Storable a => Foreign.Storable.Storable (Sound.Frame.Stereo.T a)
instance Sound.Frame.C a => Sound.Frame.C (Sound.Frame.Stereo.T a)