med-module 0.1.2 → 0.1.2.1
raw patch · 2 files changed
+9/−3 lines, 2 files
Files
- med-module.cabal +2/−2
- src/Sound/MED/Raw/HybridInstr.hs +7/−1
med-module.cabal view
@@ -1,5 +1,5 @@ Name: med-module-Version: 0.1.2+Version: 0.1.2.1 Synopsis: Parse song module files from Amiga MED and OctaMED Description: MED (Music EDitor) and its successor OctaMED@@ -29,7 +29,7 @@ Cabal-Version: >=1.10 Source-Repository this- Tag: 0.1.2+ Tag: 0.1.2.1 Type: darcs Location: http://hub.darcs.net/thielema/med-module
src/Sound/MED/Raw/HybridInstr.hs view
@@ -6,6 +6,9 @@ import Sound.MED.Basic.Amiga import Sound.MED.Basic.Utility +import Control.Monad (liftM)++ data HybridInstr = HybridInstr { defaultdecay :: UBYTE , reserved :: [ UBYTE ]@@ -27,6 +30,8 @@ {-# SPECIALISE peek :: PTR -> ByteStringReader HybridInstr #-} peek :: (Reader m) => PTR -> m HybridInstr peek p = do+ let nonEmpty (x:xs) = (x,xs)+ nonEmpty [] = error "list must be non-empty" defaultdecay' <- peekUBYTE (p+6) reserved' <- mapM peekUBYTE $ pointerRange (p+7) 1 3 rep' <- peekUWORD (p+10)@@ -38,7 +43,8 @@ wforms' <- peekUWORD (p+20) voltbl' <- mapM peekUBYTE $ pointerRange (p+22) 1 128 wftbl' <- mapM peekUBYTE $ pointerRange (p+150) 150 128- wf0':wf'' <- mapM peekPTR $ pointerRange (p+278) 4 64+ (wf0',wf'') <- liftM nonEmpty $+ mapM peekPTR $ pointerRange (p+278) 4 64 wf' <- mapM (SynthWF.peek . (p+) $?) wf'' return $ HybridInstr defaultdecay' reserved' rep' replen' voltbllen' wftbllen'