Mezzo.Model.Types

Note properties

data PitchClass

data Accidental

data OctaveNum

type Duration

Singleton types for note properties

data PC pc

data Acc acc

data Oct oct

data Dur dur

Pitches

data PitchType

data Pit p

type family (p :: PitchType) =?= (q :: PitchType) :: Bool where ...

type family (p1 :: PitchType) <<=? (p2 :: PitchType) where ...

type family (p1 :: PitchType) <<? (p2 :: PitchType) where ...

Harmonic types

data Mode

data ScaleDegree

data KeyType

data RootType

data Mod m

data ScaDeg sd

data KeyS k

data Root r

type family RootToPitch (dr :: RootType) :: PitchType where ...

type family PitchToNat (p :: PitchType) :: Nat where ...

type family Sharpen (r :: RootType) :: RootType where ...

type family Flatten (r :: RootType) :: RootType where ...

type family Dot (d :: Duration) :: Duration where ...

type family FromRoot (r :: RootType) (d :: Nat) :: Partiture 1 d where ...

type family FromSilence (d :: Nat) :: Partiture 1 d where ...

Specialised musical vector types

type Voice l

type Partiture n l

Intervals

data IntervalSize

data IntervalClass

data IntervalType

type family MakeInterval (p1 :: PitchType) (p2 :: PitchType) :: IntervalType where ...

type family HalfStepsUpBy (p :: PitchType) (n :: Nat) :: PitchType where ...

type family HalfStepsDownBy (p :: PitchType) (n :: Nat) :: PitchType where ...

type family RaiseBy (p :: PitchType) (i :: IntervalType) :: PitchType where ...

type family LowerBy (p :: PitchType) (i :: IntervalType) :: PitchType where ...

type family RaiseAllBy' (ps :: Vector PitchType n) (i :: IntervalType) :: Vector PitchType n where ...

type family LowerAllBy' (ps :: Vector PitchType n) (i :: IntervalType) :: Vector PitchType n where ...

type family RaiseByOct (p :: PitchType) :: PitchType where ...

type family LowerByOct (p :: PitchType) :: PitchType where ...

type family RaiseAllByOct (ps :: Voice l) :: Voice l where ...