module Sound.MED.Raw.SynthWF where import Sound.MED.Basic.Amiga import Sound.MED.Basic.Utility data SynthWF = SynthWF { SynthWF -> UWORD len2 :: UWORD , SynthWF -> [BYTE] wfdata :: [ BYTE ] } deriving (Int -> SynthWF -> ShowS [SynthWF] -> ShowS SynthWF -> String (Int -> SynthWF -> ShowS) -> (SynthWF -> String) -> ([SynthWF] -> ShowS) -> Show SynthWF forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [SynthWF] -> ShowS $cshowList :: [SynthWF] -> ShowS show :: SynthWF -> String $cshow :: SynthWF -> String showsPrec :: Int -> SynthWF -> ShowS $cshowsPrec :: Int -> SynthWF -> ShowS Show) {-# SPECIALISE peek :: PTR -> StorableReader SynthWF #-} {-# SPECIALISE peek :: PTR -> ByteStringReader SynthWF #-} peek :: (Reader m) => PTR -> m SynthWF peek :: PTR -> m SynthWF peek PTR p = do UWORD len2' <- Peek m UWORD forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD (PTR pPTR -> PTR -> PTR forall a. Num a => a -> a -> a +PTR 0) [BYTE] wfdata' <- (PTR -> m BYTE) -> [PTR] -> m [BYTE] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM PTR -> m BYTE forall (m :: * -> *). Reader m => Peek m BYTE peekBYTE ([PTR] -> m [BYTE]) -> [PTR] -> m [BYTE] forall a b. (a -> b) -> a -> b $ PTR -> PTR -> UWORD -> [PTR] forall i. Integral i => PTR -> PTR -> i -> [PTR] pointerRangeGen (PTR pPTR -> PTR -> PTR forall a. Num a => a -> a -> a +PTR 2) PTR 1 (UWORD len2'UWORD -> UWORD -> UWORD forall a. Num a => a -> a -> a *UWORD 2) SynthWF -> m SynthWF forall (m :: * -> *) a. Monad m => a -> m a return (SynthWF -> m SynthWF) -> SynthWF -> m SynthWF forall a b. (a -> b) -> a -> b $ UWORD -> [BYTE] -> SynthWF SynthWF UWORD len2' [BYTE] wfdata'