packages feed

unmed2-0.0: src/MEDPlaySeq.hs

module MEDPlaySeq where

import Amiga (stringFromBytes)

import qualified MMD0Song
import MMD0Song(MMD0Song)

import qualified PlaySeq
import PlaySeq(PlaySeq)

import Human

import qualified Data.List as List

data MEDPlaySeq = MEDPlaySeq
  { name :: String
  , indices :: [Int] -- ^ block indices
  }

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')