module Sound.MED.Generic.PlaySeq where
import qualified Sound.MED.Raw.MMD0Song as MMD0Song
import Sound.MED.Raw.MMD0Song(MMD0Song)
import qualified Sound.MED.Raw.PlaySeq as PlaySeq
import Sound.MED.Raw.PlaySeq(PlaySeq)
import Sound.MED.Basic.Human(Human(human))
import Sound.MED.Basic.Amiga(stringFromBytes)
import qualified Data.List as List
data MEDPlaySeq = MEDPlaySeq
{ name :: String
, indices :: [Int]
}
playSeq0 :: MMD0Song -> MEDPlaySeq
playSeq0 song =
MEDPlaySeq "" $ take (fromIntegral $ MMD0Song.songlen song) $
map fromIntegral $ MMD0Song.playseq song
playSeq2 :: PlaySeq -> MEDPlaySeq
playSeq2 pseq =
MEDPlaySeq
{ name = stringFromBytes (PlaySeq.name pseq)
, indices = map fromIntegral (PlaySeq.seq pseq)
}
instance Human MEDPlaySeq where
human (MEDPlaySeq name' indices') =
(if null name' then "playseq" else name') ++ ": " ++
List.intercalate ", " (map show indices')