{-# LANGUAGE
    GeneralizedNewtypeDeriving,
    DeriveDataTypeable #-} 

module Music.Prelude.Piano (
        module Music.Score,
        PianoPart,
        Note,
        asScore
  ) where

import Music.Score
import Data.Typeable

asScore :: Score Note -> Score Note
asScore = id

data PianoPart
    = Pno
    deriving (Eq, Ord, Enum)

instance Show PianoPart where
    show Pno  = "Piano"

type Note = (PartT PianoPart (TieT
    (TremoloT (HarmonicT (SlideT
        (DynamicT (ArticulationT (TextT Integer))))))))