module Sound.MED.Raw.MMD1NoteData where import Sound.MED.Basic.Amiga import Data.Bits ((.&.)) data MMD1NoteData = MMD1NoteData { MMD1NoteData -> UBYTE note :: UBYTE , MMD1NoteData -> UBYTE instrument :: UBYTE , MMD1NoteData -> UBYTE command :: UBYTE , MMD1NoteData -> UBYTE databyte :: UBYTE } deriving (Int -> MMD1NoteData -> ShowS [MMD1NoteData] -> ShowS MMD1NoteData -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MMD1NoteData] -> ShowS $cshowList :: [MMD1NoteData] -> ShowS show :: MMD1NoteData -> String $cshow :: MMD1NoteData -> String showsPrec :: Int -> MMD1NoteData -> ShowS $cshowsPrec :: Int -> MMD1NoteData -> ShowS Show) {-# SPECIALISE peek :: PTR -> StorableReader MMD1NoteData #-} {-# SPECIALISE peek :: PTR -> ByteStringReader MMD1NoteData #-} peek :: (Reader m) => PTR -> m MMD1NoteData peek :: forall (m :: * -> *). Reader m => PTR -> m MMD1NoteData peek PTR p = do UBYTE byte1 <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR p forall a. Num a => a -> a -> a + PTR 0) UBYTE byte2 <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR p forall a. Num a => a -> a -> a + PTR 1) UBYTE byte3 <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR p forall a. Num a => a -> a -> a + PTR 2) UBYTE byte4 <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR p forall a. Num a => a -> a -> a + PTR 3) let nnnnnnn :: UBYTE nnnnnnn = UBYTE byte1 forall a. Bits a => a -> a -> a .&. UBYTE 0x7F let iiiiii :: UBYTE iiiiii = UBYTE byte2 forall a. Bits a => a -> a -> a .&. UBYTE 0x3F let cccccccc :: UBYTE cccccccc = UBYTE byte3 forall a. Bits a => a -> a -> a .&. UBYTE 0xFF let dddddddd :: UBYTE dddddddd = UBYTE byte4 forall a. Bits a => a -> a -> a .&. UBYTE 0xFF let note' :: UBYTE note' = UBYTE nnnnnnn let instrument' :: UBYTE instrument' = UBYTE iiiiii let command' :: UBYTE command' = UBYTE cccccccc let databyte' :: UBYTE databyte' = UBYTE dddddddd forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ UBYTE -> UBYTE -> UBYTE -> UBYTE -> MMD1NoteData MMD1NoteData UBYTE note' UBYTE instrument' UBYTE command' UBYTE databyte'