module Mezzo.Compose.Intervals where
import Mezzo.Model
import Mezzo.Model.Prim
import Mezzo.Compose.Types
import Mezzo.Compose.Builder
import Mezzo.Compose.Templates
import GHC.TypeLits
import Data.Kind
import Control.Monad
_iMaj :: IC Maj
_iMaj = IC
_iMin :: IC Min
_iMin = IC
_iPerf :: IC Perf
_iPerf = IC
_iAug :: IC Aug
_iAug = IC
_iDim :: IC Dim
_iDim = IC
_i1 :: IS Unison
_i1 = IS
_i2 :: IS Second
_i2 = IS
_i3 :: IS Third
_i3 = IS
_i4 :: IS Fourth
_i4 = IS
_i5 :: IS Fifth
_i5 = IS
_i6 :: IS Sixth
_i6 = IS
_i7 :: IS Seventh
_i7 = IS
_i8 :: IS Octave
_i8 = IS
interval :: IC ic -> IS is -> Intv (Interval ic is)
interval _ _ = Intv
iPerf1 :: Intv (Interval Perf Unison)
iPerf1 = Intv
iAug1 :: Intv (Interval Aug Unison)
iAug1 = Intv
iDim2 :: Intv (Interval Dim Second)
iDim2 = Intv
iMin2 :: Intv (Interval Min Second)
iMin2 = Intv
iMaj2 :: Intv (Interval Maj Second)
iMaj2 = Intv
iAug2 :: Intv (Interval Aug Second)
iAug2 = Intv
iDim3 :: Intv (Interval Dim Third)
iDim3 = Intv
iMin3 :: Intv (Interval Min Third)
iMin3 = Intv
iMaj3 :: Intv (Interval Maj Third)
iMaj3 = Intv
iAug3 :: Intv (Interval Aug Third)
iAug3 = Intv
iDim4 :: Intv (Interval Dim Fourth)
iDim4 = Intv
iPerf4 :: Intv (Interval Perf Fourth)
iPerf4 = Intv
iAug4 :: Intv (Interval Aug Fourth)
iAug4 = Intv
iDim5 :: Intv (Interval Dim Fifth)
iDim5 = Intv
iPerf5 :: Intv (Interval Perf Fifth)
iPerf5 = Intv
iAug5 :: Intv (Interval Aug Fifth)
iAug5 = Intv
iDim6 :: Intv (Interval Dim Sixth)
iDim6 = Intv
iMin6 :: Intv (Interval Min Sixth)
iMin6 = Intv
iMaj6 :: Intv (Interval Maj Sixth)
iMaj6 = Intv
iAug6 :: Intv (Interval Aug Sixth)
iAug6 = Intv
iDim7 :: Intv (Interval Dim Seventh)
iDim7 = Intv
iMin7 :: Intv (Interval Min Seventh)
iMin7 = Intv
iMaj7 :: Intv (Interval Maj Seventh)
iMaj7 = Intv
iAug7 :: Intv (Interval Aug Seventh)
iAug7 = Intv
iDim8 :: Intv (Interval Dim Octave)
iDim8 = Intv
iPerf8 :: Intv (Interval Perf Octave)
iPerf8 = Intv
iAug8 :: Intv (Interval Aug Octave)
iAug8 = Intv
transUp :: (tr ~ (PitchRoot (RaiseBy (RootToPitch r) i)), IntRep tr)
=> Intv i -> RootS r -> RootS tr
transUp i _ = spec Root
transDown :: (tr ~ (PitchRoot (LowerBy (RootToPitch r) i)), IntRep tr)
=> Intv i -> RootS r -> RootS tr
transDown i _ = spec Root