gfl is a program that determines the chords represented by guitar fingerings and formats fingering charts into rows and columns. By reading ASCII based grids that represent the fingerings, it determines the pitches that are used, internally puts them in a canonical form and then does table lookups against known canonical chord types to find matches. It labels the fingering with its best guess as to what the chord name is.
+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ | | o | | | 2 | o | o | o 2 | | o | o | 6 | | o o o | 5 | | o | o | 4 +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ o | | | o | | | | | o | | | | o | | | | | | | | | | | o | | +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ | | | o | | | | | | | | | | | | | o | | | | | o | | | | | | +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ x O x x O x x O x OYou can just type:
gfl foo.taband trust it to pick the right chord name (which it will most of the time):
G6 Bm7 E7 +5 b9 Am9 B7 b9/A +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ | | o | | | 2 | o | o | o 2 | | o | o | 6 | | o o o | 5 | | o | o | 4 +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ o | | | o | | | | | o | | | | o | | | | | | | | | | | o | | +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ | | | o | | | | | | | | | | | | | o | | | | | o | | | | | | +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ x O x x O x x O x OIf you want to have some say in which names it picks, then you can type:
gfl -a foo.tabAnd it will list the chords, one per row, giving the pitches that are used and its guesses for the possible ways to name the chord:
# pitches: [G(4),-1,E(5),B(5),D(6),E(6)] # # G6 # Em7/G # G6 +-+-+-+-+-+ | | o | | | 2 +-+-+-+-+-+ o | | | o | +-+-+-+-+-+ | | | o | | +-+-+-+-+-+ | | | | | | +-+-+-+-+-+ x xYou can then uncomment the chord name you want to keep, and rerun gfl with the "keep names" flag:
gfl -k foo.tab
gfl -c 3
G6 Bm7 E7 +5 b9 +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ | | o | | | 2 | o | o | o 2 | | o | o | 6 +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ o | | | o | | | | | o | | | | o | | +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ | | | o | | | | | | | | | | | | | o +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ | | | | | | | | | | | | | | | | | | +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ x O x x O x Am9 B7 b9/A +-+-+-+-+-+ +-+-+-+-+-+ | | o o o | 5 | | o | o | 4 +-+-+-+-+-+ +-+-+-+-+-+ | | | | | | | | | o | | +-+-+-+-+-+ +-+-+-+-+-+ | | | | | o | | | | | | +-+-+-+-+-+ +-+-+-+-+-+ | | | | | | | | | | | o +-+-+-+-+-+ +-+-+-+-+-+ x O x O
This is a handy feature when you want to add or remove a chord. You just add the new chord to the next line or extend that column by one chord and gfl will reshape and readjust it.
The most unusual feature of gfl is that you can specify the tuning. For example, you should be able to do mandolin fingerings like this:
gfl -t 55:62:69:76 foo.tab
This feature hasn't really been tested though.
Here is the usage message you get when you run gfl with no arguments:
sunra(jason): gfl You must give at least one input filename usage: ./gfl [-a] [-c columns] [-k] [-l linewidth] [-r] [-t tuning] [file1 ...] Description: -a analyze -c columns number of chord columns in output -k keep original chord names -l linewidth number of characters per line in output -r reshape (reformat) only -t tuning tuning of instrument Note: Tuning is specified by colon separated midi note numbers e.g. standard tuning is "-t 52:57:62:67:71:76"