music-preludes-1.7: src/Music/Prelude/Basic.hs
{-# 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.Score,
module Music.Pitch,
module Music.Dynamics,
module Music.Parts,
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.Dynamics
import Music.Parts hiding (Part)
import Music.Pitch hiding (Fifths, Note, Part,
pitch)
-- Need to export Pitch.Pitch for transf for now
import qualified Music.Pitch
import Music.Score hiding (Pitch, Interval)
import Control.Lens.Operators hiding ((<.>), (<|), (|>))
import Control.Monad.Plus
import Data.Semigroup (Product)
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 (Sum Double, Sum Double)
(DynamicT (Sum Double)
[Behavior BasicPitch]))))))))
type BasicPitch = Music.Pitch.Pitch
open = openLilypond . asScore
play = error "Not implemented: play"
openAndPlay x = open x >> play x