module HarmTrace.Models.Pop.Main ( 
    pPop
  , module HarmTrace.Models.Pop.Model
  ) where

-- Parser stuff
import Text.ParserCombinators.UU

-- Music stuff
import HarmTrace.Base.MusicRep
import HarmTrace.Models.Parser
import HarmTrace.Models.Pop.Model hiding (PD,PT)

import HarmTrace.Models.Pop.Instances ()


--------------------------------------------------------------------------------
-- From tokens to structured music pieces
--------------------------------------------------------------------------------

pPieceMaj, pPieceMin :: PMusic [Piece]
pPieceMaj = map Piece <$> amb (parseG :: PMusic [Phrase MajMode])
pPieceMin = map Piece <$> amb (parseG :: PMusic [Phrase MinMode])

pPop :: Key -> PMusic [Piece]
pPop (Key _ MajMode) = pPieceMaj
pPop (Key _ MinMode) = pPieceMin