module Sound.Sox.Frame where

import qualified Sound.Sox.Format as Format

import Data.Word (Word8, Word16, )
import Data.Int (Int8, Int16, Int32, )


class C y where
   {- | The argument is not touched and can be undefined -}
   numberOfChannels :: y -> Int
   format :: y -> Format.T

instance C Word8 where
   numberOfChannels _ = 1
   format _ = Format.unsignedByte

instance C Int8 where
   numberOfChannels _ = 1
   format _ = Format.signedByte

instance C Word16 where
   numberOfChannels _ = 1
   format _ = Format.unsignedWord

instance C Int16 where
   numberOfChannels _ = 1
   format _ = Format.signedWord

{-
instance C Word32 where
   numberOfChannels _ = 1
   format _ = Format.unsignedLong
-}

instance C Int32 where
   numberOfChannels _ = 1
   format _ = Format.signedLong


withSignal :: (y -> a) -> (sig y -> a)
withSignal f _ = f undefined