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 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 :: forall (m :: * -> *). Reader m => PTR -> m SynthWF peek PTR p = do UWORD len2' <- forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD (PTR pforall a. Num a => a -> a -> a +PTR 0) [BYTE] wfdata' <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM forall (m :: * -> *). Reader m => Peek m BYTE peekBYTE forall a b. (a -> b) -> a -> b $ forall i. Integral i => PTR -> PTR -> i -> [PTR] pointerRangeGen (PTR pforall a. Num a => a -> a -> a +PTR 2) PTR 1 (UWORD len2'forall a. Num a => a -> a -> a *UWORD 2) forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ UWORD -> [BYTE] -> SynthWF SynthWF UWORD len2' [BYTE] wfdata'