-------------------------------------------------------------------------------- -- | -- Module : HarmTrace.Models.Jazz.Main -- Copyright : (c) 2010-2012 Universiteit Utrecht, 2012 University of Oxford -- License : GPL3 -- -- Maintainer : bash@cs.uu.nl, jpm@cs.ox.ac.uk -- Stability : experimental -- Portability : non-portable -- -- Summary: The jazz parser -------------------------------------------------------------------------------- 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