Visualization

Visualization tools such as piano keys and guitar fretboards.

Base

Here we will create an Instrument base class to for code reusability.


source

Instrument

 Instrument ()

Initialize self. See help(type(self)) for accurate signature.

Piano

The Piano object is the basic piano visualization on which we can place Note, Interval, Chord and Scale objects.


source

Piano

 Piano ()

Initialize self. See help(type(self)) for accurate signature.

Initialization

To get an empty piano, just call on an initialized Piano object without arguments.

piano = Piano()
piano()
C
D
E
F
G
A
B
C#
D#
F#
G#
A#

Highlighting

We can highlight single Note objects with the visualize_note method.

For example, here we highlight the C# notes on the piano.

piano.visualize_note(Note("C#"))
C
D
E
F
G
A
B
C#
D#
F#
G#
A#

Chord objects can be visualized on the piano by passing a chord to visualize_chord.

# Notes for a Cmaj7 chord
chord = Chord.from_short("Cmaj7")
chord.notes
[C4, E4, G4, B4]
piano.visualize_chord(chord)
C
D
E
F
G
A
B
C#
D#
F#
G#
A#

A scale can be highlighted by calling visualize_scale with a Scale object and a root note.

major = Scale("major")
piano.visualize_scale(major, root="D")
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C#
D#
F#
G#
A#
C#
D#
F#
G#
A#
C#
D#
F#
G#
A#

You can decide to visualize more octaves with the octs parameter.

double_harmonic_major = Scale("double harmonic major")
piano.visualize_scale(double_harmonic_major, root="C", octs=3)
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C#
D#
F#
G#
A#
C#
D#
F#
G#
A#
C#
D#
F#
G#
A#

Guitar

Just like with Piano we can visualize Note, Chord and Scale objects on a guitar fretboard.


source

Guitar

 Guitar ()

Initialize self. See help(type(self)) for accurate signature.

guitar = Guitar()
guitar.visualize_note(Note("C", oct=5))
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
E
B
C
G
C
D
C
A
C
E
C
guitar.visualize_chord(Chord.from_short("Cmaj7"))
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
E
E
G
B
C
E
G
B
C
B
B
C
E
G
B
C
E
G
G
G
B
C
E
G
B
C
E
D
E
G
B
C
E
G
B
C
A
B
C
E
G
B
C
E
G
E
E
G
B
C
E
G
B
C
guitar.visualize_scale(Scale("major"), root="C")
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
E
E
F
G
A
B
C
D
E
F
G
A
B
C
D
B
B
C
D
E
F
G
A
B
C
D
E
F
G
A
G
G
A
B
C
D
E
F
G
A
B
C
D
E
F
D
D
E
F
G
A
B
C
D
E
F
G
A
B
C
A
A
B
C
D
E
F
G
A
B
C
D
E
F
G
E
E
F
G
A
B
C
D
E
F
G
A
B
C
D