commit e50dda0ca0d012a671074546df083f51c743b694
parent f3ae24795f381aee6019836576f797b34befc3f7
Author: nibo <nibo@relim.de>
Date: Sun, 1 Dec 2024 10:39:23 +0100
Add chord diagrams for string instruments
Parsing 'define' directives is missing.
Diffstat:
| M | chord_diagram.c | | | 122 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- |
| M | chord_diagram.h | | | 4 | ++++ |
| M | chordpro.c | | | 117 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- |
| M | chordpro.h | | | 11 | ++++++++--- |
| M | config.c | | | 11 | ++++++++--- |
| M | config.h | | | 4 | +++- |
| A | diagrams.h | | | 4394 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| M | out_pdf.c | | | 98 | +++++++++++++++++++++++++++++++++++++++++++++++++------------------------------ |
| M | out_pdf.h | | | 1 | + |
| M | util.c | | | 65 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| M | util.h | | | 6 | ++++++ |
11 files changed, 4771 insertions(+), 62 deletions(-)
diff --git a/chord_diagram.c b/chord_diagram.c
@@ -2,10 +2,14 @@
#include <stdint.h>
#include <pdfio.h>
#include <pdfio-content.h>
+#include "out_pdf.h"
#include "util.h"
+#include "config.h"
+#include "chordpro.h"
#include "chord_diagram.h"
+#include "diagrams.h"
-static bool
+bool
text_show(
pdfio_stream_t *stream,
const char *text,
@@ -317,6 +321,45 @@ string_diagram_free(struct StringDiagram *d)
free(d);
}
+/* struct StringDiagram {
+ char *name;
+ int8_t base_fret;
+ int8_t frets[12];
+ int8_t fingers[12];
+}; */
+static struct StringDiagram *
+string_diagram_copy(struct StringDiagram *diagram)
+{
+ struct StringDiagram *copy = emalloc(sizeof(struct StringDiagram));
+ copy->name = strdup(diagram->name);
+ copy->base_fret = diagram->base_fret;
+ copy->frets[0] = diagram->frets[0];
+ copy->frets[1] = diagram->frets[1];
+ copy->frets[2] = diagram->frets[2];
+ copy->frets[3] = diagram->frets[3];
+ copy->frets[4] = diagram->frets[4];
+ copy->frets[5] = diagram->frets[5];
+ copy->frets[6] = diagram->frets[6];
+ copy->frets[7] = diagram->frets[7];
+ copy->frets[8] = diagram->frets[8];
+ copy->frets[9] = diagram->frets[9];
+ copy->frets[10] = diagram->frets[10];
+ copy->frets[11] = diagram->frets[11];
+ copy->fingers[0] = diagram->fingers[0];
+ copy->fingers[1] = diagram->fingers[1];
+ copy->fingers[2] = diagram->fingers[2];
+ copy->fingers[3] = diagram->fingers[3];
+ copy->fingers[4] = diagram->fingers[4];
+ copy->fingers[5] = diagram->fingers[5];
+ copy->fingers[6] = diagram->fingers[6];
+ copy->fingers[7] = diagram->fingers[7];
+ copy->fingers[8] = diagram->fingers[8];
+ copy->fingers[9] = diagram->fingers[9];
+ copy->fingers[10] = diagram->fingers[10];
+ copy->fingers[11] = diagram->fingers[11];
+ return copy;
+}
+
static bool
string_diagram_is_valid(struct StringDiagram *d)
{
@@ -359,7 +402,7 @@ finger_to_char(int8_t finger)
}
static bool
-draw_string_chord_diagram(
+string_diagram_draw(
pdfio_stream_t *stream,
struct StringDiagram *diagram,
double x,
@@ -371,6 +414,7 @@ draw_string_chord_diagram(
int instrument_string_count = string_diagram_string_count(diagram);
double field_width = width / (instrument_string_count - 1);
double height = field_width * 4;
+ double y_above_diagram = y + height + field_width / 2 + field_width / 2.5;
double vertical_lines_height = height + field_width / 2;
if (!pdfioContentSetLineWidth(stream, field_width * 0.09)) {
fprintf(stderr, "pdfioContentSetLineWidth failed.\n");
@@ -418,10 +462,8 @@ draw_string_chord_diagram(
return false;
}
}
- double y_above_diagram;
int8_t fret, finger;
for (i = 0; i<instrument_string_count; i++) {
- y_above_diagram = y + height + field_width / 2 + field_width / 2.5;
fret = diagram->frets[i];
finger = diagram->fingers[i];
if (fret == -1) {
@@ -448,6 +490,23 @@ draw_string_chord_diagram(
}
}
}
+ pdfio_obj_t *font_obj;
+ double name_width, centered_x;
+ font_obj = out_pdf_fnt_obj_get_by_name("chord-diagram-regular-font");
+ if (!font_obj) {
+ LOG_DEBUG("out_pdf_fnt_obj_get_by_name failed.");
+ return false;
+ }
+ name_width = pdfioContentTextMeasure(font_obj, diagram->name, field_width*2.0);
+ centered_x = (width - name_width) / 2;
+ if (!pdfioContentSetTextFont(stream, "chord-diagram-regular-font", field_width*2.0)) {
+ fprintf(stderr, "pdfioContentSetTextFont failed.\n");
+ return false;
+ }
+ if (!text_show(stream, diagram->name, x+centered_x, y_above_diagram + 5.0)) {
+ fprintf(stderr, "text_show failed.\n");
+ return false;
+ }
return true;
}
@@ -469,6 +528,59 @@ chord_diagram_free(struct ChordDiagram *d)
free(d);
}
+void
+chord_diagrams_free(struct ChordDiagram **diagrams)
+{
+ if (!diagrams) {
+ return;
+ }
+ struct ChordDiagram **d = diagrams;
+ while (*d) {
+ chord_diagram_free(*d);
+ d++;
+ }
+ free(diagrams);
+}
+
+struct ChordDiagram **
+chord_diagrams_create(struct Config *config, struct ChoChord ***chords)
+{
+ struct ChordDiagram **diagrams = NULL;
+ struct ChoChord **c = *chords;
+ char *name;
+ int d = 0;
+ size_t i;
+ switch (config->output->diagram->instrument) {
+ case INS_GUITAR:
+ while (*c) {
+ name = cho_chord_name_generate(*c);
+ for (i = 0; i<LENGTH(guitar_diagrams); i++) {
+ if (!strcmp(name, guitar_diagrams[i].name)) {
+ diagrams = erealloc(diagrams, (d+1) * sizeof(struct ChordDiagram *));
+ diagrams[d] = emalloc(sizeof(struct ChordDiagram));
+ diagrams[d]->is_string_instrument = true;
+ diagrams[d]->u.sd = string_diagram_copy(&guitar_diagrams[i]);
+ d++;
+ }
+ }
+ free(name);
+ c++;
+ }
+ break;
+ case INS_KEYBOARD:
+ break;
+ case INS_MANDOLIN:
+ break;
+ case INS_UKULELE:
+ break;
+ default:
+ util_log(LOG_ERR, "Invalid Instrument enum value '%d'.", config->output->diagram->instrument);
+ }
+ diagrams = erealloc(diagrams, (d+1) * sizeof(struct ChordDiagram *));
+ diagrams[d] = NULL;
+ return diagrams;
+}
+
bool
chord_diagram_draw(
pdfio_stream_t *stream,
@@ -479,7 +591,7 @@ chord_diagram_draw(
)
{
if (diagram->is_string_instrument) {
- if (!draw_string_chord_diagram(stream, diagram->u.sd, x, y, width)) {
+ if (!string_diagram_draw(stream, diagram->u.sd, x, y, width)) {
LOG_DEBUG("draw_string_chord_diagram failed.");
return false;
}
diff --git a/chord_diagram.h b/chord_diagram.h
@@ -32,4 +32,8 @@ struct ChordDiagram {
};
void chord_diagram_free(struct ChordDiagram *d);
+void chord_diagrams_free(struct ChordDiagram **diagrams);
bool chord_diagram_draw(pdfio_stream_t *stream, struct ChordDiagram *diagram, double x, double y, double width);
+struct ChordDiagram **chord_diagrams_create(struct Config *config, struct ChoChord ***chords);
+
+bool text_show( pdfio_stream_t *stream, const char *text, double x, double y);
diff --git a/chordpro.c b/chordpro.c
@@ -48,7 +48,7 @@ static const char *font_directives[] = {
};
static const char *chord_directives[] = {
- "transpose", /* "define", "chord", */ NULL
+ "transpose", "define", /* "chord", */ NULL
};
static const char *output_directives[] = {
@@ -1751,6 +1751,79 @@ cho_chord_copy(struct ChoChord *chord)
return copy;
}
+bool
+cho_chords_has(struct ChoChord **chords, struct ChoChord *chord)
+{
+ if (!chords) {
+ return false;
+ }
+ struct ChoChord **c = chords;
+ while (*c) {
+ if (
+ !str_compare((*c)->name, chord->name) &&
+ !str_compare((*c)->root, chord->root) &&
+ !str_compare((*c)->ext, chord->ext) &&
+ !str_compare((*c)->bass, chord->bass) &&
+ (*c)->qual == chord->qual
+ ) {
+ return true;
+ }
+ c++;
+ }
+ return false;
+}
+
+int
+cho_chord_compare(const void *a, const void *b)
+{
+ struct ChoChord **aa = (struct ChoChord **)a;
+ struct ChoChord **bb = (struct ChoChord **)b;
+ return str_compare((*aa)->root, (*bb)->root);
+}
+
+size_t
+cho_chords_len(struct ChoChord **chords)
+{
+ if (!chords) {
+ return 0;
+ }
+ int i = 0;
+ while (chords[i]) {
+ i++;
+ }
+ return i;
+}
+
+void
+cho_chords_add(struct ChoChord ***chords, struct ChoChord *chord)
+{
+ int i = 0;
+ if (*chords) {
+ struct ChoChord **c = *chords;
+ while (*c) {
+ i++;
+ c++;
+ }
+ }
+ *chords = erealloc(*chords, (i+2) * sizeof(struct ChoChord *));
+ (*chords)[i] = cho_chord_copy(chord);
+ (*chords)[i+1] = NULL;
+}
+
+void
+cho_chords_free(struct ChoChord **chords)
+{
+ if (!chords) {
+ return;
+ }
+ struct ChoChord **c = chords;
+ while (*c) {
+ cho_chord_free(*c);
+ c++;
+ }
+ free(chords);
+}
+
/* returns how many bytes make up the root; returns 0 if no root was found */
static int
cho_chord_root_parse(const char *str, struct ChoChord *chord)
@@ -2891,6 +2964,7 @@ cho_directive_new(void)
directive->ftype = SF_EMPTY;
directive->btype = BT_EMPTY;
directive->meta = OTHER;
+ directive->ctype = -1;
directive->style = cho_style_new_default();
return directive;
}
@@ -3180,6 +3254,11 @@ cho_directive_parse(const char *name)
}
if (!strcmp(chord_directives[TRANSPOSE], name)) {
directive->dtype = DT_CHORD;
+ directive->ctype = TRANSPOSE;
+ goto END;
+ } else if (!strcmp(chord_directives[DEFINE], name)) {
+ directive->dtype = DT_CHORD;
+ directive->ctype = DEFINE;
goto END;
}
if (
@@ -3659,9 +3738,15 @@ cho_songs_parse(FILE *fp, const char *chordpro_filepath, struct Config *config)
}
break;
case DT_CHORD:
- /* INFO: The only chord directive is currently 'transpose' */
- g_transpose--;
- th--;
+ switch (directive->ctype) {
+ case TRANSPOSE:
+ g_transpose--;
+ th--;
+ break;
+ case DEFINE:
+ cho_log(LOG_INFO, "Guys, we have a define here.");
+ break;
+ }
break;
case DT_OUTPUT:
if (directive->btype != BT_EMPTY) {
@@ -3989,16 +4074,22 @@ cho_songs_parse(FILE *fp, const char *chordpro_filepath, struct Config *config)
free(dir_value);
break;
case DT_CHORD:
- /* INFO: The only chord directive is currently 'transpose' */
- if (!transposition_parse(directive_value, &transpose)) {
- LOG_DEBUG("transposition_parse failed.");
- cho_log(LOG_ERR, "Directive 'transpose' has an invalid value.");
- return NULL;
+ switch (directive->ctype) {
+ case TRANSPOSE:
+ if (!transposition_parse(directive_value, &transpose)) {
+ LOG_DEBUG("transposition_parse failed.");
+ cho_log(LOG_ERR, "Directive 'transpose' has an invalid value.");
+ return NULL;
+ }
+ g_transpose_history = erealloc(g_transpose_history, (th+1) * sizeof(int *));
+ g_transpose_history[th] = g_transpose_history[th-1] + transpose;
+ g_transpose = &g_transpose_history[th];
+ th++;
+ break;
+ case DEFINE:
+ cho_log(LOG_INFO, "Guys, we have a define with a value here.");
+ break;
}
- g_transpose_history = erealloc(g_transpose_history, (th+1) * sizeof(int *));
- g_transpose_history[th] = g_transpose_history[th-1] + transpose;
- g_transpose = &g_transpose_history[th];
- th++;
break;
case DT_OUTPUT:
cho_log(LOG_ERR, "Directive '%s' can't have a value.", directive_name);
diff --git a/chordpro.h b/chordpro.h
@@ -3,8 +3,6 @@
#ifndef _CHORDPRO_H_
#define _CHORDPRO_H_
-#define LENGTH(x) (sizeof x / sizeof x[0])
-
#define EMPTY -1.0
#define DEFAULT_FONT_SIZE 14.0
#define DEFAULT_TITLE_FONT_SIZE 18.0
@@ -45,7 +43,7 @@ enum FontDirective {
};
enum ChordDirective {
- TRANSPOSE, /* DEFINE, CHORD */
+ TRANSPOSE, DEFINE /* , CHORD */
};
enum OutputDirective {
@@ -276,6 +274,7 @@ struct ChoDirective {
enum SongFragmentType ftype;
enum BreakType btype;
enum MetadataDirective meta;
+ enum ChordDirective ctype;
struct ChoStyle *style;
};
@@ -342,6 +341,12 @@ int cho_line_item_count(struct ChoLineItem **items);
int cho_text_above_count(struct ChoLineItemAbove **text_above);
char *cho_chord_name_generate(struct ChoChord *chord);
+void cho_chords_add(struct ChoChord ***chords, struct ChoChord *chord);
+bool cho_chords_has(struct ChoChord **chords, struct ChoChord *chord);
+size_t cho_chords_len(struct ChoChord **chords);
+int cho_chord_compare(const void *a, const void *b);
+void cho_chords_free(struct ChoChord **chords);
+
const char *cho_metadata_get(struct ChoMetadata **metadata, const char *name);
struct ChoStyle *cho_style_new(void);
diff --git a/config.c b/config.c
@@ -163,11 +163,16 @@ config_naming_system_to_config_string(enum NamingSystem system)
static enum Instrument
config_instrument_parse(const char *str)
{
- if (!strcmp(str, "string")) {
- return INS_STRING;
+ if (!strcmp(str, "guitar")) {
+ return INS_GUITAR;
} else
if (!strcmp(str, "keyboard")) {
return INS_KEYBOARD;
+ } else
+ if (!strcmp(str, "mandolin")) {
+ return INS_MANDOLIN;
+ } else
+ if (!strcmp(str, "ukulele")) {
}
return INS_UNKNOWN;
}
@@ -329,7 +334,7 @@ config_load_default(void)
config->output->chorus->quote = false;
config->output->diagram = emalloc(sizeof(struct ChordDiagram));
config->output->diagram->show = true;
- config->output->diagram->instrument = INS_STRING;
+ config->output->diagram->instrument = INS_GUITAR;
config->output->system = NS_COMMON;
config->output->styles = emalloc(12 * sizeof(struct OutputStyle *));
config->output->styles[0] = config_output_style_new("title");
diff --git a/config.h b/config.h
@@ -34,8 +34,10 @@ enum NoteType {
};
enum Instrument {
- INS_STRING,
+ INS_GUITAR,
INS_KEYBOARD,
+ INS_MANDOLIN,
+ INS_UKULELE,
INS_UNKNOWN
};
diff --git a/diagrams.h b/diagrams.h
@@ -0,0 +1,4394 @@
+static struct StringDiagram guitar_diagrams[] = {
+ {
+ .name = "C",
+ .base_fret = 1,
+ .frets = { 0, 3, 2, 0, 1, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 3, 2, 0, 1, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cm",
+ .base_fret = 3,
+ .frets = { 1, 1, 3, 3, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C+",
+ .base_fret = 1,
+ .frets = { -1, -1, 2, 1, 1, 4, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 1, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Caug",
+ .base_fret = 1,
+ .frets = { -1, -1, 2, 1, 1, 4, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 1, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cdim",
+ .base_fret = 3,
+ .frets = { -1, 1, 2, 3, 2, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 4, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C0",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cdim",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cdim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C7",
+ .base_fret = 1,
+ .frets = { 0, 3, 2, 3, 1, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 3, 2, 4, 1, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cmaj7",
+ .base_fret = 1,
+ .frets = { -1, 3, 2, 0, 0, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 3, 2, 0, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cm7",
+ .base_fret = 3,
+ .frets = { 1, 1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#",
+ .base_fret = 1,
+ .frets = { -1, -1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#m",
+ .base_fret = 1,
+ .frets = { -1, -1, 2, 1, 2, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 1, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#+",
+ .base_fret = 2,
+ .frets = { -1, 3, 2, 1, 1, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 2, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#aug",
+ .base_fret = 2,
+ .frets = { -1, 3, 2, 1, 1, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 2, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#dim",
+ .base_fret = 1,
+ .frets = { -1, -1, 2, 0, 2, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 0, 4, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#0",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#dim",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#dim7",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#7",
+ .base_fret = 2,
+ .frets = { -1, -1, 2, 3, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 3, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#maj7",
+ .base_fret = 1,
+ .frets = { -1, 4, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#m7",
+ .base_fret = 1,
+ .frets = { -1, 4, 2, 1, 0, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 2, 1, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db",
+ .base_fret = 1,
+ .frets = { -1, -1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbm",
+ .base_fret = 1,
+ .frets = { -1, -1, 2, 1, 2, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 1, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db+",
+ .base_fret = 2,
+ .frets = { -1, 3, 2, 1, 1, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 2, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbaug",
+ .base_fret = 2,
+ .frets = { -1, 3, 2, 1, 1, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 2, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbdim",
+ .base_fret = 1,
+ .frets = { -1, -1, 2, 0, 2, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 0, 4, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db0",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbdim",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbdim7",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db7",
+ .base_fret = 2,
+ .frets = { -1, -1, 2, 3, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 3, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbmaj7",
+ .base_fret = 1,
+ .frets = { -1, 4, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbm7",
+ .base_fret = 1,
+ .frets = { -1, 4, 2, 1, 0, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 2, 1, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 2, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 3, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dm",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 2, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 2, 3, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D+",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 2, 3, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Daug",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 2, 3, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ddim",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 3, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D0",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ddim",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ddim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D7",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 2, 1, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dmaj7",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 2, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 2, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dm7",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#",
+ .base_fret = 3,
+ .frets = { -1, -1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#m",
+ .base_fret = 1,
+ .frets = { -1, -1, 4, 3, 4, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 2, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#+",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, 0, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 2, 1, 0, 0, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#aug",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, 0, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 2, 1, 0, 0, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#dim",
+ .base_fret = 2,
+ .frets = { -1, -1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#0",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#dim",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#dim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 3, 2, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#maj7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 3, 3, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 2, 3, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#m7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 3, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 2, 3, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb",
+ .base_fret = 3,
+ .frets = { -1, -1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebm",
+ .base_fret = 1,
+ .frets = { -1, -1, 4, 3, 4, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 2, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb+",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, 0, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 2, 1, 0, 0, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebaug",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, 0, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 2, 1, 0, 0, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebdim",
+ .base_fret = 2,
+ .frets = { -1, -1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb0",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebdim",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebdim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 3, 2, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebmaj7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 3, 3, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 2, 3, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebm7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 3, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 2, 3, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E",
+ .base_fret = 1,
+ .frets = { 0, 2, 2, 1, 0, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 3, 1, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Em",
+ .base_fret = 1,
+ .frets = { 0, 2, 2, 0, 0, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 3, 0, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E+",
+ .base_fret = 1,
+ .frets = { 0, 3, 2, 1, -1, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 3, 2, 1, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eaug",
+ .base_fret = 1,
+ .frets = { 0, 3, 2, 1, -1, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 3, 2, 1, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Edim",
+ .base_fret = 3,
+ .frets = { -1, -1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E0",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Edim",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Edim7",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E7",
+ .base_fret = 1,
+ .frets = { 0, 2, 0, 1, 0, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 0, 1, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Emaj7",
+ .base_fret = 1,
+ .frets = { 0, 2, 1, 1, 0, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 3, 1, 2, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Em7",
+ .base_fret = 1,
+ .frets = { 0, 2, 0, 0, 0, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 0, 0, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F",
+ .base_fret = 1,
+ .frets = { 1, 3, 3, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fm",
+ .base_fret = 1,
+ .frets = { 1, 3, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F+",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 4, 4, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 4, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Faug",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 4, 4, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 4, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fdim",
+ .base_fret = 4,
+ .frets = { -1, -1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F0",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fdim",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fdim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F7",
+ .base_fret = 1,
+ .frets = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fmaj7",
+ .base_fret = 1,
+ .frets = { -1, -1, 3, 2, 1, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 2, 1, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fm7",
+ .base_fret = 1,
+ .frets = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#",
+ .base_fret = 2,
+ .frets = { 1, 3, 3, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#m",
+ .base_fret = 2,
+ .frets = { 1, 3, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#+",
+ .base_fret = 1,
+ .frets = { 2, 1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 4, 4, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#aug",
+ .base_fret = 1,
+ .frets = { 2, 1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 4, 4, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#dim",
+ .base_fret = 5,
+ .frets = { -1, -1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#0",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#dim",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#dim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#7",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#maj7",
+ .base_fret = 1,
+ .frets = { -1, -1, 4, 3, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 4, 3, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#m7",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb",
+ .base_fret = 2,
+ .frets = { 1, 3, 3, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbm",
+ .base_fret = 2,
+ .frets = { 1, 3, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb+",
+ .base_fret = 1,
+ .frets = { 2, 1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 4, 4, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbaug",
+ .base_fret = 1,
+ .frets = { 2, 1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 4, 4, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbdim",
+ .base_fret = 5,
+ .frets = { -1, -1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb0",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbdim",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbdim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb7",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbmaj7",
+ .base_fret = 1,
+ .frets = { -1, -1, 4, 3, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 4, 3, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbm7",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G",
+ .base_fret = 1,
+ .frets = { 3, 2, 0, 0, 0, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 0, 0, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gm",
+ .base_fret = 3,
+ .frets = { 1, 3, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G+",
+ .base_fret = 5,
+ .frets = { -1, -1, 1, 4, 4, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 4, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gaug",
+ .base_fret = 5,
+ .frets = { -1, -1, 1, 4, 4, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 4, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gdim",
+ .base_fret = 6,
+ .frets = { -1, -1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G0",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gdim",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gdim7",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G7",
+ .base_fret = 1,
+ .frets = { 3, 2, 0, 0, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 2, 0, 0, 0, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gmaj7",
+ .base_fret = 2,
+ .frets = { -1, -1, 4, 3, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 4, 3, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gm7",
+ .base_fret = 3,
+ .frets = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#",
+ .base_fret = 4,
+ .frets = { 1, 3, 3, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#m",
+ .base_fret = 4,
+ .frets = { 1, 3, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#+",
+ .base_fret = 1,
+ .frets = { 0, 3, 2, 1, 1, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 2, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#aug",
+ .base_fret = 1,
+ .frets = { 0, 3, 2, 1, 1, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 2, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#dim",
+ .base_fret = 7,
+ .frets = { -1, -1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#0",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#dim",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#dim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#7",
+ .base_fret = 4,
+ .frets = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#maj7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 1, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 1, 1, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#m7",
+ .base_fret = 4,
+ .frets = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab",
+ .base_fret = 4,
+ .frets = { 1, 3, 3, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abm",
+ .base_fret = 4,
+ .frets = { 1, 3, 3, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab+",
+ .base_fret = 1,
+ .frets = { 0, 3, 2, 1, 1, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 2, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abaug",
+ .base_fret = 1,
+ .frets = { 0, 3, 2, 1, 1, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 4, 3, 1, 2, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abdim",
+ .base_fret = 7,
+ .frets = { -1, -1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 3, 1, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab0",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abdim",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abdim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab7",
+ .base_fret = 4,
+ .frets = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abmaj7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 1, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 1, 1, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abm7",
+ .base_fret = 4,
+ .frets = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 1, 1, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A",
+ .base_fret = 1,
+ .frets = { -1, 0, 2, 2, 2, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 2, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Am",
+ .base_fret = 1,
+ .frets = { -1, 0, 2, 2, 1, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 3, 1, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A+",
+ .base_fret = 1,
+ .frets = { -1, 0, 3, 2, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 4, 2, 3, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Aaug",
+ .base_fret = 1,
+ .frets = { -1, 0, 3, 2, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 4, 2, 3, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Adim",
+ .base_fret = 1,
+ .frets = { -1, 0, 1, 2, 1, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 2, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A0",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Adim",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Adim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A7",
+ .base_fret = 1,
+ .frets = { -1, 0, 2, 0, 2, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 0, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Amaj7",
+ .base_fret = 1,
+ .frets = { -1, 0, 2, 1, 2, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 1, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Am7",
+ .base_fret = 1,
+ .frets = { -1, 0, 2, 0, 1, 0, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 0, 1, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 3, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 3, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#m",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 3, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#+",
+ .base_fret = 1,
+ .frets = { 2, 1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 4, 4, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#aug",
+ .base_fret = 1,
+ .frets = { 2, 1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 4, 4, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#dim",
+ .base_fret = 1,
+ .frets = { -1, 1, 2, 3, 2, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 4, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#0",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#dim",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#dim7",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#7",
+ .base_fret = 1,
+ .frets = { -1, 1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 1, 3, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#maj7",
+ .base_fret = 1,
+ .frets = { -1, 1, 3, 2, 3, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 3, 2, 4, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#m7",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 3, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 3, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbm",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 3, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb+",
+ .base_fret = 1,
+ .frets = { 2, 1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 4, 4, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbaug",
+ .base_fret = 1,
+ .frets = { 2, 1, 0, 3, 3, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 4, 4, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbdim",
+ .base_fret = 1,
+ .frets = { -1, 1, 2, 3, 2, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 4, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb0",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbdim",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbdim7",
+ .base_fret = 2,
+ .frets = { -1, -1, 1, 2, 1, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, 2, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb7",
+ .base_fret = 1,
+ .frets = { -1, 1, 3, 1, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 1, 3, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbmaj7",
+ .base_fret = 1,
+ .frets = { -1, 1, 3, 2, 3, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 3, 2, 4, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbm7",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B",
+ .base_fret = 2,
+ .frets = { 1, 1, 3, 3, 3, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 3, 4, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bm",
+ .base_fret = 2,
+ .frets = { 1, 1, 3, 3, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B+",
+ .base_fret = 1,
+ .frets = { -1, 3, 2, 0, 0, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 0, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Baug",
+ .base_fret = 1,
+ .frets = { -1, 3, 2, 0, 0, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 0, 0, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bdim",
+ .base_fret = 2,
+ .frets = { -1, 1, 2, 3, 2, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 4, 3, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B0",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bdim",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bdim7",
+ .base_fret = 1,
+ .frets = { -1, -1, 0, 1, 0, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B7",
+ .base_fret = 1,
+ .frets = { -1, 2, 1, 2, 0, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 3, 0, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bmaj7",
+ .base_fret = 2,
+ .frets = { -1, 1, 3, 2, 3, -1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 3, 2, 4, 0, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bm7",
+ .base_fret = 2,
+ .frets = { 1, 1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, 2, 1, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C9",
+ .base_fret = 2,
+ .frets = { -1, 2, 1, 2, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 3, 3, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#9",
+ .base_fret = 3,
+ .frets = { -1, 2, 1, 2, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 3, 3, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db9",
+ .base_fret = 3,
+ .frets = { -1, 2, 1, 2, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 3, 3, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D9",
+ .base_fret = 4,
+ .frets = { -1, 2, 1, 2, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 3, 3, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#9",
+ .base_fret = 5,
+ .frets = { -1, 2, 1, 2, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 3, 3, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb9",
+ .base_fret = 5,
+ .frets = { -1, 2, 1, 2, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 3, 3, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E9",
+ .base_fret = 1,
+ .frets = { 0, 2, 0, 1, 0, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 0, 1, 0, 3, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F9",
+ .base_fret = 1,
+ .frets = { 1, 3, 1, 2, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#9",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 2, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb9",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 2, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G9",
+ .base_fret = 3,
+ .frets = { 1, 3, 1, 2, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#9",
+ .base_fret = 4,
+ .frets = { 1, 3, 1, 2, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab9",
+ .base_fret = 4,
+ .frets = { 1, 3, 1, 2, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A9",
+ .base_fret = 5,
+ .frets = { 1, 3, 1, 2, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#9",
+ .base_fret = 6,
+ .frets = { 1, 3, 1, 2, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb9",
+ .base_fret = 6,
+ .frets = { 1, 3, 1, 2, 1, 3, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, 1, 4, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B9",
+ .base_fret = 1,
+ .frets = { -1, 2, 1, 2, 2, 2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 3, 3, 3, -2, -2, -2, -2, -2, -2 }
+ }
+};
+
+static const struct StringDiagram ukulele_diagrams[] = {
+ {
+ .name = "A",
+ .base_fret = 1,
+ .frets = { 2, 1, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Am",
+ .base_fret = 1,
+ .frets = { 2, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A7",
+ .base_fret = 1,
+ .frets = { 0, 1, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Am7",
+ .base_fret = 1,
+ .frets = { 0, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Adim",
+ .base_fret = 2,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Amaj7",
+ .base_fret = 1,
+ .frets = { 1, 1, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A6",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Asus2",
+ .base_fret = 2,
+ .frets = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Asus",
+ .base_fret = 1,
+ .frets = { 2, 2, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Asus4",
+ .base_fret = 1,
+ .frets = { 2, 2, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A+",
+ .base_fret = 1,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Aaug",
+ .base_fret = 1,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A9",
+ .base_fret = 1,
+ .frets = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#m",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#7",
+ .base_fret = 1,
+ .frets = { 1, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#m7",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#dim",
+ .base_fret = 1,
+ .frets = { 0, 1, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#maj7",
+ .base_fret = 1,
+ .frets = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#6",
+ .base_fret = 1,
+ .frets = { 0, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#sus2",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#sus",
+ .base_fret = 1,
+ .frets = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#sus4",
+ .base_fret = 1,
+ .frets = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#+",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#aug",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#9",
+ .base_fret = 1,
+ .frets = { 1, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbm",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb7",
+ .base_fret = 1,
+ .frets = { 1, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbm7",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbdim",
+ .base_fret = 1,
+ .frets = { 0, 1, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbmaj7",
+ .base_fret = 1,
+ .frets = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb6",
+ .base_fret = 1,
+ .frets = { 0, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbsus2",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbsus",
+ .base_fret = 1,
+ .frets = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbsus4",
+ .base_fret = 1,
+ .frets = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb+",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbaug",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb9",
+ .base_fret = 1,
+ .frets = { 1, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B",
+ .base_fret = 2,
+ .frets = { 3, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bm",
+ .base_fret = 2,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B7",
+ .base_fret = 2,
+ .frets = { 1, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bm7",
+ .base_fret = 2,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bdim",
+ .base_fret = 1,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bmaj7",
+ .base_fret = 2,
+ .frets = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B6",
+ .base_fret = 1,
+ .frets = { 1, 3, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 4, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bsus2",
+ .base_fret = 1,
+ .frets = { 5, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bsus",
+ .base_fret = 2,
+ .frets = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bsus4",
+ .base_fret = 2,
+ .frets = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B+",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Baug",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B9",
+ .base_fret = 2,
+ .frets = { 1, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C",
+ .base_fret = 1,
+ .frets = { 0, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cm",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C7",
+ .base_fret = 1,
+ .frets = { 0, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cm7",
+ .base_fret = 3,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cdim",
+ .base_fret = 2,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cmaj7",
+ .base_fret = 1,
+ .frets = { 0, 0, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C6",
+ .base_fret = 1,
+ .frets = { 0, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Csus2",
+ .base_fret = 1,
+ .frets = { 0, 2, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Csus",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Csus4",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C+",
+ .base_fret = 1,
+ .frets = { 1, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Caug",
+ .base_fret = 1,
+ .frets = { 1, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C9",
+ .base_fret = 1,
+ .frets = { 0, 2, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#m",
+ .base_fret = 1,
+ .frets = { 1, 4, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#7",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#m7",
+ .base_fret = 1,
+ .frets = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#dim",
+ .base_fret = 1,
+ .frets = { 0, 1, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#maj7",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#6",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#sus2",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#sus",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#sus4",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#+",
+ .base_fret = 1,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#aug",
+ .base_fret = 1,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#9",
+ .base_fret = 1,
+ .frets = { 1, 3, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbm",
+ .base_fret = 1,
+ .frets = { 1, 4, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db7",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbm7",
+ .base_fret = 1,
+ .frets = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbdim",
+ .base_fret = 1,
+ .frets = { 0, 1, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbmaj7",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db6",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbsus2",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbsus",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbsus4",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db+",
+ .base_fret = 1,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbaug",
+ .base_fret = 1,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db9",
+ .base_fret = 1,
+ .frets = { 1, 3, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D",
+ .base_fret = 1,
+ .frets = { 2, 2, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dm",
+ .base_fret = 1,
+ .frets = { 2, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D7",
+ .base_fret = 2,
+ .frets = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dm7",
+ .base_fret = 1,
+ .frets = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ddim",
+ .base_fret = 1,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dmaj7",
+ .base_fret = 2,
+ .frets = { 1, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D6",
+ .base_fret = 2,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dsus2",
+ .base_fret = 1,
+ .frets = { 2, 2, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dsus",
+ .base_fret = 1,
+ .frets = { 0, 2, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dsus4",
+ .base_fret = 1,
+ .frets = { 0, 2, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D+",
+ .base_fret = 2,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Daug",
+ .base_fret = 2,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D9",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#m",
+ .base_fret = 1,
+ .frets = { 3, 3, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 3, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#7",
+ .base_fret = 3,
+ .frets = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#m7",
+ .base_fret = 2,
+ .frets = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#dim",
+ .base_fret = 2,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#maj7",
+ .base_fret = 3,
+ .frets = { 1, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#6",
+ .base_fret = 3,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#sus2",
+ .base_fret = 1,
+ .frets = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#sus",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#sus4",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#+",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#aug",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#9",
+ .base_fret = 1,
+ .frets = { 0, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebm",
+ .base_fret = 1,
+ .frets = { 3, 3, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 3, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb7",
+ .base_fret = 3,
+ .frets = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebm7",
+ .base_fret = 2,
+ .frets = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebdim",
+ .base_fret = 2,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebmaj7",
+ .base_fret = 3,
+ .frets = { 1, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb6",
+ .base_fret = 3,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebsus2",
+ .base_fret = 1,
+ .frets = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebsus",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebsus4",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb+",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebaug",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb9",
+ .base_fret = 1,
+ .frets = { 0, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E",
+ .base_fret = 2,
+ .frets = { 3, 3, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Em",
+ .base_fret = 2,
+ .frets = { 3, 3, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 3, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E7",
+ .base_fret = 1,
+ .frets = { 1, 2, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Em7",
+ .base_fret = 1,
+ .frets = { 0, 2, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Edim",
+ .base_fret = 1,
+ .frets = { 0, 1, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Emaj7",
+ .base_fret = 1,
+ .frets = { 1, 3, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E6",
+ .base_fret = 4,
+ .frets = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Esus2",
+ .base_fret = 2,
+ .frets = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Esus",
+ .base_fret = 1,
+ .frets = { 2, 4, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 4, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Esus4",
+ .base_fret = 1,
+ .frets = { 2, 4, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 4, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E+",
+ .base_fret = 1,
+ .frets = { 1, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eaug",
+ .base_fret = 1,
+ .frets = { 1, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E9",
+ .base_fret = 1,
+ .frets = { 1, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F",
+ .base_fret = 1,
+ .frets = { 2, 0, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 0, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fm",
+ .base_fret = 1,
+ .frets = { 1, 0, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F7",
+ .base_fret = 1,
+ .frets = { 2, 3, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fm7",
+ .base_fret = 1,
+ .frets = { 1, 3, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fdim",
+ .base_fret = 1,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fmaj7",
+ .base_fret = 1,
+ .frets = { 2, 4, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 4, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F6",
+ .base_fret = 1,
+ .frets = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fsus2",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fsus",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fsus4",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F+",
+ .base_fret = 1,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Faug",
+ .base_fret = 1,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F9",
+ .base_fret = 2,
+ .frets = { 1, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#",
+ .base_fret = 1,
+ .frets = { 3, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#m",
+ .base_fret = 1,
+ .frets = { 2, 1, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#7",
+ .base_fret = 1,
+ .frets = { 3, 4, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 4, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#m7",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#dim",
+ .base_fret = 2,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#maj7",
+ .base_fret = 2,
+ .frets = { 2, 4, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 4, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#6",
+ .base_fret = 2,
+ .frets = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#sus2",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#sus",
+ .base_fret = 1,
+ .frets = { 4, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#sus4",
+ .base_fret = 1,
+ .frets = { 4, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#+",
+ .base_fret = 2,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#aug",
+ .base_fret = 2,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#9",
+ .base_fret = 3,
+ .frets = { 1, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb",
+ .base_fret = 1,
+ .frets = { 3, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbm",
+ .base_fret = 1,
+ .frets = { 2, 1, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb7",
+ .base_fret = 1,
+ .frets = { 3, 4, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 4, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbm7",
+ .base_fret = 2,
+ .frets = { 1, 3, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbdim",
+ .base_fret = 2,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbmaj7",
+ .base_fret = 2,
+ .frets = { 2, 4, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 4, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb6",
+ .base_fret = 2,
+ .frets = { 2, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 2, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbsus2",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbsus",
+ .base_fret = 1,
+ .frets = { 4, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbsus4",
+ .base_fret = 1,
+ .frets = { 4, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb+",
+ .base_fret = 2,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbaug",
+ .base_fret = 2,
+ .frets = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb9",
+ .base_fret = 3,
+ .frets = { 1, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G",
+ .base_fret = 1,
+ .frets = { 0, 2, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gm",
+ .base_fret = 1,
+ .frets = { 0, 2, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G7",
+ .base_fret = 1,
+ .frets = { 0, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gm7",
+ .base_fret = 1,
+ .frets = { 0, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gdim",
+ .base_fret = 1,
+ .frets = { 0, 1, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gmaj7",
+ .base_fret = 1,
+ .frets = { 0, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G6",
+ .base_fret = 1,
+ .frets = { 0, 2, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gsus2",
+ .base_fret = 1,
+ .frets = { 0, 2, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gsus",
+ .base_fret = 1,
+ .frets = { 0, 2, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gsus4",
+ .base_fret = 1,
+ .frets = { 0, 2, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G+",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gaug",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G9",
+ .base_fret = 1,
+ .frets = { 2, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#",
+ .base_fret = 3,
+ .frets = { 3, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#m",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#7",
+ .base_fret = 1,
+ .frets = { 1, 3, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#m7",
+ .base_fret = 1,
+ .frets = { 1, 3, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 4, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#dim",
+ .base_fret = 1,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#maj7",
+ .base_fret = 1,
+ .frets = { 1, 3, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#6",
+ .base_fret = 1,
+ .frets = { 1, 3, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#sus2",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#sus",
+ .base_fret = 1,
+ .frets = { 1, 2, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#sus4",
+ .base_fret = 1,
+ .frets = { 1, 2, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#+",
+ .base_fret = 1,
+ .frets = { 1, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#aug",
+ .base_fret = 1,
+ .frets = { 1, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#9",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab",
+ .base_fret = 3,
+ .frets = { 3, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abm",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab7",
+ .base_fret = 1,
+ .frets = { 1, 3, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abm7",
+ .base_fret = 1,
+ .frets = { 1, 3, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 4, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abdim",
+ .base_fret = 1,
+ .frets = { 1, 2, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abmaj7",
+ .base_fret = 1,
+ .frets = { 1, 3, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab6",
+ .base_fret = 1,
+ .frets = { 1, 3, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Absus2",
+ .base_fret = 1,
+ .frets = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Absus",
+ .base_fret = 1,
+ .frets = { 1, 2, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Absus4",
+ .base_fret = 1,
+ .frets = { 1, 2, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab+",
+ .base_fret = 1,
+ .frets = { 1, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abaug",
+ .base_fret = 1,
+ .frets = { 1, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab9",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ }
+};
+
+static const struct StringDiagram mandolin_diagrams[] = {
+ {
+ .name = "A",
+ .base_fret = 1,
+ .frets = { 2, 2, 4, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Am",
+ .base_fret = 1,
+ .frets = { 2, 2, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A7",
+ .base_fret = 2,
+ .frets = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Am7",
+ .base_fret = 2,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Aø",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Am7b5",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ah",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A0",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Adim",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Adim7",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Amaj7",
+ .base_fret = 2,
+ .frets = { 1, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A6",
+ .base_fret = 2,
+ .frets = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Asus2",
+ .base_fret = 1,
+ .frets = { 2, 2, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Asus",
+ .base_fret = 1,
+ .frets = { 2, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Asus4",
+ .base_fret = 1,
+ .frets = { 2, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A+",
+ .base_fret = 1,
+ .frets = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Aaug",
+ .base_fret = 1,
+ .frets = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A9",
+ .base_fret = 2,
+ .frets = { 1, 4, 3, 6, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#m",
+ .base_fret = 3,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#7",
+ .base_fret = 3,
+ .frets = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#m7",
+ .base_fret = 3,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#ø",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#m7b5",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#h",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#0",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#dim",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#dim7",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#maj7",
+ .base_fret = 1,
+ .frets = { 3, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#6",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#sus2",
+ .base_fret = 3,
+ .frets = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#sus",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#sus4",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#+",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#aug",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "A#9",
+ .base_fret = 1,
+ .frets = { 3, 0, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbm",
+ .base_fret = 3,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb7",
+ .base_fret = 3,
+ .frets = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbm7",
+ .base_fret = 3,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbø",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbm7b5",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbh",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb0",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbdim",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbdim7",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbmaj7",
+ .base_fret = 1,
+ .frets = { 3, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb6",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbsus2",
+ .base_fret = 3,
+ .frets = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbsus",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbsus4",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb+",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bbaug",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bb9",
+ .base_fret = 1,
+ .frets = { 3, 0, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B",
+ .base_fret = 4,
+ .frets = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bm",
+ .base_fret = 1,
+ .frets = { 4, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B7",
+ .base_fret = 4,
+ .frets = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bm7",
+ .base_fret = 1,
+ .frets = { 4, 0, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bø",
+ .base_fret = 1,
+ .frets = { 2, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bm7b5",
+ .base_fret = 1,
+ .frets = { 2, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bh",
+ .base_fret = 1,
+ .frets = { 2, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B0",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bdim",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bdim7",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bmaj7",
+ .base_fret = 1,
+ .frets = { 4, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B6",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bsus2",
+ .base_fret = 4,
+ .frets = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bsus",
+ .base_fret = 2,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Bsus4",
+ .base_fret = 2,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B+",
+ .base_fret = 1,
+ .frets = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Baug",
+ .base_fret = 1,
+ .frets = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "B9",
+ .base_fret = 1,
+ .frets = { 4, 1, 4, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C",
+ .base_fret = 1,
+ .frets = { 5, 2, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cm",
+ .base_fret = 5,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C7",
+ .base_fret = 1,
+ .frets = { 5, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cm7",
+ .base_fret = 5,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cø",
+ .base_fret = 1,
+ .frets = { 3, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cm7b5",
+ .base_fret = 1,
+ .frets = { 3, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ch",
+ .base_fret = 1,
+ .frets = { 3, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C0",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cdim",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cdim7",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Cmaj7",
+ .base_fret = 2,
+ .frets = { 4, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C6",
+ .base_fret = 2,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Csus2",
+ .base_fret = 1,
+ .frets = { 5, 0, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Csus",
+ .base_fret = 3,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Csus4",
+ .base_fret = 3,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C+",
+ .base_fret = 2,
+ .frets = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Caug",
+ .base_fret = 2,
+ .frets = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C9",
+ .base_fret = 1,
+ .frets = { 5, 0, 7, 6, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#",
+ .base_fret = 1,
+ .frets = { 6, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#m",
+ .base_fret = 1,
+ .frets = { 6, 6, 4, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#7",
+ .base_fret = 2,
+ .frets = { 5, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#m7",
+ .base_fret = 6,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#ø",
+ .base_fret = 2,
+ .frets = { 3, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#m7b5",
+ .base_fret = 2,
+ .frets = { 3, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#h",
+ .base_fret = 2,
+ .frets = { 3, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#0",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#dim",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#dim7",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#maj7",
+ .base_fret = 3,
+ .frets = { 4, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#6",
+ .base_fret = 3,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#sus2",
+ .base_fret = 1,
+ .frets = { 1, 1, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#sus",
+ .base_fret = 4,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#sus4",
+ .base_fret = 4,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#+",
+ .base_fret = 1,
+ .frets = { 6, 3, 0, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#aug",
+ .base_fret = 1,
+ .frets = { 6, 3, 0, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "C#9",
+ .base_fret = 3,
+ .frets = { 4, 1, 4, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db",
+ .base_fret = 1,
+ .frets = { 6, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbm",
+ .base_fret = 1,
+ .frets = { 6, 6, 4, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db7",
+ .base_fret = 2,
+ .frets = { 5, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbm7",
+ .base_fret = 6,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbø",
+ .base_fret = 2,
+ .frets = { 3, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbm7b5",
+ .base_fret = 2,
+ .frets = { 3, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbh",
+ .base_fret = 2,
+ .frets = { 3, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db0",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbdim",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbdim7",
+ .base_fret = 1,
+ .frets = { 3, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbmaj7",
+ .base_fret = 3,
+ .frets = { 4, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db6",
+ .base_fret = 3,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbsus2",
+ .base_fret = 1,
+ .frets = { 1, 1, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbsus",
+ .base_fret = 4,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbsus4",
+ .base_fret = 4,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db+",
+ .base_fret = 1,
+ .frets = { 6, 3, 0, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dbaug",
+ .base_fret = 1,
+ .frets = { 6, 3, 0, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 1, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Db9",
+ .base_fret = 3,
+ .frets = { 4, 1, 4, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D",
+ .base_fret = 1,
+ .frets = { 2, 0, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dm",
+ .base_fret = 1,
+ .frets = { 2, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 0, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D7",
+ .base_fret = 1,
+ .frets = { 2, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dm7",
+ .base_fret = 1,
+ .frets = { 2, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dø",
+ .base_fret = 1,
+ .frets = { 1, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dm7b5",
+ .base_fret = 1,
+ .frets = { 1, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dh",
+ .base_fret = 1,
+ .frets = { 1, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D0",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ddim",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ddim7",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dmaj7",
+ .base_fret = 1,
+ .frets = { 2, 0, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D6",
+ .base_fret = 1,
+ .frets = { 2, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dsus2",
+ .base_fret = 1,
+ .frets = { 2, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dsus",
+ .base_fret = 1,
+ .frets = { 2, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Dsus4",
+ .base_fret = 1,
+ .frets = { 2, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 0, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D+",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Daug",
+ .base_fret = 1,
+ .frets = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D9",
+ .base_fret = 1,
+ .frets = { 7, 4, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#m",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#7",
+ .base_fret = 1,
+ .frets = { 3, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#m7",
+ .base_fret = 1,
+ .frets = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#ø",
+ .base_fret = 1,
+ .frets = { 2, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#m7b5",
+ .base_fret = 1,
+ .frets = { 2, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#h",
+ .base_fret = 1,
+ .frets = { 2, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#0",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#dim",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#dim7",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#maj7",
+ .base_fret = 1,
+ .frets = { 3, 1, 5, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#6",
+ .base_fret = 1,
+ .frets = { 3, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#sus2",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#sus",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#sus4",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#+",
+ .base_fret = 1,
+ .frets = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#aug",
+ .base_fret = 1,
+ .frets = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "D#9",
+ .base_fret = 5,
+ .frets = { 4, 1, 4, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebm",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb7",
+ .base_fret = 1,
+ .frets = { 3, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebm7",
+ .base_fret = 1,
+ .frets = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebø",
+ .base_fret = 1,
+ .frets = { 2, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebm7b5",
+ .base_fret = 1,
+ .frets = { 2, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebh",
+ .base_fret = 1,
+ .frets = { 2, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb0",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebdim",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebdim7",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebmaj7",
+ .base_fret = 1,
+ .frets = { 3, 1, 5, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb6",
+ .base_fret = 1,
+ .frets = { 3, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebsus2",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebsus",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebsus4",
+ .base_fret = 1,
+ .frets = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb+",
+ .base_fret = 1,
+ .frets = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ebaug",
+ .base_fret = 1,
+ .frets = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eb9",
+ .base_fret = 5,
+ .frets = { 4, 1, 4, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E",
+ .base_fret = 1,
+ .frets = { 1, 2, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Em",
+ .base_fret = 1,
+ .frets = { 0, 2, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 2, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E7",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Em7",
+ .base_fret = 1,
+ .frets = { 0, 0, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eø",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Em7b5",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eh",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E0",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Edim",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Edim7",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Emaj7",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E6",
+ .base_fret = 1,
+ .frets = { 4, 6, 4, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Esus2",
+ .base_fret = 2,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Esus",
+ .base_fret = 1,
+ .frets = { 4, 2, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Esus4",
+ .base_fret = 1,
+ .frets = { 4, 2, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E+",
+ .base_fret = 1,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Eaug",
+ .base_fret = 1,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "E9",
+ .base_fret = 6,
+ .frets = { 4, 1, 4, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F",
+ .base_fret = 1,
+ .frets = { 2, 3, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 0, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fm",
+ .base_fret = 1,
+ .frets = { 1, 3, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F7",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fm7",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fø",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fm7b5",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fh",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F0",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fdim",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fdim7",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fmaj7",
+ .base_fret = 1,
+ .frets = { 2, 2, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F6",
+ .base_fret = 1,
+ .frets = { 2, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 0, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fsus2",
+ .base_fret = 1,
+ .frets = { 0, 3, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fsus",
+ .base_fret = 1,
+ .frets = { 5, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Fsus4",
+ .base_fret = 1,
+ .frets = { 5, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F+",
+ .base_fret = 2,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Faug",
+ .base_fret = 2,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F9",
+ .base_fret = 7,
+ .frets = { 4, 1, 4, 5, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#",
+ .base_fret = 2,
+ .frets = { 2, 3, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#m",
+ .base_fret = 2,
+ .frets = { 1, 3, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#7",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#m7",
+ .base_fret = 2,
+ .frets = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#ø",
+ .base_fret = 2,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#m7b5",
+ .base_fret = 2,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#h",
+ .base_fret = 2,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#0",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#dim",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#dim7",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#maj7",
+ .base_fret = 2,
+ .frets = { 2, 2, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#6",
+ .base_fret = 1,
+ .frets = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#sus2",
+ .base_fret = 4,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#sus",
+ .base_fret = 2,
+ .frets = { 5, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#sus4",
+ .base_fret = 2,
+ .frets = { 5, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#+",
+ .base_fret = 3,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#aug",
+ .base_fret = 3,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "F#9",
+ .base_fret = 1,
+ .frets = { 11, 8, 11, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb",
+ .base_fret = 2,
+ .frets = { 2, 3, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbm",
+ .base_fret = 2,
+ .frets = { 1, 3, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb7",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbm7",
+ .base_fret = 2,
+ .frets = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbø",
+ .base_fret = 2,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbm7b5",
+ .base_fret = 2,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbh",
+ .base_fret = 2,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb0",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbdim",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbdim7",
+ .base_fret = 1,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbmaj7",
+ .base_fret = 2,
+ .frets = { 2, 2, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 3, 4, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb6",
+ .base_fret = 1,
+ .frets = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 4, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbsus2",
+ .base_fret = 4,
+ .frets = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 3, 1, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbsus",
+ .base_fret = 2,
+ .frets = { 5, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbsus4",
+ .base_fret = 2,
+ .frets = { 5, 3, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 4, 2, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb+",
+ .base_fret = 3,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gbaug",
+ .base_fret = 3,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gb9",
+ .base_fret = 7,
+ .frets = { 4, 1, 4, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 3, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G",
+ .base_fret = 1,
+ .frets = { 0, 0, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gm",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G7",
+ .base_fret = 1,
+ .frets = { 0, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gm7",
+ .base_fret = 1,
+ .frets = { 0, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gø",
+ .base_fret = 3,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gm7b5",
+ .base_fret = 3,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gh",
+ .base_fret = 3,
+ .frets = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G0",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gdim",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gdim7",
+ .base_fret = 2,
+ .frets = { 2, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 2, 1, 4, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gmaj7",
+ .base_fret = 1,
+ .frets = { 0, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G6",
+ .base_fret = 1,
+ .frets = { 0, 0, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 2, 0, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gsus2",
+ .base_fret = 1,
+ .frets = { 0, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 0, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gsus",
+ .base_fret = 1,
+ .frets = { 0, 0, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gsus4",
+ .base_fret = 1,
+ .frets = { 0, 0, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 0, 1, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G+",
+ .base_fret = 1,
+ .frets = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Gaug",
+ .base_fret = 1,
+ .frets = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 2, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G9",
+ .base_fret = 1,
+ .frets = { 0, 3, 0, 7, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 0, 1, 0, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#m",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#7",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#m7",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#ø",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#m7b5",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#h",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#0",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#dim",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#dim7",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#maj7",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#6",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#sus2",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#sus",
+ .base_fret = 1,
+ .frets = { 1, 1, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#sus4",
+ .base_fret = 1,
+ .frets = { 1, 1, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#+",
+ .base_fret = 1,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#aug",
+ .base_fret = 1,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "G#9",
+ .base_fret = 1,
+ .frets = { 1, 4, 3, 6, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abm",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab7",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abm7",
+ .base_fret = 1,
+ .frets = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abø",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abm7b5",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abh",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab0",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abdim",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abdim7",
+ .base_fret = 1,
+ .frets = { 1, 0, 2, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 0, 3, 2, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abmaj7",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 3, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab6",
+ .base_fret = 1,
+ .frets = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 1, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Absus2",
+ .base_fret = 1,
+ .frets = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 1, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Absus",
+ .base_fret = 1,
+ .frets = { 1, 1, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Absus4",
+ .base_fret = 1,
+ .frets = { 1, 1, 4, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 1, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab+",
+ .base_fret = 1,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Abaug",
+ .base_fret = 1,
+ .frets = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 2, 3, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ },
+ {
+ .name = "Ab9",
+ .base_fret = 1,
+ .frets = { 1, 4, 3, 6, -2, -2, -2, -2, -2, -2, -2, -2 },
+ .fingers = { 1, 3, 2, 4, -2, -2, -2, -2, -2, -2, -2, -2 }
+ }
+};
diff --git a/out_pdf.c b/out_pdf.c
@@ -9,6 +9,7 @@
#include "out_pdf.h"
#include "fontconfig.h"
#include "util.h"
+#include "chord_diagram.h"
static struct Obj **g_fonts = NULL;
static char g_cho_dirpath[PATH_MAX];
@@ -17,7 +18,7 @@ static double g_current_font_size;
static pdfio_obj_t *g_current_font_obj = NULL;
static pdfio_file_t *g_pdf_file = NULL;
-static pdfio_obj_t *
+pdfio_obj_t *
out_pdf_fnt_obj_get_by_name(const char *name)
{
int i = 0;
@@ -813,13 +814,13 @@ out_pdf_load_chord_diagram_fonts(void)
}
static bool
-out_pdf_get_chords(struct ChoSong **songs, char ***chords)
+out_pdf_get_chords(struct ChoSong **songs, struct ChoChord ***chords)
{
struct ChoSong **s = songs;
struct ChoSection **se;
struct ChoLine **li;
struct ChoLineItemAbove **above;
- char *name;
+ // char *name;
while (*s) {
se = (*s)->sections;
while (*se) {
@@ -828,10 +829,14 @@ out_pdf_get_chords(struct ChoSong **songs, char ***chords)
above = (*li)->text_above;
while (*above) {
if ((*above)->is_chord) {
- name = cho_chord_name_generate((*above)->u.chord);
- printf("chord '%s'\n", name);
- // TODO: Add name to chords
- free(name);
+ if (!cho_chords_has(*chords, (*above)->u.chord)) {
+ cho_chords_add(chords, (*above)->u.chord);
+ }
+ /* name = cho_chord_name_generate((*above)->u.chord);
+ if (!strs_has(*chords, name)) {
+ strs_add(chords, name);
+ }
+ free(name); */
}
above++;
}
@@ -960,7 +965,7 @@ pdf_text_free(struct PDFText *text)
}
static struct PDFPage *
-pdf_page_new()
+pdf_page_new(void)
{
struct PDFPage *page = emalloc(sizeof(struct PDFPage));
page->texts = NULL;
@@ -1763,18 +1768,18 @@ pdf_content_free(struct PDFContent *content)
}
static bool
-pdf_content_render(struct PDFContent *content, pdfio_file_t *file, struct Config *config)
+pdf_content_render(struct PDFContent *content, pdfio_file_t *file, struct ChordDiagram **diagrams)
{
- int page = 1;
+ int p;
struct PDFPage **pages;
struct PDFText **texts;
struct PDFImage **imgs;
pdfio_stream_t *stream;
pages = content->pages;
- while (*pages) {
- texts = (*pages)->texts;
- imgs = (*pages)->images;
- stream = out_pdf_page_create(file, imgs, (*pages)->annots);
+ for (p = 0; pages[p]; p++) {
+ texts = pages[p]->texts;
+ imgs = pages[p]->images;
+ stream = out_pdf_page_create(file, imgs, pages[p]->annots);
if (!stream) {
LOG_DEBUG("out_pdf_page_create failed.");
return false;
@@ -1802,19 +1807,26 @@ pdf_content_render(struct PDFContent *content, pdfio_file_t *file, struct Config
}
imgs++;
}
- // TODO: Add chord diagrams to first page
- /* if (page == 1) {
- if (!chord_diagram_draw(stream, diagram, x, y, width)) {
- LOG_DEBUG("chord_diagram_draw failed.");
- return false;
+ if (p == 0 && diagrams) {
+ double x = MARGIN_HORIZONTAL;
+ double y = 40.0;
+ double size = 50.0;
+ double padding = 20.0;
+ struct ChordDiagram **d = diagrams;
+ /* TODO: Handle line break when too long */
+ while (*d) {
+ if (!chord_diagram_draw(stream, *d, x, y, size)) {
+ LOG_DEBUG("chord_diagram_draw failed.");
+ return false;
+ }
+ x += size + padding;
+ d++;
}
- } */
+ }
if (!pdfioStreamClose(stream)) {
LOG_DEBUG("pdfioStreamClose failed.");
return false;
}
- pages++;
- page++;
}
return true;
}
@@ -1827,28 +1839,34 @@ out_pdf_create(
struct Config *config
)
{
+ struct ChordDiagram **diagrams = NULL;
+ struct Font **needed_fonts;
+ struct Obj **img_objs = NULL;
+ struct Obj *fnt;
+ struct PDFContent *pdf_content;
+ pdfio_rect_t media_box_a4 = { 0.0, 0.0, MEDIABOX_WIDTH, MEDIABOX_HEIGHT };
+ pdfio_rect_t crop_box = { 0.0, 0.0, MEDIABOX_WIDTH, MEDIABOX_HEIGHT };
+ int f = 0;
+ char *dirpath, *fontpath, *pdf_filename;
+ struct ChoChord **chords = NULL;
+
memset(&g_current_font_name, 0, sizeof(g_current_font_name));
memset(&g_cho_dirpath, 0, PATH_MAX);
- char *dirpath = filepath_dirname(cho_filepath);
+
+ dirpath = filepath_dirname(cho_filepath);
strcpy((char *)&g_cho_dirpath, dirpath);
free(dirpath);
- char *pdf_filename = out_pdf_filename_create(songs, cho_filepath, output_folder_or_file);
+ pdf_filename = out_pdf_filename_create(songs, cho_filepath, output_folder_or_file);
if (!pdf_filename) {
LOG_DEBUG("out_pdf_filename_create failed.");
return NULL;
}
- struct Obj **img_objs = NULL;
- pdfio_rect_t media_box_a4 = { 0.0, 0.0, MEDIABOX_WIDTH, MEDIABOX_HEIGHT };
- pdfio_rect_t crop_box = { 0.0, 0.0, MEDIABOX_WIDTH, MEDIABOX_HEIGHT };
g_pdf_file = pdfioFileCreate(pdf_filename, "2.0", &media_box_a4, &crop_box, NULL, NULL);
if (!out_pdf_set_title(g_pdf_file, songs)) {
LOG_DEBUG("out_pdf_set_title failed.");
return NULL;
}
- struct Font **needed_fonts = out_pdf_font_get_all(songs, config);
- struct Obj *fnt;
- int f = 0;
- char *fontpath;
+ needed_fonts = out_pdf_font_get_all(songs, config);
while (needed_fonts[f] != NULL) {
fontpath = fontconfig_fontpath_find(needed_fonts[f], FT_TTF);
if (fontpath) {
@@ -1882,20 +1900,26 @@ out_pdf_create(
LOG_DEBUG("out_pdf_load_images failed.");
return NULL;
}
- char **chords = NULL;
- if (!out_pdf_get_chords(songs, &chords)) {
- LOG_DEBUG("out_pdf_get_chords failed.");
- return NULL;
+ if (config->output->diagram->show) {
+ if (!out_pdf_get_chords(songs, &chords)) {
+ LOG_DEBUG("out_pdf_get_chords failed.");
+ return NULL;
+ }
+ if (chords) {
+ qsort(chords, cho_chords_len(chords), sizeof(struct ChoChord *), cho_chord_compare);
+ diagrams = chord_diagrams_create(config, &chords);
+ }
}
- struct PDFContent *pdf_content;
if (!pdf_content_create(&pdf_content, songs, config, img_objs)) {
LOG_DEBUG("pdf_content_create failed.");
return NULL;
}
- if (!pdf_content_render(pdf_content, g_pdf_file, config)) {
+ if (!pdf_content_render(pdf_content, g_pdf_file, diagrams)) {
LOG_DEBUG("pdf_content_render failed.");
return NULL;
}
+ cho_chords_free(chords);
+ chord_diagrams_free(diagrams);
objs_free(img_objs);
pdf_content_free(pdf_content);
if (!pdfioFileClose(g_pdf_file)) {
diff --git a/out_pdf.h b/out_pdf.h
@@ -76,3 +76,4 @@ struct PDFContext {
};
char *out_pdf_create(const char *cho_filename, const char *output_folder_or_file, struct ChoSong **songs, struct Config *config);
+pdfio_obj_t *out_pdf_fnt_obj_get_by_name(const char *name);
diff --git a/util.c b/util.c
@@ -6,6 +6,7 @@
#include <string.h>
#include <sys/stat.h>
#include <errno.h>
+#include <assert.h>
#include "util.h"
void *
@@ -175,6 +176,70 @@ str_remove_leading_whitespace(const char *str)
return strdup(&str[i]);
}
+int
+str_compare(const char *a, const char *b)
+{
+ if (a && b) {
+ return strcmp(a, b);
+ } else
+ if (!a && !b) {
+ return 0;
+ } else
+ if (a && !b) {
+ return 1;
+ } else
+ if (!a && b) {
+ return -1;
+ }
+ assert(false);
+}
+
+bool
+strs_has(char **strs, const char *str)
+{
+ if (!strs) {
+ return false;
+ }
+ char **s = strs;
+ while (*s) {
+ if (!strcmp(*s, str)) {
+ return true;
+ }
+ s++;
+ }
+ return false;
+}
+
+void
+strs_add(char ***strs, const char *str)
+{
+ int i = 0;
+ if (*strs) {
+ char **s = *strs;
+ while (*s) {
+ i++;
+ s++;
+ }
+ }
+ *strs = erealloc(*strs, (i+2) * sizeof(char *));
+ (*strs)[i] = strdup(str);
+ (*strs)[i+1] = NULL;
+}
+
+void
+strs_free(char **strs)
+{
+ if (!strs) {
+ return;
+ }
+ char **begin = strs;
+ while (*begin) {
+ free(*begin);
+ begin++;
+ }
+ free(strs);
+}
+
enum FileType
file_type(const char *path)
{
diff --git a/util.h b/util.h
@@ -4,6 +4,8 @@
#define LOG_DEBUG(msg)
#endif
+#define LENGTH(x) (sizeof x / sizeof x[0])
+
#define COLOR_BOLD_RED "\033[1;31m"
#define COLOR_BOLD_ORANGE "\033[1;33m"
#define COLOR_BOLD_WHITE "\033[1;37m"
@@ -44,6 +46,10 @@ bool str_starts_with(const char *str, const char *part);
char *str_normalize(const char *str);
char *str_trim(const char *str);
char *str_remove_leading_whitespace(const char *str);
+void strs_free(char **strs);
+bool strs_has(char **strs, const char *str);
+void strs_add(char ***strs, const char *str);
+int str_compare(const char *a, const char *b);
enum FileType file_type(const char *path);
char *file_extension_replace_or_add(const char *old, const char *extension);