lorid

convert chordpro to pdf
git clone git://git.relim.de/lorid.git
Log | Files | Refs | README | LICENSE

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:
Mchord_diagram.c | 122+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Mchord_diagram.h | 4++++
Mchordpro.c | 117++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
Mchordpro.h | 11++++++++---
Mconfig.c | 11++++++++---
Mconfig.h | 4+++-
Adiagrams.h | 4394+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mout_pdf.c | 98+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Mout_pdf.h | 1+
Mutil.c | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mutil.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);