module Sound.MED.Raw.InstrExt where import Sound.MED.Basic.Amiga import Sound.MED.Basic.Utility import Foreign.Storable (Storable, sizeOf) data InstrExt = InstrExt { InstrExt -> Maybe UBYTE hold :: Maybe UBYTE , InstrExt -> Maybe UBYTE decay :: Maybe UBYTE , InstrExt -> Maybe UBYTE suppress_midi_off :: Maybe UBYTE , InstrExt -> Maybe BYTE finetune :: Maybe BYTE , InstrExt -> Maybe UBYTE default_pitch :: Maybe UBYTE , InstrExt -> Maybe UBYTE instr_flags :: Maybe UBYTE , InstrExt -> Maybe UWORD long_midi_preset :: Maybe UWORD , InstrExt -> Maybe UBYTE output_device :: Maybe UBYTE , InstrExt -> Maybe UBYTE reserved :: Maybe UBYTE , InstrExt -> Maybe ULONG long_repeat :: Maybe ULONG , InstrExt -> Maybe ULONG long_replen :: Maybe ULONG } deriving (Int -> InstrExt -> ShowS [InstrExt] -> ShowS InstrExt -> String (Int -> InstrExt -> ShowS) -> (InstrExt -> String) -> ([InstrExt] -> ShowS) -> Show InstrExt forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [InstrExt] -> ShowS $cshowList :: [InstrExt] -> ShowS show :: InstrExt -> String $cshow :: InstrExt -> String showsPrec :: Int -> InstrExt -> ShowS $cshowsPrec :: Int -> InstrExt -> ShowS Show) {-# SPECIALISE peek :: UWORD -> PTR -> StorableReader InstrExt #-} {-# SPECIALISE peek :: UWORD -> PTR -> ByteStringReader InstrExt #-} peek :: (Reader m) => UWORD -> PTR -> m InstrExt peek :: UWORD -> ULONG -> m InstrExt peek UWORD size ULONG p = do let peekHelp :: (Reader m, Storable a) => a -> Peek m a -> UWORD -> m (Maybe a) peekHelp :: a -> Peek m a -> UWORD -> m (Maybe a) peekHelp a elm Peek m a peeker UWORD offset = Bool -> m a -> m (Maybe a) forall (m :: * -> *) a. Monad m => Bool -> m a -> m (Maybe a) skipIf (UWORD offset UWORD -> UWORD -> UWORD forall a. Num a => a -> a -> a + Int -> UWORD forall a b. (Integral a, Num b) => a -> b fromIntegral (a -> Int forall a. Storable a => a -> Int sizeOf a elm) UWORD -> UWORD -> Bool forall a. Ord a => a -> a -> Bool > UWORD size) (m a -> m (Maybe a)) -> m a -> m (Maybe a) forall a b. (a -> b) -> a -> b $ Peek m a peeker (ULONG p ULONG -> ULONG -> ULONG forall a. Num a => a -> a -> a + UWORD -> ULONG forall a b. (Integral a, Num b) => a -> b fromIntegral UWORD offset) Peek m a peeker $?? :: Peek m a -> UWORD -> m (Maybe a) $?? UWORD offset = a -> Peek m a -> UWORD -> m (Maybe a) forall (m :: * -> *) a. (Reader m, Storable a) => a -> Peek m a -> UWORD -> m (Maybe a) peekHelp a forall a. HasCallStack => a undefined Peek m a peeker UWORD offset Maybe UBYTE hold' <- Peek m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE Peek m UBYTE -> UWORD -> m (Maybe UBYTE) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 0 Maybe UBYTE decay' <- Peek m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE Peek m UBYTE -> UWORD -> m (Maybe UBYTE) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 1 Maybe UBYTE suppress_midi_off' <- Peek m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE Peek m UBYTE -> UWORD -> m (Maybe UBYTE) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 2 Maybe BYTE finetune' <- Peek m BYTE forall (m :: * -> *). Reader m => Peek m BYTE peekBYTE Peek m BYTE -> UWORD -> m (Maybe BYTE) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 3 Maybe UBYTE default_pitch' <- Peek m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE Peek m UBYTE -> UWORD -> m (Maybe UBYTE) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 4 Maybe UBYTE instr_flags' <- Peek m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE Peek m UBYTE -> UWORD -> m (Maybe UBYTE) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 5 Maybe UWORD long_midi_preset' <- Peek m UWORD forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD Peek m UWORD -> UWORD -> m (Maybe UWORD) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 6 Maybe UBYTE output_device' <- Peek m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE Peek m UBYTE -> UWORD -> m (Maybe UBYTE) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 8 Maybe UBYTE reserved' <- Peek m UBYTE forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE Peek m UBYTE -> UWORD -> m (Maybe UBYTE) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 9 Maybe ULONG long_repeat' <- Peek m ULONG forall (m :: * -> *). Reader m => Peek m ULONG peekULONG Peek m ULONG -> UWORD -> m (Maybe ULONG) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 10 Maybe ULONG long_replen' <- Peek m ULONG forall (m :: * -> *). Reader m => Peek m ULONG peekULONG Peek m ULONG -> UWORD -> m (Maybe ULONG) forall (m :: * -> *) a. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 14 InstrExt -> m InstrExt forall (m :: * -> *) a. Monad m => a -> m a return (InstrExt -> m InstrExt) -> InstrExt -> m InstrExt forall a b. (a -> b) -> a -> b $ Maybe UBYTE -> Maybe UBYTE -> Maybe UBYTE -> Maybe BYTE -> Maybe UBYTE -> Maybe UBYTE -> Maybe UWORD -> Maybe UBYTE -> Maybe UBYTE -> Maybe ULONG -> Maybe ULONG -> InstrExt InstrExt Maybe UBYTE hold' Maybe UBYTE decay' Maybe UBYTE suppress_midi_off' Maybe BYTE finetune' Maybe UBYTE default_pitch' Maybe UBYTE instr_flags' Maybe UWORD long_midi_preset' Maybe UBYTE output_device' Maybe UBYTE reserved' Maybe ULONG long_repeat' Maybe ULONG long_replen'