haskore-0.0.5: src/Haskore/Performance/Context.hs
module Haskore.Performance.Context
(T,
setPlayer, setDur, setTranspose, setDynamics,
getPlayer, getDur, getTranspose, getDynamics,
Pf.updatePlayer, Pf.updateDur, Pf.updateTranspose, Pf.updateDynamics,
contextPlayer, contextDur, contextTranspose, contextDynamics, )
where
import qualified Haskore.Basic.Pitch as Pitch
-- import qualified Haskore.Music as Music
import qualified Haskore.Performance as Pf
import qualified Haskore.Performance.Player as Player
import Haskore.Performance(Context(..))
-- import qualified Numeric.NonNegative.Class as NonNeg
{- If the Haskell compilers would support mutual depending modules
the Context data type would be declared here instead of in Performance. -}
type T time dyn note = Pf.Context time dyn note
type SetContext time dyn note a = a -> T time dyn note -> T time dyn note
setPlayer :: SetContext time dyn note (Player.T time dyn note)
setPlayer = Pf.updatePlayer . const
setDur :: SetContext time dyn note time
setDur = Pf.updateDur . const
setTranspose :: SetContext time dyn note Pitch.Relative
setTranspose = Pf.updateTranspose . const
setDynamics :: SetContext time dyn note dyn
setDynamics = Pf.updateDynamics . const
type GetContext time dyn note a = T time dyn note -> a
getPlayer :: GetContext time dyn note (Player.T time dyn note)
getPlayer = Pf.contextPlayer
getDur :: GetContext time dyn note time
getDur = Pf.contextDur
getTranspose :: GetContext time dyn note Pitch.Relative
getTranspose = Pf.contextTranspose
getDynamics :: GetContext time dyn note dyn
getDynamics = Pf.contextDynamics