{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE TypeFamilies #-} ------------------------------------------------------------------------------------ -- | -- Copyright : (c) Hans Hoglund 2012 -- -- License : BSD-style -- -- Maintainer : hans@hanshoglund.se -- Stability : experimental -- Portability : non-portable (TF,GNTD) -- -- A basic music representation. -- ------------------------------------------------------------------------------------- module Music.Prelude.Basic ( module Music.Pitch, module Music.Dynamics, module Music.Articulation, module Music.Parts, module Music.Score, module Control.Monad.Plus, module Control.Lens.Operators, BasicNote, -- BasicPitch, asScore, asVoice, asTrack, asBasicNote, open, play, openAndPlay ) where import Data.Default import Data.Typeable import Music.Pitch hiding (Fifths, Note) import qualified Music.Pitch import Music.Dynamics import Music.Articulation import Music.Parts hiding (Part) import Music.Score hiding (Pitch, Dynamics, Articulation, Interval) import Control.Lens.Operators hiding ((<.>), (<|), (|>)) import Control.Monad.Plus import Music.Prelude.Instances () asBasicNote :: BasicNote -> BasicNote asBasicNote = id asScore :: Score BasicNote -> Score BasicNote asScore = id asVoice :: Voice BasicNote -> Voice BasicNote asVoice = id asTrack :: Track BasicNote -> Track BasicNote asTrack = id type BasicNote = (PartT BasicPart (TextT (TieT (SlideT (TremoloT (HarmonicT (ArticulationT Articulation (DynamicT Dynamics [Behavior Pitch])))))))) -- type BasicDynamics = Music.Dynamics.Dynamics -- type BasicArticulation = Music.Articulation.Articulation -- type BasicPitch = Music.Pitch.Pitch open = openLilypond . asScore play = error "Not implemented: play" openAndPlay x = open x >> play x