Copyright | (c) Dima Szamozvancev |
---|---|
License | MIT |
Maintainer | ds709@cam.ac.uk |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Literals for chords and progressions.
- type InKey k v = KeyS k -> v
- toProg :: InKey k (PhraseList p) -> InKey k (Prog p)
- prog :: ValidProg r t p => InKey k (PhraseList p) -> Music (Sig :: Signature t k r) (FromProg p t)
- data PhraseList p where
- Cdza :: Cad c -> KeyS k -> PhraseList (CadPhrase c)
- (:+) :: InKey k (Phr p) -> InKey k (PhraseList ps) -> KeyS k -> PhraseList (p := ps)
- cadence :: InKey k (Cad c) -> InKey k (PhraseList (CadPhrase c))
- ph_I :: InKey k (Ton (t :: Tonic k l)) -> InKey k (Phr (PhraseI t :: Phrase k l))
- ph_VI :: InKey k (Dom (d :: Dominant k l1)) -> InKey k (Ton (t :: Tonic k (l - l1))) -> InKey k (Phr (PhraseVI d t :: Phrase k l))
- ph_IVI :: InKey k (Ton (t1 :: Tonic k (l2 - l1))) -> InKey k (Dom (d :: Dominant k l1)) -> InKey k (Ton (t2 :: Tonic k (l - l2))) -> InKey k (Phr (PhraseIVI t1 d t2 :: Phrase k l))
- auth_V_I :: InKey k (Cad (AuthCad (DegChord :: DegreeC V MajQ k Inv1 Oct2) (DegChord :: DegreeC I (KeyToQual k) k Inv0 Oct3)))
- auth_V7_I :: InKey k (Cad (AuthCad7 (DegChord :: DegreeC V DomQ k Inv2 Oct2) (DegChord :: DegreeC I (KeyToQual k) k Inv0 Oct3)))
- auth_vii_I :: InKey k (Cad (AuthCadVii (DegChord :: DegreeC VII DimQ k Inv1 Oct2) (DegChord :: DegreeC I (KeyToQual k) k Inv0 Oct3)))
- auth_64_V7_I :: InKey k (Cad (AuthCad64 (DegChord :: DegreeC I (KeyToQual k) k Inv2 Oct3) (DegChord :: DegreeC V DomQ k Inv3 Oct2) (DegChord :: DegreeC I (KeyToQual k) k Inv1 Oct3)))
- decept_V_iv :: InKey k (Cad (DeceptCad (DegChord :: DegreeC V DomQ k Inv2 Oct2) (DegChord :: DegreeC VI (KeyToOtherQual k) k Inv1 Oct2)))
- full :: InKey k (Sub s) -> InKey k (Cad c) -> InKey k (Cad (FullCad s c))
- end :: InKey k (PhraseList (CadPhrase NoCad))
- ton :: InKey k (Ton (TonT (DegChord :: DegreeC I (KeyToQual k) k Inv0 Oct3)))
- ton_T_T :: InKey k (Ton ton1) -> InKey k (Ton ton2) -> InKey k (Ton (TonTT ton1 ton2))
- dom_V :: InKey k (Dom (DomVM (DegChord :: DegreeC V MajQ k Inv2 Oct2)))
- dom_V7 :: InKey k (Dom (DomV7 (DegChord :: DegreeC V DomQ k Inv2 Oct2)))
- dom_vii0 :: InKey k (Dom (DomVii0 (DegChord :: DegreeC VII DimQ k Inv1 Oct2)))
- dom_II_V7 :: InKey k (Dom (DomSecD (DegChord :: DegreeC II DomQ k Inv0 Oct3) (DegChord :: DegreeC V DomQ k Inv2 Oct2)))
- dom_S_D :: InKey k (Sub subdom) -> InKey k (Dom dom) -> InKey k (Dom (DomSD subdom dom))
- dom_D_D :: InKey k (Dom dom1) -> InKey k (Dom dom2) -> InKey k (Dom (DomDD dom1 dom2))
- subdom_IV :: InKey k (Sub (SubIV (DegChord :: DegreeC IV (KeyToQual k) k Inv2 Oct2)))
- subdom_ii :: IsMajor k "ii subdominant" => InKey k (Sub (SubIIm (DegChord :: DegreeC II MinQ k Inv0 Oct3)))
- subdom_iii_IV :: IsMajor k "iii-IV subdominant" => InKey k (Sub (SubIIImIVM (DegChord :: DegreeC III MinQ k Inv0 Oct3) (DegChord :: DegreeC IV MajQ k Inv3 Oct2)))
- subdom_S_S :: InKey k (Sub sub1) -> InKey k (Sub sub2) -> InKey k (Sub (SubSS sub1 sub2))
- duple :: TimeSig 2
- triple :: TimeSig 3
- quadruple :: TimeSig 4
- c_maj :: KeyS (Key C Natural MajorMode)
- c_min :: KeyS (Key C Natural MinorMode)
- cf_maj :: KeyS (Key C Flat MajorMode)
- cf_min :: KeyS (Key C Flat MinorMode)
- cs_maj :: KeyS (Key C Sharp MajorMode)
- cs_min :: KeyS (Key C Sharp MinorMode)
- d_maj :: KeyS (Key D Natural MajorMode)
- d_min :: KeyS (Key D Natural MinorMode)
- df_maj :: KeyS (Key D Flat MajorMode)
- df_min :: KeyS (Key D Flat MinorMode)
- ds_maj :: KeyS (Key D Sharp MajorMode)
- ds_min :: KeyS (Key D Sharp MinorMode)
- e_maj :: KeyS (Key E Natural MajorMode)
- e_min :: KeyS (Key E Natural MinorMode)
- ef_maj :: KeyS (Key E Flat MajorMode)
- ef_min :: KeyS (Key E Flat MinorMode)
- es_maj :: KeyS (Key E Sharp MajorMode)
- es_min :: KeyS (Key E Sharp MinorMode)
- f_maj :: KeyS (Key F Natural MajorMode)
- f_min :: KeyS (Key F Natural MinorMode)
- ff_maj :: KeyS (Key F Flat MajorMode)
- ff_min :: KeyS (Key F Flat MinorMode)
- fs_maj :: KeyS (Key F Sharp MajorMode)
- fs_min :: KeyS (Key F Sharp MinorMode)
- g_maj :: KeyS (Key G Natural MajorMode)
- g_min :: KeyS (Key G Natural MinorMode)
- gf_maj :: KeyS (Key G Flat MajorMode)
- gf_min :: KeyS (Key G Flat MinorMode)
- gs_maj :: KeyS (Key G Sharp MajorMode)
- gs_min :: KeyS (Key G Sharp MinorMode)
- a_maj :: KeyS (Key A Natural MajorMode)
- a_min :: KeyS (Key A Natural MinorMode)
- af_maj :: KeyS (Key A Flat MajorMode)
- af_min :: KeyS (Key A Flat MinorMode)
- as_maj :: KeyS (Key A Sharp MajorMode)
- as_min :: KeyS (Key A Sharp MinorMode)
- b_maj :: KeyS (Key B Natural MajorMode)
- b_min :: KeyS (Key B Natural MinorMode)
- bf_maj :: KeyS (Key B Flat MajorMode)
- bf_min :: KeyS (Key B Flat MinorMode)
- bs_maj :: KeyS (Key B Sharp MajorMode)
- bs_min :: KeyS (Key B Sharp MinorMode)
Functional harmony terms
Progressions
prog :: ValidProg r t p => InKey k (PhraseList p) -> Music (Sig :: Signature t k r) (FromProg p t) Source #
Create a new musical progression from the given time signature and progression schema.
Phrases
data PhraseList p where Source #
List of phrases in a progression parameterised by the key, ending with a cadence.
Cdza :: Cad c -> KeyS k -> PhraseList (CadPhrase c) | A cadential phrase, ending the progression. |
(:+) :: InKey k (Phr p) -> InKey k (PhraseList ps) -> KeyS k -> PhraseList (p := ps) infixr 5 | Add a new phrase to the beginning of the progression. |
cadence :: InKey k (Cad c) -> InKey k (PhraseList (CadPhrase c)) Source #
Create a new cadential phrase.
ph_I :: InKey k (Ton (t :: Tonic k l)) -> InKey k (Phr (PhraseI t :: Phrase k l)) Source #
Dominant-tonic phrase.
ph_VI :: InKey k (Dom (d :: Dominant k l1)) -> InKey k (Ton (t :: Tonic k (l - l1))) -> InKey k (Phr (PhraseVI d t :: Phrase k l)) Source #
Dominant-tonic phrase.
ph_IVI :: InKey k (Ton (t1 :: Tonic k (l2 - l1))) -> InKey k (Dom (d :: Dominant k l1)) -> InKey k (Ton (t2 :: Tonic k (l - l2))) -> InKey k (Phr (PhraseIVI t1 d t2 :: Phrase k l)) Source #
Tonic-dominant-tonic phrase.
Cadences
auth_V_I :: InKey k (Cad (AuthCad (DegChord :: DegreeC V MajQ k Inv1 Oct2) (DegChord :: DegreeC I (KeyToQual k) k Inv0 Oct3))) Source #
Authentic V-I dominant cadence.
auth_V7_I :: InKey k (Cad (AuthCad7 (DegChord :: DegreeC V DomQ k Inv2 Oct2) (DegChord :: DegreeC I (KeyToQual k) k Inv0 Oct3))) Source #
Authentic V7-I dominant seventh cadence.
auth_vii_I :: InKey k (Cad (AuthCadVii (DegChord :: DegreeC VII DimQ k Inv1 Oct2) (DegChord :: DegreeC I (KeyToQual k) k Inv0 Oct3))) Source #
Authentic vii-I leading tone cadence.
auth_64_V7_I :: InKey k (Cad (AuthCad64 (DegChord :: DegreeC I (KeyToQual k) k Inv2 Oct3) (DegChord :: DegreeC V DomQ k Inv3 Oct2) (DegChord :: DegreeC I (KeyToQual k) k Inv1 Oct3))) Source #
Authentic cadential 6-4 cadence.
decept_V_iv :: InKey k (Cad (DeceptCad (DegChord :: DegreeC V DomQ k Inv2 Oct2) (DegChord :: DegreeC VI (KeyToOtherQual k) k Inv1 Oct2))) Source #
Deceptive V-iv cadence.
full :: InKey k (Sub s) -> InKey k (Cad c) -> InKey k (Cad (FullCad s c)) Source #
Full cadence, starting with a subdominant.
Tonic chords
ton_T_T :: InKey k (Ton ton1) -> InKey k (Ton ton2) -> InKey k (Ton (TonTT ton1 ton2)) Source #
Doubled tonics.
Dominants
dom_V7 :: InKey k (Dom (DomV7 (DegChord :: DegreeC V DomQ k Inv2 Oct2))) Source #
Dominant seventh (V7) chord.
dom_vii0 :: InKey k (Dom (DomVii0 (DegChord :: DegreeC VII DimQ k Inv1 Oct2))) Source #
Dominant leading tone (vii) chord.
dom_II_V7 :: InKey k (Dom (DomSecD (DegChord :: DegreeC II DomQ k Inv0 Oct3) (DegChord :: DegreeC V DomQ k Inv2 Oct2))) Source #
Secondary dominant - dominant (V/V-V7) chord.
dom_S_D :: InKey k (Sub subdom) -> InKey k (Dom dom) -> InKey k (Dom (DomSD subdom dom)) Source #
Subdominant followed by a dominant.
dom_D_D :: InKey k (Dom dom1) -> InKey k (Dom dom2) -> InKey k (Dom (DomDD dom1 dom2)) Source #
Dominant followed by another dominant.
Subdominants
subdom_IV :: InKey k (Sub (SubIV (DegChord :: DegreeC IV (KeyToQual k) k Inv2 Oct2))) Source #
Subdominant fourth (IV) chord.
subdom_ii :: IsMajor k "ii subdominant" => InKey k (Sub (SubIIm (DegChord :: DegreeC II MinQ k Inv0 Oct3))) Source #
Subdominant minor second (ii) chord.
subdom_iii_IV :: IsMajor k "iii-IV subdominant" => InKey k (Sub (SubIIImIVM (DegChord :: DegreeC III MinQ k Inv0 Oct3) (DegChord :: DegreeC IV MajQ k Inv3 Oct2))) Source #
Subdominant third-fourth (iii-IV) progression.
subdom_S_S :: InKey k (Sub sub1) -> InKey k (Sub sub2) -> InKey k (Sub (SubSS sub1 sub2)) Source #
Doubled subdominants.