{-# OPTIONS_GHC -Wall -fno-warn-orphans #-} {-# LANGUAGE ScopedTypeVariables #-} 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 :: forall key. PMusic [Piece key] pPieceMaj = map Piece <$> amb (parseG :: PMusic [Phrase key MajMode]) pPieceMin = map Piece <$> amb (parseG :: PMusic [Phrase key MinMode]) pJazz :: forall key. Key -> PMusic [Piece key] pJazz (Key _ MajMode) = pPieceMaj pJazz (Key _ MinMode) = pPieceMin