File SMTheory.mys
Music theory utilities, chords, intervals...
SMTheory.mys is automatically included when you Include "SMUtils"
.
- Sylvain Machefert
Classes
Class | Summary |
---|---|
Chord | Chord building, accept more notations than builtin HA chords. |
Interval | Interval between two notes, or to build a second note from the first. |
Sections
Section | Summary |
---|---|
Chords | Chord class and other chords utility functions, like extracting chords from the chord line of a staff. |
Intervals | Interval constants |
Strings | strings utility functions |
Symbols | Symbols (notes, rests...) utility functions |
Unicode | Unicode representation of some musical symbols, and Unicode string functions. |
Summary
Constant | Type | Summary |
---|---|---|
IL_ELEVENTH | int | Eleventh interval label, c to f'... |
IL_FIFTH | int | Fifth interval label, C to G, C♯ to G♭... |
IL_FOURTEENTH | int | Fourteenth interval label, c to b'... |
IL_FOURTH | int | Fourth interval label, C to F, C to F♯... |
IL_NINTH | int | Ninth interval label, c to d'... |
IL_OCTAVE | int | Octave interval label, C to C'... |
IL_SECOND | int | Second interval label, C to D, C to D♭, C♭ to D♯... |
IL_SEVENTH | int | Seventh interval label, C to B, C♯ to B♭... |
IL_SIXTH | int | Sixth interval label, C to A, C to A♭... |
IL_TENTH | int | Tenth interval label, c to e'... |
IL_THIRD | int | Third interval label, C to E♭, C♯ to E♯... |
IL_THIRTEENTH | int | Thirteenth interval label, c to a'... |
IL_TWELFTH | int | Twelfth interval label, c to g'... |
IL_UNISON | int | Unison interval label, C to C, C to C♯... |
INTERVAL_AUGMENTED_FIFTH_DOWN | Interval | Descending augmented fifth interval betwwen C4 and F♭3 |
INTERVAL_AUGMENTED_FIFTH_UP | Interval | Augmented fifth interval betwwen C4 and G♯4 |
INTERVAL_AUGMENTED_FOURTH_DOWN | Interval | Augmented fourth interval betwwen C4 and G♭3 |
INTERVAL_AUGMENTED_FOURTH_UP | Interval | Augmented fourth interval betwwen C4 and F♯4 |
INTERVAL_AUGMENTED_OCTAVE_DOWN | Interval | Descending augmented octave interval between C4 and C♭3 |
INTERVAL_AUGMENTED_OCTAVE_UP | Interval | Augmented octave interval between C4 and C♯5 |
INTERVAL_AUGMENTED_SECOND_DOWN | Interval | Descending augmented second interval between C4 and B𝄫3 |
INTERVAL_AUGMENTED_SECOND_UP | Interval | Augmented second interval between C4 and D♯4 |
INTERVAL_AUGMENTED_SEVENTH_DOWN | Interval | Descending augmented seventh interval between C4 and D𝄫3 |
INTERVAL_AUGMENTED_SEVENTH_UP | Interval | Augmented seventh interval between C4 and B♯4 |
INTERVAL_AUGMENTED_SIXTH_DOWN | Interval | Descending augmented sixth interval between C4 and E𝄫3 |
INTERVAL_AUGMENTED_SIXTH_UP | Interval | Augmented sixth interval between C4 and A♯4 |
INTERVAL_AUGMENTED_THIRD_DOWN | Interval | Descending augmented third interval between C4 and A𝄫3 |
INTERVAL_AUGMENTED_THIRD_UP | Interval | Augmented third interval between C4 and E♯4 |
INTERVAL_AUGMENTED_UNISON | Interval | Augmented unison interval between C4 and C♯4 |
INTERVAL_DIMINISHED_FIFTH_DOWN | Interval | Diminished fifth interval betwwen C4 and F♯3 |
INTERVAL_DIMINISHED_FIFTH_UP | Interval | Diminished fifth interval betwwen C4 and G♭4 |
INTERVAL_DIMINISHED_FOURTH_DOWN | Interval | Descending diminished fourth interval betwwen C4 and G♯3 |
INTERVAL_DIMINISHED_FOURTH_UP | Interval | Diminished fourth interval betwwen C4 and F♭4 |
INTERVAL_DIMINISHED_OCTAVE_DOWN | Interval | Descending diminished octave interval between C4 and C♯3 |
INTERVAL_DIMINISHED_OCTAVE_UP | Interval | Diminished octave interval between C4 and C♭5 |
INTERVAL_DIMINISHED_SECOND_DOWN | Interval | Descending diminished second interval between G4 and F&s;ahrp;♯4 |
INTERVAL_DIMINISHED_SECOND_UP | Interval | Diminished second interval between C4 and D𝄫4 |
INTERVAL_DIMINISHED_SEVENTH_DOWN | Interval | Descending diminished seventh interval between C4 and D♭3 |
INTERVAL_DIMINISHED_SEVENTH_UP | Interval | Diminished seventh interval between C4 and B𝄫4 |
INTERVAL_DIMINISHED_SIXTH_DOWN | Interval | Descending diminished sixth interval between C4 and E♯3 |
INTERVAL_DIMINISHED_SIXTH_UP | Interval | Diminished sixth interval between C4 and A𝄫4 |
INTERVAL_DIMINISHED_THIRD_DOWN | Interval | Descending diminished third interval between C4 and A♯3 |
INTERVAL_DIMINISHED_THIRD_UP | Interval | Diminished third interval between C4 and E𝄫4 |
INTERVAL_DIMINISHED_UNISON | Interval | Diminished unison interval between C4 and C♭4 |
INTERVAL_MAJOR_NINTH_DOWN | Interval | Down one major ninth interval between C4 and Bb2 |
INTERVAL_MAJOR_NINTH_UP | Interval | Up one major ninth interval between C4 and D5 |
INTERVAL_MAJOR_SECOND_DOWN | Interval | Descending major second interval between C4 and B♭3 |
INTERVAL_MAJOR_SECOND_UP | Interval | Major second interval between C4 and D4 |
INTERVAL_MAJOR_SEVENTH_DOWN | Interval | Descending major seventh interval between C4 and D♭3 |
INTERVAL_MAJOR_SEVENTH_UP | Interval | Major seventh interval between C4 and B4 |
INTERVAL_MAJOR_SIXTH_DOWN | Interval | Descending major sixth interval between C4 and E♭3 |
INTERVAL_MAJOR_SIXTH_UP | Interval | Major sixth interval between C4 and A4 |
INTERVAL_MAJOR_THIRD_DOWN | Interval | Descending major third interval between C4 and A♭3 |
INTERVAL_MAJOR_THIRD_UP | Interval | Major third interval between C4 and E4 |
INTERVAL_MINOR_NINTH_DOWN | Interval | Down one minor ninth interval between C4 and B2 |
INTERVAL_MINOR_SECOND_DOWN | Interval | Descending minor second interval between C4 and B3 |
INTERVAL_MINOR_SECOND_UP | Interval | Minor second interval between C4 and D♭4 |
INTERVAL_MINOR_SEVENTH_DOWN | Interval | Descending minor seventh interval between C4 and D3 |
INTERVAL_MINOR_SEVENTH_UP | Interval | Minor seventh interval between C4 and B♭4 |
INTERVAL_MINOR_SIXTH_DOWN | Interval | Descending minor sixth interval between C4 and E3 |
INTERVAL_MINOR_SIXTH_UP | Interval | Minor sixth interval between C4 and A♭4 |
INTERVAL_MINOR_THIRD_DOWN | Interval | Descending minor third interval between C4 and A3 |
INTERVAL_MINOR_THIRD_UP | Interval | Minor third interval between C4 and E♭4 |
INTERVAL_MinOR_NINTH_UP | Interval | Up one minor ninth interval between C4 and Db5 |
INTERVAL_OCTAVE_DOWN | Interval | Descending perfect octave interval between C4 and C3 |
INTERVAL_OCTAVE_UP | Interval | Perfect octave interval between C4 and C5 |
INTERVAL_PERFECT_FIFTH_DOWN | Interval | Descending perfect fifth interval between C4 and F3 |
INTERVAL_PERFECT_FIFTH_UP | Interval | Perfect fifth interval betwwen C4 and G4 |
INTERVAL_PERFECT_FOURTH_DOWN | Interval | Descending perfect fourth interval between C4 and G3 |
INTERVAL_PERFECT_FOURTH_UP | Interval | Perfect fourth interval betwwen C4 and F4 |
INTERVAL_PERFECT_UNISON | Interval | Perfect unison interval |
INTERVAL_TWO_OCTAVES_DOWN | Interval | Down two octaves interval between C4 and C2 |
INTERVAL_TWO_OCTAVES_UP | Interval | Up two octaves interval between C4 and C6 |
IQ_AUGMENTED | int | Augmented interval quality. |
IQ_DIMINISHED | int | Diminished interval quality. |
IQ_DOUBLE_AUGMENTED | int | Double augmented interval quality. |
IQ_DOUBLE_DIMINISHED | int | Double diminished interval quality. |
IQ_MAJOR | int | Major interval quality, apply to second, third, sixth and seventh. |
IQ_MINOR | int | Minor interval quality, apply to second, third, sixth and seventh. |
IQ_PERFECT | int | Perfect interval quality, note that only unison, fourth, fifth and octave can be perfect. |
IQ_QUADRUPLE_AUGMENTED | int | Quadruple augmented interval quality, quite improbable but mathematically possible. |
IQ_QUADRUPLE_DIMINISHED | int | Quadruple diminished interval quality, quite improbable but mathematically possible. |
IQ_TRIPLE_AUGMENTED | int | Triple augmented interval quality, quite improbable but mathematically possible. |
IQ_TRIPLE_DIMINISHED | int | Triple diminished interval quality, quite improbable but mathematically possible. |
UNICODE_DELTA | string | Unicode delta: U+0394 = Δ |
UNICODE_DOUBLE_FLAT | string | Unicode double flat: U+1D12B = 𝄫 |
UNICODE_DOUBLE_SHARP | string | Unicode double sharp: U+1D12A = 𝄪 |
UNICODE_FLAT | string | Unicode flat: U+266D = ♭ |
UNICODE_NATURAL | string | Unicode natural: U+266E = ♮ |
UNICODE_SHARP | string | Unicode sharp: U+266F = ♯ |
UNICODE_SLASHED_O | string | Unicode slashed-O: U+00F8 = ø |
Return type | Function and summary |
---|---|
int | TheoryStemsDirection(string case, table notes) Get the stem direction a group of beamed notes, or a chord, would have in normal conditions. |
Constants
string UNICODE_DOUBLE_FLAT
Unicode double flat: U+1D12B = 𝄫
string UNICODE_DOUBLE_SHARP
Unicode double sharp: U+1D12A = 𝄪
int IL_UNISON
Unison interval label, C to C, C to C♯...
int IL_SECOND
Second interval label, C to D, C to D♭, C♭ to D♯...
int IL_THIRD
Third interval label, C to E♭, C♯ to E♯...
int IL_FOURTH
Fourth interval label, C to F, C to F♯...
int IL_FIFTH
Fifth interval label, C to G, C♯ to G♭...
int IL_SIXTH
Sixth interval label, C to A, C to A♭...
int IL_SEVENTH
Seventh interval label, C to B, C♯ to B♭...
int IL_OCTAVE
Octave interval label, C to C'...
int IL_NINTH
Ninth interval label, c to d'...
int IL_TENTH
Tenth interval label, c to e'...
int IL_ELEVENTH
Eleventh interval label, c to f'...
int IL_TWELFTH
Twelfth interval label, c to g'...
int IL_THIRTEENTH
Thirteenth interval label, c to a'...
int IL_FOURTEENTH
Fourteenth interval label, c to b'...
int IQ_PERFECT
Perfect interval quality, note that only unison, fourth, fifth and octave can be perfect.
C to C, C to F, C to G.
int IQ_MAJOR
Major interval quality, apply to second, third, sixth and seventh.
C to D, C to E, C to A, C to B
int IQ_MINOR
Minor interval quality, apply to second, third, sixth and seventh.
C to D♭, C♯ to E, C to A♭, C to B♭...
int IQ_AUGMENTED
Augmented interval quality.
C to D♯, C♭ to E, E♭ to B, C to F♯...
int IQ_TRIPLE_AUGMENTED
Triple augmented interval quality, quite improbable but mathematically possible.
E♭ to B𝄪, E𝄫 to B♯...
int IQ_QUADRUPLE_AUGMENTED
Quadruple augmented interval quality, quite improbable but mathematically possible.
E𝄫 to B𝄪...
int IQ_DOUBLE_DIMINISHED
Double diminished interval quality.
C♯ to G♭, C𝄪 to G, C to G𝄫...
int IQ_TRIPLE_DIMINISHED
Triple diminished interval quality, quite improbable but mathematically possible.
C♯ to G𝄫...
int IQ_QUADRUPLE_DIMINISHED
Quadruple diminished interval quality, quite improbable but mathematically possible.
CĂ©#x1d12a; to Gb♭...
Interval INTERVAL_DIMINISHED_UNISON
Diminished unison interval between C4 and C♭4
Interval INTERVAL_PERFECT_UNISON
Perfect unison interval
Interval INTERVAL_AUGMENTED_UNISON
Augmented unison interval between C4 and C♯4
Interval INTERVAL_DIMINISHED_SECOND_UP
Diminished second interval between C4 and D𝄫4
Interval INTERVAL_DIMINISHED_SECOND_DOWN
Descending diminished second interval between G4 and F&s;ahrp;♯4
Interval INTERVAL_MINOR_SECOND_UP
Minor second interval between C4 and D♭4
Interval INTERVAL_MINOR_SECOND_DOWN
Descending minor second interval between C4 and B3
Interval INTERVAL_MAJOR_SECOND_UP
Major second interval between C4 and D4
Interval INTERVAL_MAJOR_SECOND_DOWN
Descending major second interval between C4 and B♭3
Interval INTERVAL_AUGMENTED_SECOND_UP
Augmented second interval between C4 and D♯4
Interval INTERVAL_AUGMENTED_SECOND_DOWN
Descending augmented second interval between C4 and B𝄫3
Interval INTERVAL_DIMINISHED_THIRD_UP
Diminished third interval between C4 and E𝄫4
Interval INTERVAL_DIMINISHED_THIRD_DOWN
Descending diminished third interval between C4 and A♯3
Interval INTERVAL_MINOR_THIRD_UP
Minor third interval between C4 and E♭4
Interval INTERVAL_MINOR_THIRD_DOWN
Descending minor third interval between C4 and A3
Interval INTERVAL_MAJOR_THIRD_UP
Major third interval between C4 and E4
Interval INTERVAL_MAJOR_THIRD_DOWN
Descending major third interval between C4 and A♭3
Interval INTERVAL_AUGMENTED_THIRD_UP
Augmented third interval between C4 and E♯4
Interval INTERVAL_AUGMENTED_THIRD_DOWN
Descending augmented third interval between C4 and A𝄫3
Interval INTERVAL_DIMINISHED_FOURTH_UP
Diminished fourth interval betwwen C4 and F♭4
Interval INTERVAL_DIMINISHED_FOURTH_DOWN
Descending diminished fourth interval betwwen C4 and G♯3
Interval INTERVAL_PERFECT_FOURTH_UP
Perfect fourth interval betwwen C4 and F4
Interval INTERVAL_PERFECT_FOURTH_DOWN
Descending perfect fourth interval between C4 and G3
Interval INTERVAL_AUGMENTED_FOURTH_UP
Augmented fourth interval betwwen C4 and F♯4
Interval INTERVAL_AUGMENTED_FOURTH_DOWN
Augmented fourth interval betwwen C4 and G♭3
Interval INTERVAL_DIMINISHED_FIFTH_UP
Diminished fifth interval betwwen C4 and G♭4
Interval INTERVAL_DIMINISHED_FIFTH_DOWN
Diminished fifth interval betwwen C4 and F♯3
Interval INTERVAL_PERFECT_FIFTH_UP
Perfect fifth interval betwwen C4 and G4
Interval INTERVAL_PERFECT_FIFTH_DOWN
Descending perfect fifth interval between C4 and F3
Interval INTERVAL_AUGMENTED_FIFTH_UP
Augmented fifth interval betwwen C4 and G♯4
Interval INTERVAL_AUGMENTED_FIFTH_DOWN
Descending augmented fifth interval betwwen C4 and F♭3
Interval INTERVAL_DIMINISHED_SIXTH_UP
Diminished sixth interval between C4 and A𝄫4
Interval INTERVAL_DIMINISHED_SIXTH_DOWN
Descending diminished sixth interval between C4 and E♯3
Interval INTERVAL_MINOR_SIXTH_UP
Minor sixth interval between C4 and A♭4
Interval INTERVAL_MINOR_SIXTH_DOWN
Descending minor sixth interval between C4 and E3
Interval INTERVAL_MAJOR_SIXTH_UP
Major sixth interval between C4 and A4
Interval INTERVAL_MAJOR_SIXTH_DOWN
Descending major sixth interval between C4 and E♭3
Interval INTERVAL_AUGMENTED_SIXTH_UP
Augmented sixth interval between C4 and A♯4
Interval INTERVAL_AUGMENTED_SIXTH_DOWN
Descending augmented sixth interval between C4 and E𝄫3
Interval INTERVAL_DIMINISHED_SEVENTH_UP
Diminished seventh interval between C4 and B𝄫4
Interval INTERVAL_DIMINISHED_SEVENTH_DOWN
Descending diminished seventh interval between C4 and D♭3
Interval INTERVAL_MINOR_SEVENTH_UP
Minor seventh interval between C4 and B♭4
Interval INTERVAL_MINOR_SEVENTH_DOWN
Descending minor seventh interval between C4 and D3
Interval INTERVAL_MAJOR_SEVENTH_UP
Major seventh interval between C4 and B4
Interval INTERVAL_MAJOR_SEVENTH_DOWN
Descending major seventh interval between C4 and D♭3
Interval INTERVAL_AUGMENTED_SEVENTH_UP
Augmented seventh interval between C4 and B♯4
Interval INTERVAL_AUGMENTED_SEVENTH_DOWN
Descending augmented seventh interval between C4 and D𝄫3
Interval INTERVAL_DIMINISHED_OCTAVE_UP
Diminished octave interval between C4 and C♭5
Interval INTERVAL_DIMINISHED_OCTAVE_DOWN
Descending diminished octave interval between C4 and C♯3
Interval INTERVAL_OCTAVE_UP
Perfect octave interval between C4 and C5
Interval INTERVAL_OCTAVE_DOWN
Descending perfect octave interval between C4 and C3
Interval INTERVAL_AUGMENTED_OCTAVE_UP
Augmented octave interval between C4 and C♯5
Interval INTERVAL_AUGMENTED_OCTAVE_DOWN
Descending augmented octave interval between C4 and C♭3
Interval INTERVAL_MinOR_NINTH_UP
Up one minor ninth interval between C4 and Db5
Interval INTERVAL_MINOR_NINTH_DOWN
Down one minor ninth interval between C4 and B2
Interval INTERVAL_MAJOR_NINTH_UP
Up one major ninth interval between C4 and D5
Interval INTERVAL_MAJOR_NINTH_DOWN
Down one major ninth interval between C4 and Bb2
Interval INTERVAL_TWO_OCTAVES_DOWN
Down two octaves interval between C4 and C2
Interval INTERVAL_TWO_OCTAVES_UP
Up two octaves interval between C4 and C6
Function
TheoryStemsDirection(string case, table notes)
Get the stem direction a group of beamed notes, or a chord, would have in normal conditions.
Stem direction is determinated by the note that is far than the middle line. In case of equal distance between the far top and far bottom, chord has stems up, beamed notes have stems down.
Parameter | Type | Default | Description |
---|---|---|---|
case | string | "chord" or "beam" | |
notes | table | table of Symbol, only notes are considered (Symbol.IsNote == true ) |
- Return
- int: STEM_UP or STEM_DOWN, nil if no symbol args are notes.