packages feed

HarmTrace-1.0: src/HarmTrace/Models/Jazz/Main.hs

module HarmTrace.Models.Jazz.Main ( 
    pJazz 
  , module HarmTrace.Models.Jazz.Model
  ) where

-- Parser stuff
import Text.ParserCombinators.UU

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

import HarmTrace.Models.Jazz.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])

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