{-# OPTIONS_GHC -Wall -fno-warn-orphans #-} {-# LANGUAGE ScopedTypeVariables #-} module HarmTrace.Model.Main where -- Parser stuff import Text.ParserCombinators.UU -- Music stuff import HarmTrace.Base.MusicRep import HarmTrace.Model.Parser import HarmTrace.Model.Model hiding (PD,PT) import HarmTrace.Model.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]) pMajOrMin :: forall key. Key -> PMusic [Piece key] pMajOrMin (Key _ MajMode) = pPieceMaj pMajOrMin (Key _ MinMode) = pPieceMin