packages feed

mezzo 0.1.0.0 → 0.2.0.0

raw patch · 9 files changed

+127/−45 lines, 9 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

- Lib: someFunc :: IO ()
- Mezzo: someFunc :: IO ()
- Mezzo.Compose.Basic: ei :: Dur Eighth
- Mezzo.Compose.Basic: ei' :: Dur (Dot Eighth)
- Mezzo.Compose.Basic: fl :: Acc Flat
- Mezzo.Compose.Basic: ha :: Dur Half
- Mezzo.Compose.Basic: ha' :: Dur (Dot Half)
- Mezzo.Compose.Basic: na :: Acc Natural
- Mezzo.Compose.Basic: o0 :: Oct Oct0
- Mezzo.Compose.Basic: o1 :: Oct Oct1
- Mezzo.Compose.Basic: o2 :: Oct Oct2
- Mezzo.Compose.Basic: o3 :: Oct Oct3
- Mezzo.Compose.Basic: o4 :: Oct Oct4
- Mezzo.Compose.Basic: o5 :: Oct Oct5
- Mezzo.Compose.Basic: o6 :: Oct Oct6
- Mezzo.Compose.Basic: o7 :: Oct Oct7
- Mezzo.Compose.Basic: o8 :: Oct Oct8
- Mezzo.Compose.Basic: o_1 :: Oct Oct_1
- Mezzo.Compose.Basic: qu :: Dur Quarter
- Mezzo.Compose.Basic: qu' :: Dur (Dot Quarter)
- Mezzo.Compose.Basic: sh :: Acc Sharp
- Mezzo.Compose.Basic: si :: Dur Sixteenth
- Mezzo.Compose.Basic: si' :: Dur (Dot Sixteenth)
- Mezzo.Compose.Basic: th :: Dur ThirtySecond
- Mezzo.Compose.Basic: wh :: Dur Whole
- Mezzo.Compose.Basic: wh' :: Dur (Dot Whole)
- Mezzo.Compose.Harmonic: _sev :: SevType MajMinSeventh
- Mezzo.Compose.Harmonic: sev :: forall r_a123R. ChorC SeventhChord r_a123R MajMinSeventh
- Mezzo.Compose.Harmonic: sev' :: forall r_a123O i_a123P. ChorC' SeventhChord r_a123O MajMinSeventh i_a123P
+ Mezzo.Compose.Basic: _ei :: Dur Eighth
+ Mezzo.Compose.Basic: _ei' :: Dur (Dot Eighth)
+ Mezzo.Compose.Basic: _fl :: Acc Flat
+ Mezzo.Compose.Basic: _ha :: Dur Half
+ Mezzo.Compose.Basic: _ha' :: Dur (Dot Half)
+ Mezzo.Compose.Basic: _na :: Acc Natural
+ Mezzo.Compose.Basic: _o0 :: Oct Oct0
+ Mezzo.Compose.Basic: _o1 :: Oct Oct1
+ Mezzo.Compose.Basic: _o2 :: Oct Oct2
+ Mezzo.Compose.Basic: _o3 :: Oct Oct3
+ Mezzo.Compose.Basic: _o4 :: Oct Oct4
+ Mezzo.Compose.Basic: _o5 :: Oct Oct5
+ Mezzo.Compose.Basic: _o6 :: Oct Oct6
+ Mezzo.Compose.Basic: _o7 :: Oct Oct7
+ Mezzo.Compose.Basic: _o8 :: Oct Oct8
+ Mezzo.Compose.Basic: _o_1 :: Oct Oct_1
+ Mezzo.Compose.Basic: _qu :: Dur Quarter
+ Mezzo.Compose.Basic: _qu' :: Dur (Dot Quarter)
+ Mezzo.Compose.Basic: _sh :: Acc Sharp
+ Mezzo.Compose.Basic: _si :: Dur Sixteenth
+ Mezzo.Compose.Basic: _si' :: Dur (Dot Sixteenth)
+ Mezzo.Compose.Basic: _th :: Dur ThirtySecond
+ Mezzo.Compose.Basic: _wh :: Dur Whole
+ Mezzo.Compose.Basic: _wh' :: Dur (Dot Whole)
+ Mezzo.Compose.Combine: melody :: Melody (End :-- None) Quarter
+ Mezzo.Compose.Combine: pad2 :: (HarmConstraints m (FromSilence b), HarmConstraints (m +-+ FromSilence b) (FromSilence b), Primitive b) => Music (m :: Partiture (a - 2) b) -> Music (((m +-+ FromSilence b) +-+ FromSilence b) :: Partiture a b)
+ Mezzo.Compose.Combine: pad3 :: (HarmConstraints m (FromSilence b), HarmConstraints (m +-+ FromSilence b) (FromSilence b), HarmConstraints ((m +-+ FromSilence b) +-+ FromSilence b) (FromSilence b), Primitive b) => Music (m :: Partiture (a - 3) b) -> Music ((((m +-+ FromSilence b) +-+ FromSilence b) +-+ FromSilence b) :: Partiture a b)
+ Mezzo.Compose.Combine: pad4 :: (HarmConstraints m (FromSilence b), HarmConstraints (m +-+ FromSilence b) (FromSilence b), HarmConstraints ((m +-+ FromSilence b) +-+ FromSilence b) (FromSilence b), HarmConstraints (((m +-+ FromSilence b) +-+ FromSilence b) +-+ FromSilence b) (FromSilence b), Primitive b) => Music (m :: Partiture (a - 4) b) -> Music (((((m +-+ FromSilence b) +-+ FromSilence b) +-+ FromSilence b) +-+ FromSilence b) :: Partiture a b)
+ Mezzo.Compose.Combine: restWhile :: Primitive l => Music (m :: Partiture n l) -> Music (FromSilence l)
+ Mezzo.Compose.Harmonic: _dom7 :: SevType MajMinSeventh
+ Mezzo.Compose.Harmonic: dom7 :: forall r_a12sL. ChorC SeventhChord r_a12sL MajMinSeventh
+ Mezzo.Compose.Harmonic: dom7' :: forall r_a12sI i_a12sJ. ChorC' SeventhChord r_a12sI MajMinSeventh i_a12sJ
- Mezzo.Compose.Basic: ec :: forall n_aGTf r_aGTg. (Primitive n_aGTf, IntListRep r_aGTg) => ChorT (r_aGTg :: ChordType n_aGTf) Eighth
+ Mezzo.Compose.Basic: ec :: forall n_aGXF r_aGXG. (Primitive n_aGXF, IntListRep r_aGXG) => ChorT (r_aGXG :: ChordType n_aGXF) Eighth
- Mezzo.Compose.Basic: ec' :: forall n_aGTi r_aGTj. (Primitive n_aGTi, IntListRep r_aGTj) => ChorT (r_aGTj :: ChordType n_aGTi) (Dot Eighth)
+ Mezzo.Compose.Basic: ec' :: forall n_aGXI r_aGXJ. (Primitive n_aGXI, IntListRep r_aGXJ) => ChorT (r_aGXJ :: ChordType n_aGXI) (Dot Eighth)
- Mezzo.Compose.Basic: en :: forall r_aGTb. IntRep r_aGTb => RootT r_aGTb Eighth
+ Mezzo.Compose.Basic: en :: forall r_aGXB. IntRep r_aGXB => RootT r_aGXB Eighth
- Mezzo.Compose.Basic: en' :: forall r_aGTd. IntRep r_aGTd => RootT r_aGTd (Dot Eighth)
+ Mezzo.Compose.Basic: en' :: forall r_aGXD. IntRep r_aGXD => RootT r_aGXD (Dot Eighth)
- Mezzo.Compose.Basic: hc :: forall n_aGSV r_aGSW. (Primitive n_aGSV, IntListRep r_aGSW) => ChorT (r_aGSW :: ChordType n_aGSV) Half
+ Mezzo.Compose.Basic: hc :: forall n_aGXl r_aGXm. (Primitive n_aGXl, IntListRep r_aGXm) => ChorT (r_aGXm :: ChordType n_aGXl) Half
- Mezzo.Compose.Basic: hc' :: forall n_aGSY r_aGSZ. (Primitive n_aGSY, IntListRep r_aGSZ) => ChorT (r_aGSZ :: ChordType n_aGSY) (Dot Half)
+ Mezzo.Compose.Basic: hc' :: forall n_aGXo r_aGXp. (Primitive n_aGXo, IntListRep r_aGXp) => ChorT (r_aGXp :: ChordType n_aGXo) (Dot Half)
- Mezzo.Compose.Basic: hn :: forall r_aGSR. IntRep r_aGSR => RootT r_aGSR Half
+ Mezzo.Compose.Basic: hn :: forall r_aGXh. IntRep r_aGXh => RootT r_aGXh Half
- Mezzo.Compose.Basic: hn' :: forall r_aGST. IntRep r_aGST => RootT r_aGST (Dot Half)
+ Mezzo.Compose.Basic: hn' :: forall r_aGXj. IntRep r_aGXj => RootT r_aGXj (Dot Half)
- Mezzo.Compose.Basic: qc :: forall n_aGT5 r_aGT6. (Primitive n_aGT5, IntListRep r_aGT6) => ChorT (r_aGT6 :: ChordType n_aGT5) Quarter
+ Mezzo.Compose.Basic: qc :: forall n_aGXv r_aGXw. (Primitive n_aGXv, IntListRep r_aGXw) => ChorT (r_aGXw :: ChordType n_aGXv) Quarter
- Mezzo.Compose.Basic: qc' :: forall n_aGT8 r_aGT9. (Primitive n_aGT8, IntListRep r_aGT9) => ChorT (r_aGT9 :: ChordType n_aGT8) (Dot Quarter)
+ Mezzo.Compose.Basic: qc' :: forall n_aGXy r_aGXz. (Primitive n_aGXy, IntListRep r_aGXz) => ChorT (r_aGXz :: ChordType n_aGXy) (Dot Quarter)
- Mezzo.Compose.Basic: qn :: forall r_aGT1. IntRep r_aGT1 => RootT r_aGT1 Quarter
+ Mezzo.Compose.Basic: qn :: forall r_aGXr. IntRep r_aGXr => RootT r_aGXr Quarter
- Mezzo.Compose.Basic: qn' :: forall r_aGT3. IntRep r_aGT3 => RootT r_aGT3 (Dot Quarter)
+ Mezzo.Compose.Basic: qn' :: forall r_aGXt. IntRep r_aGXt => RootT r_aGXt (Dot Quarter)
- Mezzo.Compose.Basic: sc :: forall n_aGTp r_aGTq. (Primitive n_aGTp, IntListRep r_aGTq) => ChorT (r_aGTq :: ChordType n_aGTp) Sixteenth
+ Mezzo.Compose.Basic: sc :: forall n_aGXP r_aGXQ. (Primitive n_aGXP, IntListRep r_aGXQ) => ChorT (r_aGXQ :: ChordType n_aGXP) Sixteenth
- Mezzo.Compose.Basic: sc' :: forall n_aGTs r_aGTt. (Primitive n_aGTs, IntListRep r_aGTt) => ChorT (r_aGTt :: ChordType n_aGTs) (Dot Sixteenth)
+ Mezzo.Compose.Basic: sc' :: forall n_aGXS r_aGXT. (Primitive n_aGXS, IntListRep r_aGXT) => ChorT (r_aGXT :: ChordType n_aGXS) (Dot Sixteenth)
- Mezzo.Compose.Basic: sn :: forall r_aGTl. IntRep r_aGTl => RootT r_aGTl Sixteenth
+ Mezzo.Compose.Basic: sn :: forall r_aGXL. IntRep r_aGXL => RootT r_aGXL Sixteenth
- Mezzo.Compose.Basic: sn' :: forall r_aGTn. IntRep r_aGTn => RootT r_aGTn (Dot Sixteenth)
+ Mezzo.Compose.Basic: sn' :: forall r_aGXN. IntRep r_aGXN => RootT r_aGXN (Dot Sixteenth)
- Mezzo.Compose.Basic: tc :: forall n_aH9S r_aH9T. (Primitive n_aH9S, IntListRep r_aH9T) => ChorT (r_aH9T :: ChordType n_aH9S) ThirtySecond
+ Mezzo.Compose.Basic: tc :: forall n_aGUM r_aGUN. (Primitive n_aGUM, IntListRep r_aGUN) => ChorT (r_aGUN :: ChordType n_aGUM) ThirtySecond
- Mezzo.Compose.Basic: tn :: forall r_aH9Q. IntRep r_aH9Q => RootT r_aH9Q ThirtySecond
+ Mezzo.Compose.Basic: tn :: forall r_aGUK. IntRep r_aGUK => RootT r_aGUK ThirtySecond
- Mezzo.Compose.Basic: wc :: forall n_aGSL r_aGSM. (Primitive n_aGSL, IntListRep r_aGSM) => ChorT (r_aGSM :: ChordType n_aGSL) Whole
+ Mezzo.Compose.Basic: wc :: forall n_aGXb r_aGXc. (Primitive n_aGXb, IntListRep r_aGXc) => ChorT (r_aGXc :: ChordType n_aGXb) Whole
- Mezzo.Compose.Basic: wc' :: forall n_aGSO r_aGSP. (Primitive n_aGSO, IntListRep r_aGSP) => ChorT (r_aGSP :: ChordType n_aGSO) (Dot Whole)
+ Mezzo.Compose.Basic: wc' :: forall n_aGXe r_aGXf. (Primitive n_aGXe, IntListRep r_aGXf) => ChorT (r_aGXf :: ChordType n_aGXe) (Dot Whole)
- Mezzo.Compose.Basic: wn :: forall r_aGSH. IntRep r_aGSH => RootT r_aGSH Whole
+ Mezzo.Compose.Basic: wn :: forall r_aGX7. IntRep r_aGX7 => RootT r_aGX7 Whole
- Mezzo.Compose.Basic: wn' :: forall r_aGSJ. IntRep r_aGSJ => RootT r_aGSJ (Dot Whole)
+ Mezzo.Compose.Basic: wn' :: forall r_aGX9. IntRep r_aGX9 => RootT r_aGX9 (Dot Whole)
- Mezzo.Compose.Harmonic: aug :: forall r_a11Z6. ChorC Triad r_a11Z6 AugTriad
+ Mezzo.Compose.Harmonic: aug :: forall r_a12o0. ChorC Triad r_a12o0 AugTriad
- Mezzo.Compose.Harmonic: aug' :: forall r_a11Z3 i_a11Z4. ChorC' Triad r_a11Z3 AugTriad i_a11Z4
+ Mezzo.Compose.Harmonic: aug' :: forall r_a12nX i_a12nY. ChorC' Triad r_a12nX AugTriad i_a12nY
- Mezzo.Compose.Harmonic: augD :: forall r_a129v. ChorC SeventhChord r_a129v (Doubled AugTriad)
+ Mezzo.Compose.Harmonic: augD :: forall r_a12yp. ChorC SeventhChord r_a12yp (Doubled AugTriad)
- Mezzo.Compose.Harmonic: augD' :: forall r_a129s i_a129t. ChorC' SeventhChord r_a129s (Doubled AugTriad) i_a129t
+ Mezzo.Compose.Harmonic: augD' :: forall r_a12ym i_a12yn. ChorC' SeventhChord r_a12ym (Doubled AugTriad) i_a12yn
- Mezzo.Compose.Harmonic: dim :: forall r_a11Z2. ChorC Triad r_a11Z2 DimTriad
+ Mezzo.Compose.Harmonic: dim :: forall r_a12nW. ChorC Triad r_a12nW DimTriad
- Mezzo.Compose.Harmonic: dim' :: forall r_a11YZ i_a11Z0. ChorC' Triad r_a11YZ DimTriad i_a11Z0
+ Mezzo.Compose.Harmonic: dim' :: forall r_a12nT i_a12nU. ChorC' Triad r_a12nT DimTriad i_a12nU
- Mezzo.Compose.Harmonic: dim7 :: forall r_a123F. ChorC SeventhChord r_a123F DimSeventh
+ Mezzo.Compose.Harmonic: dim7 :: forall r_a12sz. ChorC SeventhChord r_a12sz DimSeventh
- Mezzo.Compose.Harmonic: dim7' :: forall r_a123C i_a123D. ChorC' SeventhChord r_a123C DimSeventh i_a123D
+ Mezzo.Compose.Harmonic: dim7' :: forall r_a12sw i_a12sx. ChorC' SeventhChord r_a12sw DimSeventh i_a12sx
- Mezzo.Compose.Harmonic: dimD :: forall r_a129r. ChorC SeventhChord r_a129r (Doubled DimTriad)
+ Mezzo.Compose.Harmonic: dimD :: forall r_a12yl. ChorC SeventhChord r_a12yl (Doubled DimTriad)
- Mezzo.Compose.Harmonic: dimD' :: forall r_a129o i_a129p. ChorC' SeventhChord r_a129o (Doubled DimTriad) i_a129p
+ Mezzo.Compose.Harmonic: dimD' :: forall r_a12yi i_a12yj. ChorC' SeventhChord r_a12yi (Doubled DimTriad) i_a12yj
- Mezzo.Compose.Harmonic: hdim7 :: forall r_a123J. ChorC SeventhChord r_a123J HalfDimSeventh
+ Mezzo.Compose.Harmonic: hdim7 :: forall r_a12sD. ChorC SeventhChord r_a12sD HalfDimSeventh
- Mezzo.Compose.Harmonic: hdim7' :: forall r_a123G i_a123H. ChorC' SeventhChord r_a123G HalfDimSeventh i_a123H
+ Mezzo.Compose.Harmonic: hdim7' :: forall r_a12sA i_a12sB. ChorC' SeventhChord r_a12sA HalfDimSeventh i_a12sB
- Mezzo.Compose.Harmonic: maj :: forall r_a11Ze. ChorC Triad r_a11Ze MajTriad
+ Mezzo.Compose.Harmonic: maj :: forall r_a12o8. ChorC Triad r_a12o8 MajTriad
- Mezzo.Compose.Harmonic: maj' :: forall r_a11Zb i_a11Zc. ChorC' Triad r_a11Zb MajTriad i_a11Zc
+ Mezzo.Compose.Harmonic: maj' :: forall r_a12o5 i_a12o6. ChorC' Triad r_a12o5 MajTriad i_a12o6
- Mezzo.Compose.Harmonic: maj7 :: forall r_a123V. ChorC SeventhChord r_a123V MajSeventh
+ Mezzo.Compose.Harmonic: maj7 :: forall r_a12sP. ChorC SeventhChord r_a12sP MajSeventh
- Mezzo.Compose.Harmonic: maj7' :: forall r_a123S i_a123T. ChorC' SeventhChord r_a123S MajSeventh i_a123T
+ Mezzo.Compose.Harmonic: maj7' :: forall r_a12sM i_a12sN. ChorC' SeventhChord r_a12sM MajSeventh i_a12sN
- Mezzo.Compose.Harmonic: majD :: forall r_a129D. ChorC SeventhChord r_a129D (Doubled MajTriad)
+ Mezzo.Compose.Harmonic: majD :: forall r_a12yx. ChorC SeventhChord r_a12yx (Doubled MajTriad)
- Mezzo.Compose.Harmonic: majD' :: forall r_a129A i_a129B. ChorC' SeventhChord r_a129A (Doubled MajTriad) i_a129B
+ Mezzo.Compose.Harmonic: majD' :: forall r_a12yu i_a12yv. ChorC' SeventhChord r_a12yu (Doubled MajTriad) i_a12yv
- Mezzo.Compose.Harmonic: min :: forall r_a11Za. ChorC Triad r_a11Za MinTriad
+ Mezzo.Compose.Harmonic: min :: forall r_a12o4. ChorC Triad r_a12o4 MinTriad
- Mezzo.Compose.Harmonic: min' :: forall r_a11Z7 i_a11Z8. ChorC' Triad r_a11Z7 MinTriad i_a11Z8
+ Mezzo.Compose.Harmonic: min' :: forall r_a12o1 i_a12o2. ChorC' Triad r_a12o1 MinTriad i_a12o2
- Mezzo.Compose.Harmonic: min7 :: forall r_a123N. ChorC SeventhChord r_a123N MinSeventh
+ Mezzo.Compose.Harmonic: min7 :: forall r_a12sH. ChorC SeventhChord r_a12sH MinSeventh
- Mezzo.Compose.Harmonic: min7' :: forall r_a123K i_a123L. ChorC' SeventhChord r_a123K MinSeventh i_a123L
+ Mezzo.Compose.Harmonic: min7' :: forall r_a12sE i_a12sF. ChorC' SeventhChord r_a12sE MinSeventh i_a12sF
- Mezzo.Compose.Harmonic: minD :: forall r_a129z. ChorC SeventhChord r_a129z (Doubled MinTriad)
+ Mezzo.Compose.Harmonic: minD :: forall r_a12yt. ChorC SeventhChord r_a12yt (Doubled MinTriad)
- Mezzo.Compose.Harmonic: minD' :: forall r_a129w i_a129x. ChorC' SeventhChord r_a129w (Doubled MinTriad) i_a129x
+ Mezzo.Compose.Harmonic: minD' :: forall r_a12yq i_a12yr. ChorC' SeventhChord r_a12yq (Doubled MinTriad) i_a12yr

Files

− app/Main.hs
@@ -1,6 +0,0 @@-module Main where--import Lib--main :: IO ()-main = someFunc
mezzo.cabal view
@@ -1,5 +1,5 @@ name:                mezzo-version:             0.1.0.0+version:             0.2.0.0 synopsis:            Typesafe music composition description:         A Haskell music composition library that enforces common                      musical rules in the type system.@@ -16,8 +16,7 @@  library   hs-source-dirs:      src-  exposed-modules:     Lib-                     , Mezzo+  exposed-modules:     Mezzo                      , Mezzo.Model                      , Mezzo.Model.Prim                      , Mezzo.Model.Music@@ -27,6 +26,7 @@                      , Mezzo.Model.Harmony.Functional                      , Mezzo.Model.Reify +                     , Mezzo.Compose                      , Mezzo.Compose.Types                      , Mezzo.Compose.Builder                      , Mezzo.Compose.Templates@@ -34,6 +34,7 @@                      , Mezzo.Compose.Harmonic                      , Mezzo.Compose.Combine +                     , Mezzo.Render                      , Mezzo.Render.MIDI    build-depends:       base >= 4.7 && < 5@@ -41,14 +42,6 @@                      , template-haskell                      , HCodecs                      , boxes-  default-language:    Haskell2010--executable mezzo-exe-  hs-source-dirs:      app-  main-is:             Main.hs-  ghc-options:         -threaded -rtsopts -with-rtsopts=-N-  build-depends:       base-                     , mezzo   default-language:    Haskell2010  test-suite mezzo-test
− src/Lib.hs
@@ -1,6 +0,0 @@-module Lib-    ( someFunc-    ) where--someFunc :: IO ()-someFunc = putStrLn "someFunc"
src/Mezzo.hs view
@@ -1,6 +1,27 @@-module Mezzo-    ( someFunc-    ) where -someFunc :: IO ()-someFunc = putStrLn "someFunc"+-----------------------------------------------------------------------------+-- |+-- Module      :  Mezzo+-- Description :  Mezzo core module+-- Copyright   :  (c) Dima Szamozvancev+-- License     :  MIT+--+-- Maintainer  :  ds709@cam.ac.uk+-- Stability   :  experimental+-- Portability :  portable+--+-- Module providing the external interface to the Mezzo library and EDSL.+--+-----------------------------------------------------------------------------++module Mezzo (module X) where++-- Uses import/export shortcut as suggested by HLint.++import Mezzo.Render as X+import Mezzo.Compose as X+import Mezzo.Model as X+    ( Music (..)+    , Voice (..)+    , Partiture (..)+    )
+ src/Mezzo/Compose.hs view
@@ -0,0 +1,25 @@++-----------------------------------------------------------------------------+-- |+-- Module      :  Mezzo.Compose+-- Description :  Mezzo music description language+-- Copyright   :  (c) Dima Szamozvancev+-- License     :  MIT+--+-- Maintainer  :  ds709@cam.ac.uk+-- Stability   :  experimental+-- Portability :  portable+--+-- Module providing the external interface to the Mezzo EDSL.+--+-----------------------------------------------------------------------------++module Mezzo.Compose (module X) where++-- Uses import/export shortcut as suggested by HLint.++import Mezzo.Compose.Basic as X+import Mezzo.Compose.Builder as X+import Mezzo.Compose.Types as X+import Mezzo.Compose.Combine as X+import Mezzo.Compose.Harmonic as X
src/Mezzo/Compose/Basic.hs view
@@ -38,9 +38,9 @@ octaveLits  -- ** Duration literals and terminators+mk32ndLits join <$> traverse mkDurLits [''Whole, ''Half, ''Quarter, ''Eighth, ''Sixteenth] -mk32ndLits  -- * Pitches 
src/Mezzo/Compose/Combine.hs view
@@ -24,9 +24,14 @@     , durToInt     , duration     , voices+    , restWhile     , pad+    , pad2+    , pad3+    , pad4     -- * Melody composition     , play+    , melody     ) where  import Mezzo.Model@@ -68,9 +73,38 @@ chordVoices :: forall (n :: Nat) (c :: ChordType n) . Primitive n => Cho c -> Int chordVoices _ = prim (undefined :: ChordType n) -- Need to get a kind-level variable to the term level --- | Add an empty voice to the end of a piece of music.-pad :: (HarmConstraints m (FromSilence b), Primitive b) => Music (m :: Partiture (a - 1) b) -> Music ((m +-+ FromSilence b) :: Partiture a b)-pad m = m :-: rest (musicDur m)+-- | Add an empty voice to the piece of music.+pad :: (HarmConstraints m (FromSilence b), Primitive b)+    => Music (m :: Partiture (a - 1) b) -> Music ((m +-+ FromSilence b) :: Partiture a b)+pad m = m :-: restWhile m++-- | Add two empty voices to the piece of music.+pad2 :: ( HarmConstraints m (FromSilence b)+        , HarmConstraints (m +-+ FromSilence b) (FromSilence b)+        , Primitive b)+     => Music (m :: Partiture (a - 2) b) -> Music ((m +-+ FromSilence b +-+ FromSilence b) :: Partiture a b)+pad2 m = m :-: restWhile m :-: restWhile m++-- | Add three empty voices to the piece of music.+pad3 :: ( HarmConstraints m (FromSilence b)+        , HarmConstraints (m +-+ FromSilence b) (FromSilence b)+        , HarmConstraints (m +-+ FromSilence b +-+ FromSilence b) (FromSilence b)+        , Primitive b)+     => Music (m :: Partiture (a - 3) b) -> Music ((m +-+ FromSilence b +-+ FromSilence b +-+ FromSilence b) :: Partiture a b)+pad3 m = m :-: restWhile m :-: restWhile m :-: restWhile m++-- | Add four empty voices to the piece of music.+pad4 :: ( HarmConstraints m (FromSilence b)+        , HarmConstraints (m +-+ FromSilence b) (FromSilence b)+        , HarmConstraints (m +-+ FromSilence b +-+ FromSilence b) (FromSilence b)+        , HarmConstraints (m +-+ FromSilence b +-+ FromSilence b +-+ FromSilence b) (FromSilence b)+        , Primitive b)+     => Music (m :: Partiture (a - 4) b) -> Music ((m +-+ FromSilence b +-+ FromSilence b +-+ FromSilence b +-+ FromSilence b) :: Partiture a b)+pad4 m = m :-: restWhile m :-: restWhile m :-: restWhile m :-: restWhile m++-- | Rest for the duration of the given music piece.+restWhile :: Primitive l =>  Music (m :: Partiture n l) -> Music (FromSilence l)+restWhile m = rest (musicDur m)  ------------------------------------------------------------------------------- -- Melodies
src/Mezzo/Compose/Templates.hs view
@@ -125,26 +125,26 @@             dec1' <- [d| $(varP litName') = Dur |]             return $ tySig1 : dec1 ++ tySig1' : dec1'     noteTerm <- do-            let valName = mkName $ head (durLitFormatter name) : "n"+            let valName = mkName $ (durLitFormatter name) !! 1 : "n"             tySig2 <- sigD valName $ [t| forall r. IntRep r => RootT r $(conT name) |]             dec2 <- [d| $(varP valName) = \p -> Note p $(varE litName) |]-            let valName' = mkName $ head (durLitFormatter name) : "n\'"+            let valName' = mkName $ (durLitFormatter name) !! 1 : "n\'"             tySig2' <- sigD valName' $ [t| forall r. IntRep r => RootT r (Dot $(conT name)) |]             dec2' <- [d| $(varP valName') = \p -> Note p $(varE litName') |]             return $ tySig2 : dec2 ++ tySig2' : dec2'     restTerm <- do-            let valName = mkName $ head (durLitFormatter name) : "r"+            let valName = mkName $ (durLitFormatter name) !! 1 : "r"             tySig2 <- sigD valName $ [t| RestT $(conT name) |]             dec2 <- [d| $(varP valName) = const (Rest $(varE litName)) |]-            let valName' = mkName $ head (durLitFormatter name) : "r\'"+            let valName' = mkName $ (durLitFormatter name) !! 1 : "r\'"             tySig2' <- sigD valName' $ [t| RestT (Dot $(conT name)) |]             dec2' <- [d| $(varP valName') = const (Rest $(varE litName')) |]             return $ tySig2 : dec2 ++ tySig2' : dec2'     chordTerm <- do-            let valName = mkName $ head (durLitFormatter name) : "c"+            let valName = mkName $ (durLitFormatter name) !! 1 : "c"             tySig2 <- sigD valName $ [t| forall n r. (Primitive n, IntListRep r) => ChorT (r :: ChordType n) $(conT name) |]             dec2 <- [d| $(varP valName) = \c -> Chord c $(varE litName) |]-            let valName' = mkName $ head (durLitFormatter name) : "c\'"+            let valName' = mkName $ (durLitFormatter name) !! 1 : "c\'"             tySig2' <- sigD valName' $ [t| forall n r. (Primitive n, IntListRep r) => ChorT (r :: ChordType n) (Dot $(conT name)) |]             dec2' <- [d| $(varP valName') = \c -> Chord c $(varE litName') |]             return $ tySig2 : dec2 ++ tySig2' : dec2'@@ -152,7 +152,7 @@  mk32ndLits :: DecsQ -- Don't want to make dotted literals for thirty second notes. mk32ndLits = do-    let litName = mkName $ "th"+    let litName = mkName $ "_th"     literal <- do             tySig1 <- sigD litName $ [t| Dur $(conT ''ThirtySecond) |]             dec1 <- [d| $(varP litName) = Dur |]@@ -260,16 +260,16 @@  -- | 'Accidental' formatter. accFormatter :: Formatter-accFormatter = map toLower . take 2 . nameBase+accFormatter = ('_' :) . map toLower . take 2 . nameBase  -- | 'OctaveNum' formatter. octFormatter :: Formatter-octFormatter oct = 'o' : drop 3 (nameBase oct)+octFormatter oct = "_o" ++ drop 3 (nameBase oct)  -- | One letter accidental with explicit 'Naturals'. shortAccFormatter :: Formatter-shortAccFormatter (accFormatter -> "fl") = "f"-shortAccFormatter (accFormatter -> name) = [head name]+shortAccFormatter (accFormatter -> "_fl") = "f"+shortAccFormatter (accFormatter -> name) = [name !! 1]  -- | One letter accidental with implicit 'Naturals'. shorterAccFormatter :: Formatter@@ -292,7 +292,7 @@  -- | Formatter for duration literals. durLitFormatter :: Formatter-durLitFormatter = map toLower . take 2 . nameBase+durLitFormatter = ('_' :) . map toLower . take 2 . nameBase  -- | Formatter for pitch literals. pitchLitFormatter :: Name -> Name -> Name -> String@@ -314,7 +314,7 @@     "AugTriad"       -> "_aug"     "DimTriad"       -> "_dim"     "MajSeventh"     -> "_maj7"-    "MajMinSeventh"  -> "_sev"+    "MajMinSeventh"  -> "_dom7"     "MinSeventh"     -> "_min7"     "HalfDimSeventh" -> "_hdim7"     "DimSeventh"     -> "_dim7"
+ src/Mezzo/Render.hs view
@@ -0,0 +1,21 @@++-----------------------------------------------------------------------------+-- |+-- Module      :  Mezzo.Render+-- Description :  Mezzo exporting module+-- Copyright   :  (c) Dima Szamozvancev+-- License     :  MIT+--+-- Maintainer  :  ds709@cam.ac.uk+-- Stability   :  experimental+-- Portability :  portable+--+-- Module providing the external interface to the Mezzo exporting module.+--+-----------------------------------------------------------------------------++module Mezzo.Render (module X) where++-- Uses import/export shortcut as suggested by HLint.++import Mezzo.Render.MIDI as X