module Sound.MED.Raw.MMD0Song where import qualified Sound.MED.Raw.MMD0Sample as MMD0Sample import Sound.MED.Raw.MMD0Sample(MMD0Sample) import Sound.MED.Basic.Amiga import Sound.MED.Basic.Utility data MMD0Song = MMD0Song { MMD0Song -> [MMD0Sample] sample :: [ MMD0Sample ] , MMD0Song -> UWORD numblocks :: UWORD , MMD0Song -> UWORD songlen :: UWORD , MMD0Song -> [UBYTE] playseq :: [ UBYTE ] , MMD0Song -> UWORD deftempo :: UWORD , MMD0Song -> BYTE playtransp :: BYTE , MMD0Song -> UBYTE flags :: UBYTE , MMD0Song -> UBYTE flags2 :: UBYTE , MMD0Song -> UBYTE tempo2 :: UBYTE , MMD0Song -> [UBYTE] trkvol :: [ UBYTE ] , MMD0Song -> UBYTE mastervol :: UBYTE , MMD0Song -> UBYTE numsamples :: UBYTE } deriving (Int -> MMD0Song -> ShowS [MMD0Song] -> ShowS MMD0Song -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MMD0Song] -> ShowS $cshowList :: [MMD0Song] -> ShowS show :: MMD0Song -> String $cshow :: MMD0Song -> String showsPrec :: Int -> MMD0Song -> ShowS $cshowsPrec :: Int -> MMD0Song -> ShowS Show) {-# SPECIALISE peek :: PTR -> StorableReader MMD0Song #-} {-# SPECIALISE peek :: PTR -> ByteStringReader MMD0Song #-} peek :: (Reader m) => PTR -> m MMD0Song peek :: forall (m :: * -> *). Reader m => PTR -> m MMD0Song peek PTR p = do [MMD0Sample] sample' <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM forall (m :: * -> *). Reader m => PTR -> m MMD0Sample MMD0Sample.peek forall a b. (a -> b) -> a -> b $ PTR -> PTR -> Int -> [PTR] pointerRange PTR p PTR 8 Int 63 UWORD numblocks' <- forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD (PTR pforall a. Num a => a -> a -> a +PTR 504) UWORD songlen' <- forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD (PTR pforall a. Num a => a -> a -> a +PTR 506) [UBYTE] playseq' <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall a b. (a -> b) -> a -> b $ PTR -> PTR -> Int -> [PTR] pointerRange (PTR pforall a. Num a => a -> a -> a +PTR 508) PTR 1 Int 256 UWORD deftempo' <- forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD (PTR pforall a. Num a => a -> a -> a +PTR 764) BYTE playtransp' <- forall (m :: * -> *). Reader m => Peek m BYTE peekBYTE (PTR pforall a. Num a => a -> a -> a +PTR 766) UBYTE flags' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR pforall a. Num a => a -> a -> a +PTR 767) UBYTE flags2' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR pforall a. Num a => a -> a -> a +PTR 768) UBYTE tempo2' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR pforall a. Num a => a -> a -> a +PTR 769) [UBYTE] trkvol' <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall a b. (a -> b) -> a -> b $ PTR -> PTR -> Int -> [PTR] pointerRange (PTR pforall a. Num a => a -> a -> a +PTR 770) PTR 1 Int 16 UBYTE mastervol' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR pforall a. Num a => a -> a -> a +PTR 786) UBYTE numsamples' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE (PTR pforall a. Num a => a -> a -> a +PTR 787) forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ [MMD0Sample] -> UWORD -> UWORD -> [UBYTE] -> UWORD -> BYTE -> UBYTE -> UBYTE -> UBYTE -> [UBYTE] -> UBYTE -> UBYTE -> MMD0Song MMD0Song [MMD0Sample] sample' UWORD numblocks' UWORD songlen' [UBYTE] playseq' UWORD deftempo' BYTE playtransp' UBYTE flags' UBYTE flags2' UBYTE tempo2' [UBYTE] trkvol' UBYTE mastervol' UBYTE numsamples'