Modes¶
Here we demonstrate some of the capabilities of the Key class.
from pyabc2 import Key
mode_abbrs = ["ion", "dor", "phr", "lyd", "mix", "aeo", "loc"]
modes = [Key(f"G{m}") for m in mode_abbrs]
modes
[Key(tonic=G, mode='Ionian'),
Key(tonic=G, mode='Dorian'),
Key(tonic=G, mode='Phrygian'),
Key(tonic=G, mode='Lydian'),
Key(tonic=G, mode='Mixolydian'),
Key(tonic=G, mode='Aeolian'),
Key(tonic=G, mode='Locrian')]
Relatives¶
[
modes[0].relative(abbr)
for abbr in mode_abbrs
]
[Key(tonic=G, mode='Ionian'),
Key(tonic=A, mode='Dorian'),
Key(tonic=B, mode='Phrygian'),
Key(tonic=C, mode='Lydian'),
Key(tonic=D, mode='Mixolydian'),
Key(tonic=E, mode='Aeolian'),
Key(tonic=F#, mode='Locrian')]
modes[0].relative_minor
Key(tonic=E, mode='Minor')
modes[-1].relative_major
Key(tonic=Ab, mode='Major')
Scale¶
Various representations of notes in the scale.
for m in modes:
m.print_scale()
G A B C D E F#
G A Bb C D E F
G Ab Bb C D Eb F
G A B C# D E F#
G A B C D E F
G A Bb C D Eb F
G Ab Bb C Db Eb F
for m in modes:
m.print_scale_degrees_wrt_major()
1 2 3 4 5 6 7
1 2 b3 4 5 6 b7
1 b2 b3 4 5 b6 b7
1 2 3 #4 5 6 7
1 2 3 4 5 6 b7
1 2 b3 4 5 b6 b7
1 b2 b3 4 b5 b6 b7
for m in modes:
m.print_intervals()
W W H W W W H
W H W W W H W
H W W W H W W
W W W H W W H
W W H W W H W
W H W W H W W
H W W H W W W
for m in modes:
m.print_intervals(fmt="-")
|--|--|-|--|--|--|-
|--|-|--|--|--|-|--
|-|--|--|--|-|--|--
|--|--|--|-|--|--|-
|--|--|-|--|--|-|--
|--|-|--|--|-|--|--
|-|--|--|-|--|--|--
for m in modes:
m.print_scale_chromatic_values()
0 2 4 5 7 9 11
0 2 3 5 7 9 10
0 1 3 5 7 8 10
0 2 4 6 7 9 11
0 2 4 5 7 9 10
0 2 3 5 7 8 10
0 1 3 5 6 8 10
from fractions import Fraction
from pyabc2 import Tune
abc = """\
T: G modes
K: G
"""
for m in modes:
abc += f"P: {m.mode}\n"
abc += " ".join(
pc.to_pitch(octave=4 if pc.nat in "GAB" else 5)
.to_note(duration=Fraction("1/4"))
.to_abc(key=Key("G"))
for pc in m.scale
) + " |\n"
abc += "|]"
print(abc)
Tune(abc)
T: G modes
K: G
P: Ionian
G2 A2 B2 c2 d2 e2 f2 |
P: Dorian
G2 A2 _B2 c2 d2 e2 =f2 |
P: Phrygian
G2 _A2 _B2 c2 d2 _e2 =f2 |
P: Lydian
G2 A2 B2 ^c2 d2 e2 f2 |
P: Mixolydian
G2 A2 B2 c2 d2 e2 =f2 |
P: Aeolian
G2 A2 _B2 c2 d2 _e2 =f2 |
P: Locrian
G2 _A2 _B2 c2 _d2 _e2 =f2 |
|]
Tune(title='G modes', key=Gmaj, type='?')
Chromatic¶
for m in modes:
m.print_chromatic_scale_degrees()
1 #1 2 #2 3 4 #4 5 #5 6 #6 7
1 #1 2 3 #3 4 #4 5 #5 6 7 #7
1 2 #2 3 #3 4 #4 5 6 #6 7 #7
1 #1 2 #2 3 #3 4 5 #5 6 #6 7
1 #1 2 #2 3 4 #4 5 #5 6 7 #7
1 #1 2 3 #3 4 #4 5 6 #6 7 #7
1 2 #2 3 #3 4 5 #5 6 #6 7 #7
for m in modes:
m.print_chromatic_scale_degrees(acc_fmt="#/b")
1 #1/b2 2 #2/b3 3 4 #4/b5 5 #5/b6 6 #6/b7 7
1 #1/b2 2 3 #3/b4 4 #4/b5 5 #5/b6 6 7 #7/b1
1 2 #2/b3 3 #3/b4 4 #4/b5 5 6 #6/b7 7 #7/b1
1 #1/b2 2 #2/b3 3 #3/b4 4 5 #5/b6 6 #6/b7 7
1 #1/b2 2 #2/b3 3 4 #4/b5 5 #5/b6 6 7 #7/b1
1 #1/b2 2 3 #3/b4 4 #4/b5 5 6 #6/b7 7 #7/b1
1 2 #2/b3 3 #3/b4 4 5 #5/b6 6 #6/b7 7 #7/b1