| Safe Haskell | Safe-Inferred |
|---|
Music.Theory.Interval
Description
Common music notation intervals.
- data Interval_T
- data Interval_Q
- = Diminished
- | Minor
- | Perfect
- | Major
- | Augmented
- data Interval = Interval {}
- interval_ty :: Note_T -> Note_T -> Interval_T
- interval_q_tbl :: Integral n => [(Interval_T, [(n, Interval_Q)])]
- interval_q :: Interval_T -> Int -> Maybe Interval_Q
- interval_q_reverse :: Interval_T -> Interval_Q -> Maybe Integer
- interval_semitones :: Interval -> Integer
- note_span :: Note_T -> Note_T -> [Note_T]
- invert_ordering :: Ordering -> Ordering
- interval :: Pitch -> Pitch -> Interval
- invert_interval :: Interval -> Interval
- quality_difference_m :: Interval_Q -> Interval_Q -> Maybe Int
- quality_difference :: Interval_Q -> Interval_Q -> Int
- transpose :: Interval -> Pitch -> Pitch
- circle_of_fifths :: Pitch -> ([Pitch], [Pitch])
Documentation
data Interval_Q Source
Interval quality.
Constructors
| Diminished | |
| Minor | |
| Perfect | |
| Major | |
| Augmented |
Instances
Common music notation interval. An Ordering of LT indicates
an ascending interval, GT a descending interval, and EQ a
unison.
Constructors
| Interval | |
Fields | |
interval_ty :: Note_T -> Note_T -> Interval_TSource
Interval type between Note_T values.
map (interval_ty C) [E,B] == [Third,Seventh]
interval_q_tbl :: Integral n => [(Interval_T, [(n, Interval_Q)])]Source
Table of interval qualities. For each Interval_T gives
directed semitone interval counts for each allowable Interval_Q.
For lookup function see interval_q, for reverse lookup see
interval_q_reverse.
interval_q :: Interval_T -> Int -> Maybe Interval_QSource
Lookup Interval_Q for given Interval_T and semitone count.
interval_q Unison 11 == Just Diminished interval_q Third 5 == Just Augmented interval_q Fourth 5 == Just Perfect interval_q Unison 3 == Nothing
interval_q_reverse :: Interval_T -> Interval_Q -> Maybe IntegerSource
Lookup semitone difference of Interval_T with Interval_Q.
interval_q_reverse Third Minor == Just 3 interval_q_reverse Unison Diminished == Just 11
interval_semitones :: Interval -> IntegerSource
Semitone difference of Interval.
interval_semitones (interval (Pitch C Sharp 4) (Pitch E Sharp 5)) == 16 interval_semitones (interval (Pitch C Natural 4) (Pitch D Sharp 3)) == -9
note_span :: Note_T -> Note_T -> [Note_T]Source
Inclusive set of Note_T within indicated interval. This is not
equal to enumFromTo which is not circular.
note_span E B == [E,F,G,A,B] note_span B D == [B,C,D] enumFromTo B D == []
invert_interval :: Interval -> IntervalSource
Apply invert_ordering to interval_direction of Interval.
invert_interval (Interval Third Major LT 1) == Interval Third Major GT 1
quality_difference_m :: Interval_Q -> Interval_Q -> Maybe IntSource
The signed difference in semitones between two Interval_Q
values when applied to the same Interval_T. Can this be written
correctly without knowing the Interval_T?
quality_difference_m Minor Augmented == Just 2 quality_difference_m Augmented Diminished == Just (-3) quality_difference_m Major Perfect == Nothing
quality_difference :: Interval_Q -> Interval_Q -> IntSource
Erroring variant of quality_difference_m.