mezzo-0.3.0.0: src/Mezzo/Compose/Chords.hs
{-# LANGUAGE TemplateHaskell #-}
-----------------------------------------------------------------------------
-- |
-- Module : Mezzo.Compose.Chords
-- Description : Harmonic composition units
-- Copyright : (c) Dima Szamozvancev
-- License : MIT
--
-- Maintainer : ds709@cam.ac.uk
-- Stability : experimental
-- Portability : portable
--
-- Literals for chords and progressions.
--
-----------------------------------------------------------------------------
module Mezzo.Compose.Chords where
import Mezzo.Model
import Mezzo.Compose.Types
import Mezzo.Compose.Builder
import Mezzo.Compose.Templates
import Mezzo.Compose.Basic
-- * Atomic literals
-- ** Scale degree literals
scaleDegreeLits
-- ** Mode literals
modeLits
-- ** Dyad type literals
dyaTyLits
-- ** Triad type literals
triTyLits
-- ** Tetrad type literals
tetTyLits
_dbl :: TriType t -> TetType (DoubledT t)
_dbl t = TetType
-- ** Inversion literals
invLits
-- ** Constructors
-- | Create a new key from a pitch class, accidental and mode.
key :: PC p -> Acc a -> Mod m -> KeyS (Key p a m)
key p a m = KeyS
-- | Create a triad from a root, a triad type and an inversion.
triad :: Root r -> TriType t -> Inv i -> Cho (Triad r t i)
triad r t i = Cho
-- | Create a seventh chord from a root, a triad type and an inversion.
seventh :: Root r -> TetType t -> Inv i -> Cho (Tetrad r t i)
seventh r t i = Cho
-- * Chord builders
-- ** Dyad converters
mkDyaConvs
-- ** Triad converters
mkTriConvs
-- ** Doubled dyad converters
mkDoubledDConvs
-- ** Tetrad converters
mkTetConvs
-- ** Doubled triad converters
mkDoubledTConvs
-- ** Inversion mutators
inv :: ChorM c (InvertChord c)
inv = constConv Cho