Fretboard Fluency Practice Kit

Part of learning to play any stringed instrument is to become familiar with the location of each note on the fretboard of the instrument. It is wise for a beginner to set aside at least 5-10 minutes of quality practice time per day until this familiarity is so ingrained that his fingers can find the notes on their own accord, without intervention from the player's conscious mind (which is thus free to take care of more interesting musical matters, such as improvising). A player who has achieved this skill is said to have attained fretboard fluency. A master musician plays her instrument as if it was an extension of her body, to be able to achieve this level of skill you will need to get to know your instrument quite intimately. In my opinion, attaining fretboard fluency is the first step on this path.

While I was learning my way around the fretboard of my bass, I wrote a simple program in Python to help me practice. A rather trivial program, all it does is to crank out names of notes at a predefined rate. The user watches the output, and when a note appears on the screen, he finds the note and plays it on his instrument. As the "beginner" speed of 5 seconds grows too easy, the user can alter the value delay in the source code to something more fitting.

Many beginners' books feature fretboard diagrams, and if you're a complete neophyte, you'll need one to be able to use this program for much. In case you don't have one, here is one for the 4-string bass and the 6-string guitar:

Bass fretboard diagram:

G||G#|A |A#|B |C |C#|D |D#|E |F |F#|G
D||D#|E |F |F#|G |G#|A |A#|B |C |C#|D
A||A#|B |C |C#|D |D#|E |F |F#|G |G#|A
E||F |F#|G |G#|A |A#|B |C |C#|D |D#|E

Guitar fretboard diagram:
E||F |F#|G |G#|A |A#|B |C |C#|D |D#|E
B||C |C#|D |D#|E |F |F#|G |G#|A |A#|B
G||G#|A |A#|B |C |C#|D |D#|E |F |F#|G
D||D#|E |F |F#|G |G#|A |A#|B |C |C#|D
A||A#|B |C |C#|D |D#|E |F |F#|G |G#|A
E||F |F#|G |G#|A |A#|B |C |C#|D |D#|E

The note to the left of the || marker is the note of the open (unfretted) string. This diagram only covers the first 12 frets of your instrument, since the following frets are just a duplicate of the first 12. If you play something more obscure, such as a 6-string bass, or a lute, or whatever, you'll have to go find your own fretboard diagram.

A few words on music theory here. All Western music works with half tones (some East Asian music has quarter tones, but I know squat about that, so if you're learning the sitar, I'm afraid my program won't be of much help), and in the diagrams above, you can see that the whole tones are just plain letters, whereas I've written half tones as sharps (with the # symbol trailing the letter). You will also come across flats, denoted with the symbol b. Simply put, a sharp is a whole tone raised one half tone (A# is a half tone above A), and a flat is a whole tone dropped one half tone (Ab is a half tone below A). This means that A# and Bb is, in fact, the same tone. Also notice that there are no half tones between B and C or E and F -- B is a half tone below C, and E is a half tone below F.

In some countries, "H" is used instead of "B". The legend says that a drunken monk had written a b poorly, making it look like an h. If you live in one of those countries (which I do), it is simple to modify the program to write H instead of B. Just alter the values in tones and sharps. Formally, in those same countries Bb/A# is written B (making things even more confusing), although in practice many use Bb instead.

Without further ado, here's the source code:

# Short: Simple tool to help practice finding one's way around the fretboard.
# This program was written in 2002 by Simon Kongshoj.
# Do whatever you want with it. It can be considered public domain software.

delay = 5.0 # Seconds
from time import sleep
from random import choice
flats=[tone+"b" for tone in tones if not tone in ["C","F"]]
sharps=[tone+"#" for tone in tones if not tone in ["B","E"]]
print "Tone Practice Tool v0.1 by Simon Kongshoj"
while (1):
    print choice(allnotes)

Enjoy the prog, and enjoy your practice!