sample-frame-0.0.1: src/Sound/Frame.hs
module Sound.Frame where
import Data.Word (Word8, Word16, Word32, )
import Data.Int (Int8, Int16, Int32, )
import Foreign.Storable (sizeOf, )
class C y where
{- | The argument is not touched and can be undefined -}
numberOfChannels :: 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@.
-}
sizeOfElement :: y -> Int
instance C Word8 where
numberOfChannels _ = 1
sizeOfElement = sizeOf
instance C Int8 where
numberOfChannels _ = 1
sizeOfElement = sizeOf
instance C Word16 where
numberOfChannels _ = 1
sizeOfElement = sizeOf
instance C Int16 where
numberOfChannels _ = 1
sizeOfElement = sizeOf
instance C Word32 where
numberOfChannels _ = 1
sizeOfElement = sizeOf
instance C Int32 where
numberOfChannels _ = 1
sizeOfElement = sizeOf
instance C Float where
numberOfChannels _ = 1
sizeOfElement = sizeOf
instance C Double where
numberOfChannels _ = 1
sizeOfElement = sizeOf
withSignal :: (y -> a) -> (sig y -> a)
withSignal f _ = f undefined