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 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 :: forall (m :: * -> *). Reader m => 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 :: forall (m :: * -> *) a. (Reader m, Storable a) => a -> Peek m a -> UWORD -> m (Maybe a) peekHelp a elm Peek m a peeker UWORD offset = forall (m :: * -> *) a. Monad m => Bool -> m a -> m (Maybe a) skipIf (UWORD offset forall a. Num a => a -> a -> a + forall a b. (Integral a, Num b) => a -> b fromIntegral (forall a. Storable a => a -> Int sizeOf a elm) forall a. Ord a => a -> a -> Bool > UWORD size) forall a b. (a -> b) -> a -> b $ Peek m a peeker (ULONG p forall a. Num a => a -> a -> a + 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 = forall (m :: * -> *) a. (Reader m, Storable a) => a -> Peek m a -> UWORD -> m (Maybe a) peekHelp forall a. HasCallStack => a undefined Peek m a peeker UWORD offset Maybe UBYTE hold' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 0 Maybe UBYTE decay' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 1 Maybe UBYTE suppress_midi_off' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 2 Maybe BYTE finetune' <- forall (m :: * -> *). Reader m => Peek m BYTE peekBYTE forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 3 Maybe UBYTE default_pitch' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 4 Maybe UBYTE instr_flags' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 5 Maybe UWORD long_midi_preset' <- forall (m :: * -> *). Reader m => Peek m UWORD peekUWORD forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 6 Maybe UBYTE output_device' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 8 Maybe UBYTE reserved' <- forall (m :: * -> *). Reader m => Peek m UBYTE peekUBYTE forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 9 Maybe ULONG long_repeat' <- forall (m :: * -> *). Reader m => Peek m ULONG peekULONG forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 10 Maybe ULONG long_replen' <- forall (m :: * -> *). Reader m => Peek m ULONG peekULONG forall {m :: * -> *} {a}. (Reader m, Storable a) => Peek m a -> UWORD -> m (Maybe a) $?? UWORD 14 forall (m :: * -> *) a. Monad m => a -> m a return 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'