Lesson 15: The fretboard — CAGED, fingering and playability
Sections
Reading settings
No voice for this language in this browser.
More voices
Code and English terms
Off: the page’s voice reads everything, with no pause between two voices.
No voice for this language in this browser.
More voices
More voices: Microsoft Edge has natural online voices, and Windows (Settings › Time & language › Speech), macOS and Android install others.
Lessons 1 and 8 put notes on the neck, and lesson 14 arranged them into voicings. This lesson looks at the neck as a physical object: where the frets lie, how many of them a hand covers, the five chord shapes of the CAGED system that slide along it, and the tunings that change it. Guitar Alchemist (GA) measures all of it: two classes compute fret distances, three measures score how hard a shape is to play, a configuration file lists tunings, and a tool of its MCP server offers easier voicings to a guitarist who cannot play a barre chord. The course program computes the same quantities from their definitions and compares.
All GA links point to commit a826864. The outputs come from the command below; the entry point is l17.
dotnet run --project code/music-theory-ga/GaTheory -c Release -- l17Where the frets go
Section titled “Where the frets go”The idea
Section titled “The idea”Wikipedia: “the ratio of the distances of two consecutive frets to the bridge is … (the twelfth root of two), or approximately 1.059463”, and “Theoretically, the twelfth fret should divide the string in two exact halves” (Fret). The Streeling module MUS-009 · Tuning and Fretboard Geometry derives the distance from the nut to fret n, d(n) = L · (1 − 2^(−n/12)), where L is the scale length, the vibrating length of the open string, and gives figures: “On a 648 mm scale, frets 1, 5, 7, 12 and 24 lie 36.4, 162.5, 215.5, 324 and 486 mm from the nut” (mus-009-tuning-fretboard-geometry.md#L84). The frets get closer together up the neck. Above the 12th fret, the neck is a half-size copy of the part below: the same five frets measure half as much from fret 12 as from the nut.
In GA: two calculators, and a document
Section titled “In GA: two calculators, and a document”FretboardGeometry, whose summary says “Implements standard logarithmic fret spacing”, computes 2^(−low/12) − 2^(−high/12), a fraction of the string, and multiplies it by a scale length of 647.7 mm, “(25.5 inches)” (BiomechanicsConstants.cs#L10-L11). PhysicalFretboardCalculator, which lesson 14’s analyzers call, works on 648 mm, its “Electric guitar (Fender)” default (#L327-L334). The program asks both (Lesson17.cs#L185-L198):
== Distance from the nut to fret n, the course's d(n) = L(1 − 2^(−n/12)), against FretboardGeometry.CalculateSpanMm(0, n) on its 647.7 mm and PhysicalFretboardCalculator.CalculateFretPositionMm(n) on its 648 mm (GA.Domain.Services, compiled)fret course, 647.7 CalculateSpanMm check course, 648 CalculateFretPositionMm check1 36.35 36.35 ok 36.37 36.37 ok2 70.66 70.66 ok 70.70 70.70 ok3 103.05 103.05 ok 103.10 103.10 ok4 133.62 133.62 ok 133.68 133.68 ok5 162.47 162.47 ok 162.55 162.55 ok7 215.41 215.41 ok 215.51 215.51 ok12 323.85 323.85 ok 324.00 324.00 ok17 405.09 405.09 ok 405.27 405.27 ok19 431.56 431.56 ok 431.76 431.76 ok24 485.78 485.78 ok 486.00 486.00 okthe length left to the saddle, fret n against fret n + 1, for n from 0 to 23: 1.059463 each time, the twelfth root of two: TrueMUS-009's frets 1, 5, 7, 12 and 24 on 648 mm, "36.4, 162.5, 215.5, 324 and 486": the calculator gives 36.4, 162.5, 215.5, 324, 486Both agree with the formula at every fret, the ratio is the twelfth root of two at all 24 frets, and MUS-009’s figures come out.
Next to these classes, GA keeps a document, PHYSICAL_PLAYABILITY_IMPROVEMENTS.md, which gives a “5-fret span at different positions” (#L45-L50) and quotes the output of a test, “Difference (low vs high): 50.02mm (71.4% larger)” (#L155-L161). The test prints those lines from CalculateFretDistanceMm (PhysicalFretboardCalculatorTests.cs#L36-L54), in a file GA’s test project removes from compilation (GA.Business.Core.Tests.csproj#L47), as MUS-009 noted (mus-009-tuning-fretboard-geometry.md#L109). The program computes the three spans (Lesson17.cs#L200-L210):
== The 5-fret spans quoted in GA's PHYSICAL_PLAYABILITY_IMPROVEMENTS.md, against PhysicalFretboardCalculator.CalculateFretDistanceMm on 648 mm and the coursefrets the document GA course check0-5 120.11 162.55 162.55 DIFF7-12 85.42 108.49 108.49 DIFF12-17 70.09 81.27 81.27 DIFFfrets 0-5 against 12-17: the document says "50.02mm (71.4% larger)"; GA's distances differ by 81.27 mm, 100.0% largerNone of the document’s figures is what GA’s calculator returns. With the formula, frets 12 to 17 measure exactly half of frets 0 to 5, so the low span is 100.0% larger than the high one, not 71.4%.
How far a hand reaches
Section titled “How far a hand reaches”The idea
Section titled “The idea”Wikipedia describes the basic position of the fretting hand: “each of the four fingers of the fretting hand controlling one of the first four frets (index finger on fret 1, little finger on fret 4, etc.)” (Guitar tunings). Four fingers, four frets: the first position. Because the frets get closer together, the same hand covers more frets higher up. Measured in millimetres, a reach is a fixed length, not a fixed number of frets.
In GA: a reach measured from the nut
Section titled “In GA: a reach measured from the nut”BiomechanicsConstants.ComfortableReachScaleUnits is 0.21, under the comment “Practical finger reach (approx 4-fret span at the nut) in relative scale units. (1 - 2^(-4/12)) approx 0.206” (BiomechanicsConstants.cs#L24-L28): the distance from the nut to fret 4, the room four fingers need for frets 1 to 4. PhysicalCostService compares it with the span of a shape, measured by FretboardGeometry.CalculatePhysicalSpan, which “Considers only fingered notes (fret > 0)” (FretboardGeometry.cs#L34-L57), from the lowest fret held to the highest. The program asks, from each starting fret, for the highest fret still within reach (Lesson17.cs#L214-L226):
== GA's comfortable reach, BiomechanicsConstants.ComfortableReachScaleUnits (GA.Domain.Core), against the 1 − 2^(−4/12) of its comment, and how far it reaches from each fret, measured with FretboardGeometry.CalculatePhysicalSpan as PhysicalCostService measures a shape (GA.Domain.Services, compiled) ComfortableReachScaleUnits = 0.21; 1 − 2^(−4/12) = 0.2063, the nut to fret 4; on 647.7 mm, 136.0 mm and 133.6 mmlowest fret highest within reach frets held mm, 647.71 5 5 126.12 6 5 119.03 7 5 112.45 10 6 121.77 13 7 126.69 16 8 128.112 21 10 131.315 24, the last fret 10 110.4 the first position, index finger on fret 1 and little finger on fret 4: CalculatePhysicalSpan 0.1502, within reach: True the default PlayerProfile: HandSize Medium, MaxComfortableStretchMm 129.0The constant is a little more than the distance from the nut to fret 4: 136.0 mm against 133.6 mm. But it measures four fret spaces, and the span between fretted notes counts one fewer: frets 1 to 4 measure 0.1502. So from fret 1 the reach covers frets 1 to 5, one fret more than the four fingers of the first position, and from fret 12 it covers ten frets, 12 to 21. From fret 15 it runs past the 24th fret, the last of the neck, where that row stops; elsewhere it measures between 112.4 and 131.3 mm. The default PlayerProfile carries a HandSize, Medium, and a MaxComfortableStretchMm of 129.0 mm, “approx 130mm” in its comment (PlayerProfile.cs#L14-L17); none of the measures below reads either.
The idea
Section titled “The idea”A barre chord is “a type of chord on a guitar or other stringed instrument played by using one finger to press down multiple strings across a single fret of the fingerboard”. “The CAGED system is an acronym for the chords C, A, G, E, and D.” “By replacing the nut with a full bar, a player can use the chord shapes for C, A, G, E, and D anywhere on the fret board to play any major chord in any key.” The shape must leave room for the barre: movable chords can be built “provided that the shape leaves the first finger free to create the barre, and that the chord does not require the fingers to extend beyond a four fret range”. And the order: “CAGED is also a mnemonic for the sequence that a chord appears in as it moves up the neck; for example, C Major can be played as an open C-shape chord at the nut, as an A-shape chord barred at the third fret, as a G-shape barred at the fifth fret, as an E-shape barred at the eighth fret, and as a D-shape barred at the 10th fret” (Bar chord).
The Streeling module GTR-002 · CAGED Geometry gives the five open shapes with the degree of each note (gtr-002-caged-geometry.md#L31-L59). The course checks them, then raises each shape until its root is C (Lesson17.cs#L230-L264):
== GTR-002's five open shapes in standard tuning: the notes from string 6 to string 1, and each one's degree above the rootshape frets notes course GTR-002 checkC x32010 C3 E3 G3 C4 E4 R 3 5 R 3 R 3 5 R 3 okA x02220 A2 E3 A3 C♯4 E4 R 5 R 3 5 R 5 R 3 5 okG 320003 G2 B2 D3 G3 B3 G4 R 3 5 R 3 R R 3 5 R 3 R okE 022100 E2 B2 E3 G♯3 B3 E4 R 5 R 3 5 R R 5 R 3 5 R okD xx0232 D3 A3 D4 F♯4 R 5 R 3 R 5 R 3 ok
== C major in the five shapes: each open shape raised by the semitones from its root up to C, a barre in place of the nutshape barre frets notes C E G only frets held strings playing CC 0 x32010 C3 E3 G3 C4 E4 yes 3 5 2A 3 x35553 C3 G3 C4 E4 G4 yes 3 5 3G 5 875558 C3 E3 G3 C4 E4 C5 yes 4 6 3 1E 8 8-10-10-9-8-8 C3 G3 C4 E4 G4 C5 yes 3 6 4 1D 10 x-x-10-12-13-12 C4 G4 C5 E5 yes 4 4 2barre frets Wikipedia course checkC 0 3 5 8 10 0 3 5 8 10 ok C on string 2: C shape, fret 1; D shape, fret 13; string 2 in the other shapes: A shape, E4; G shape, E4; E shape, G4GTR-002’s degrees are right for all five shapes. Raised to C, they sit at frets 0, 3, 5, 8 and 10, Wikipedia’s frets, each one playing only C, E and G within three or four frets. GTR-002’s third exercise reads: “On string 2 alone, play the note C in each of the five CAGED positions. Notice how each shape places C on a different fret of that string” (#L138-L139). Only two shapes have C on string 2: the C shape at fret 1 and the D shape at fret 13. The A and G shapes play E there, the E shape G.
In other keys the shapes keep their order and start from another letter (Lesson17.cs#L266-L280):
== The five shapes in order up the neck, in each major key: the barre fret of each shape, from the lowestC C A G E D at 0 3 5 8 10D♭ C A G E D at 1 4 6 9 11D D C A G E at 0 2 5 7 10E♭ D C A G E at 1 3 6 8 11E E D C A G at 0 2 4 7 9F E D C A G at 1 3 5 8 10F♯ E D C A G at 2 4 6 9 11G G E D C A at 0 3 5 7 10A♭ G E D C A at 1 4 6 8 11A A G E D C at 0 2 5 7 9B♭ A G E D C at 1 3 6 8 10B A G E D C at 2 4 7 9 11every order is C A G E D read round from one of its letters: Truekey Wikipedia course checkG G E D C A at 0 3 5 7 10 G E D C A at 0 3 5 7 10 okIn every key the order is C A G E D read round from one of its letters, and in G it is Wikipedia’s: “G Major can be played as an open G-shaped chord and the next shape … E-shape (barred at the third fret), followed by the D-shape (barred at the 5th fret); … C-shape barred at the 7th fret, an A-shape at the 10th fret”. GTR-002 draws the sequence “for key of E major” (#L94-L98):
Fret: 0 3 5 7 8 10 12 |--E--|--D--|--C--|--A--|--G--|--E--| (shapes shown for key of E major)The letters are in the program’s order, but in E the program puts the shapes at frets 0, 2, 4, 7 and 9, and 2, 4 and 9 are not on the figure’s scale.
In GA: one shape out of five, read backwards
Section titled “In GA: one shape out of five, read backwards”VoicingPhysicalAnalyzer.CalculatePlayability fills a CagedShape (VoicingPhysicalAnalyzer.cs#L114-L115) from DetectCagedShape. Its comments read the first position as string 6: “For E-shape, base is the fret on string 6 (Index 0).” (#L263). ExtractPhysicalLayout numbers it string 1 (#L27), the order of GA’s voicings, whose generator starts from string 1 (VoicingGenerator.cs#L167). And if (baseFret < 0) return null; // Root must be on string 6 (#L264-L265) returns before the A-shape and C-shape tests, which both need that first position muted (#L297, #L323). The program asks in both orders (Lesson17.cs#L282-L302):
== VoicingPhysicalAnalyzer.CalculatePlayability (GA.Domain.Services, compiled): the CagedShape of each shape, with its positions in GA's string order (string 1 first, as ExtractPhysicalLayout numbers them) and reversed (string 6 first, as the comments of DetectCagedShape read them)frets course GA's order reversedx32010 C shape, C (none) (none)x02220 A shape, A (none) (none)320003 G shape, G (none) (none)022100 E shape, E (none) E-Shapexx0232 D shape, D (none) (none)x35553 A shape, C (none) (none)875558 G shape, C (none) (none)8-10-10-9-8-8 E shape, C (none) E-Shapex-x-10-12-13-12 D shape, C (none) (none)133211 E shape, F (none) E-Shapex13331 A shape, B♭ (none) (none)001220 (none) E-Shape (none) the C shape barred at frets 0 to 12: "E-Shape" 0 times in GA's order, 0 reversed; any other answer: 0 the A shape barred at frets 0 to 12: "E-Shape" 0 times in GA's order, 0 reversed; any other answer: 0 the G shape barred at frets 0 to 12: "E-Shape" 0 times in GA's order, 0 reversed; any other answer: 0 the E shape barred at frets 0 to 12: "E-Shape" 0 times in GA's order, 13 reversed; any other answer: 0 the D shape barred at frets 0 to 12: "E-Shape" 0 times in GA's order, 0 reversed; any other answer: 0 001220, string 6 to string 1: E2 A2 D♯3 A3 C♯4 E4 the tag GeneratePhysicalTags writes for the reversed E shape: e-shape; with "CAGED-E" or "E shape" in it, the test of VoicingFilterEngine for CagedShape "E": FalseIn GA’s order, no shape of the course is recognized. The one pattern that is, 001220 written from string 6, is the E shape backwards: E2 A2 D♯3 A3 C♯4 E4. Reversed, the E shape is recognized at every fret from 0 to 12, and nothing else ever is: “A-Shape” and “C-Shape” cannot be returned. The tag GeneratePhysicalTags writes from it, e-shape (#L203), would not pass the test VoicingFilterEngine applies for a CagedShape filter, which looks for “CAGED-E” or “E shape” (VoicingFilterEngine.cs#L61-L66). Read, not run: MusicalEmbeddingGenerator appends “-shape” to the lower-cased CagedShape (MusicalEmbeddingGenerator.cs#L110-L113), which makes e-shape-shape.
The effort of a shape
Section titled “The effort of a shape”The idea
Section titled “The idea”What makes a shape hard to play? The course measures what a ruler can check: the frets held, from the lowest to the highest; their span in millimetres on 647.7 mm; and the number of fretted notes. A shape with more than four fretted notes needs a barre, since the hand has four fingers for them. The “four fret range” of the bar chord article is the other limit.
In GA: a cost and two analyzers
Section titled “In GA: a cost and two analyzers”PhysicalCostService.CalculateStaticCost “Calculates the “effort” required to play a specific static shape”, and the class is “Used to rank multiple ways of playing the same notes” (PhysicalCostService.cs#L6-L17). It adds five terms: a stretch beyond the reach above (#L27-L48); “fat fingers” above fret 17 (#L53-L59); a register term, which subtracts 0.5 for each open string and, with the default profile, adds a penalty when the average fret is below 3 or above 9 (#L62-L99); skipped strings (#L102-L119); and a tension of about 0.1 per fretted string, more on the thick strings (#L122-L131). The sum is divided by the square root of the number of strings played (#L136-L138). The program runs it on six open chords, F, the four raised shapes of C and the E shape at frets 5 and 12 (Lesson17.cs#L306-L322):
== The course's measures of each shape, and PhysicalCostService.CalculateStaticCost with the default PlayerProfile (GA.Domain.Services, compiled): its total and the terms that are not zerofrets chord frets held span, mm fretted barre total termsx32010 C 3 66.7 3 no -0.23 Register -0.82 Tension 0.30x02210 Am 2 34.3 3 no -0.23 Register -0.80 Tension 0.29022000 Em 1 0.0 2 no -0.63 Register -1.77 Tension 0.22022100 E 2 34.3 3 no -0.40 Register -1.28 Tension 0.32320003 G 2 32.4 3 no -0.42 Register -1.33 Tension 0.32xx0232 D 2 32.4 3 no -0.06 Register -0.38 Tension 0.26133211 F 3 66.7 6 yes 0.29 Register 0.12 Tension 0.60x35553 C 3 59.4 5 yes 0.21 Tension 0.48875558 C 4 77.2 6 yes 0.24 Tension 0.608-10-10-9-8-8 C 3 44.5 6 yes 0.24 Tension 0.60x-x-10-12-13-12 C 4 57.8 4 no 0.59 Register 0.83 Tension 0.36577655 A 3 52.9 6 yes 0.24 Tension 0.6012-14-14-13-12-12 E 3 35.3 6 yes 0.66 Register 1.01 Tension 0.60Open chords cost less than nothing, because each open string subtracts 0.5: the cheapest is Em, with four. F, six fretted notes under a barre, costs 0.29, about what the A, G and E shapes of C cost, 0.21, 0.24 and 0.24. No term counts a barre, and no shape here is wide enough for the stretch term. The two highest costs, the D shape of C, 0.59, and the E shape at fret 12, 0.66, come from the register term, which grows above fret 9.
GA has two other measures. VoicingPhysicalAnalyzer.CalculatePlayability divides the span of the fretted notes, in millimetres on 648 mm, by 80 (VoicingPhysicalAnalyzer.cs#L88-L93); “Beginner” needs at most 0.8, no barre and an open string (#L105-L112), and its barre is the same fret on three adjacent strings (#L219-L233). BiomechanicalAnalyzer.AnalyzeChordPlayability averages five scores (BiomechanicalAnalyzer.cs#L17-L77); it measures the span from the lowest played fret, open strings included (#L94-L128), and finds a barre wherever three notes share a fret (#L153). The program runs both (Lesson17.cs#L324-L337):
== The same shapes through VoicingPhysicalAnalyzer.CalculatePlayability (Difficulty, DifficultyScore, BarreRequired) and BiomechanicalAnalyzer.AnalyzeChordPlayability (OverallScore, Difficulty, HasBarreChord) (GA.Domain.Services, compiled)frets chord Difficulty Score Barre Overall Difficulty Barrex32010 C Intermediate 3.50 no 0.82 Easy nox02210 Am Beginner 2.29 no 0.89 Easy no022000 Em Beginner 1.00 no 0.92 Very Easy yes022100 E Beginner 2.29 no 0.92 Very Easy yes320003 G Beginner 2.22 no 0.85 Easy yesxx0232 D Beginner 2.22 no 0.78 Easy no133211 F Intermediate 4.50 no 0.92 Very Easy yesx35553 C Intermediate 6.23 yes 0.89 Easy yes875558 C Intermediate 6.90 yes 0.83 Easy yes8-10-10-9-8-8 C Intermediate 3.67 no 0.90 Very Easy yesx-x-10-12-13-12 C Intermediate 4.17 no 0.72 Easy no577655 A Intermediate 3.99 no 0.90 Very Easy yes12-14-14-13-12-12 E Intermediate 3.33 no 0.77 Easy yesBiomechanicalAnalyzer gives the same analysis to every shape for each HandSize (Small, Medium, Large, ExtraLarge): TruePhysicalCostService gives the same total to every shape with a PlayerProfile of each HandSize and a MaxComfortableStretchMm of 80: TrueVoicingPhysicalAnalyzer calls open C “Intermediate”: frets 1 to 3 span 66.7 mm, more than 0.8 × 80 = 64 mm. It finds a barre in x35553 and 875558, which hold fret 5 on three adjacent strings, and not in F or the E shapes: in 133211, fret 1 is on strings 6, 2 and 1, never three neighbours. The Guitar Alchemist Lab’s P7: Playability model found both at GA’s commit 66bdd04. BiomechanicalAnalyzer finds one in Em, E and G, on their open strings, and rates F 0.92, “Very Easy”, above open C, 0.82: open C spans frets 0 to 3 once its open strings count, F only frets 1 to 3, and F’s six notes get the full score for stability (#L279-L284). The analyzer takes a HandSize and keeps it in a field nothing reads (#L10-L12); PhysicalCostService reads neither the HandSize nor the MaxComfortableStretchMm of its profile. Read, not run: GA’s tests that compare hand sizes call a BiomechanicalAnalyzer.CreateForHandSize that the class does not have (BiomechanicalAnalyzerTests.cs#L224-L244), and the test project removes the file from compilation (GA.Business.Core.Tests.csproj#L49).
What a profile does change is the cost. PlayerProfile.Beginner() doubles the stretch weight, doubles the skip weight and prefers frets up to 5; Jazz() prefers frets 5 to 12 and skips strings cheaply (PlayerProfile.cs#L20-L52). On the five shapes of C (Lesson17.cs#L339-L347):
== PhysicalCostService.CalculateStaticCost under GA's three PlayerProfiles (GA.Business.Core, compiled), on the five shapes of Cfrets shape Default Beginner Jazzx32010 C -0.23 -0.23 -0.14x35553 A 0.21 0.21 0.25875558 G 0.24 0.51 0.248-10-10-9-8-8 E 0.24 0.66 0.24x-x-10-12-13-12 D 0.59 1.04 0.18The beginner profile makes the G, E and D shapes dearer, through the register term; the jazz profile makes open C dearer and the D shape at fret 10, 0.18, cheaper than the A, G and E shapes.
Open tunings
Section titled “Open tunings”The idea
Section titled “The idea”“An open tuning allows the guitarist to play a chord by strumming the open strings (no strings fretted).” Wikipedia’s table gives open C as “C–G–C–G–C–E”, open D as “D–A–D–F♯–A–D”, open E as “E–B–E–G♯–B–E” and open G as “D–G–D–G–B-D”. The same article explains why standard tuning needs several shapes for one chord: “The irregular major third breaks the fingering patterns of scales and chords, so that guitarists have to memorize multiple chord shapes for each chord.” It also says which way to retune: “tuning down the open string from E to D or C reduces the risk of breaking strings, which is associated with tuning strings up to a higher pitch” (Guitar tunings). GTR-002 adds: “CAGED is specific to standard tuning. Change the tuning, and the shapes change” (#L120). MUS-009 found two octave errors in GA’s Instruments.yaml: string 2 of open C and open A an octave too low (mus-009-tuning-fretboard-geometry.md#L111-L114).
In GA: Tunings.toml, which nothing reads
Section titled “In GA: Tunings.toml, which nothing reads”The course’s outline named Tunings.toml for this lesson. GA.Business.Config copies it next to every program that references it (GA.Business.Config.fsproj#L63-L65), and no C# or F# code of GA reads it. The only mention in code is a comment of the React component HarmonicNavigator3D, Optional: <HarmonicNavigator3D dataUrls={{ modes: "/Modes.yaml", tunings: "/Tunings.toml" }} /> (HarmonicNavigator3D.tsx#L17), and the component renames both properties to names it never uses, tunings: _tunings and dataUrls: _dataUrls (#L128-L131). The program reads the file as text (Lesson17.cs#L351-L372):
== The guitar entries of Tunings.toml, read as text (GA.Business.Config copies it next to the program), against Instruments.yaml, read with the course's parser (GA's loader looks for an Instruments: key the file does not have); each six-string tuning as a change from standard, in semitones, and the notes of its open stringsentry Tuning Instruments.yaml string 6 to 1 largest open stringsStandard E2 A2 D3 G3 B3 E4 the same 0 0 0 0 0 0 0 D E G A BDADGAD D2 A2 D3 G3 A3 D4 the same -2 0 0 0 -2 -2 2 D G ADouble Drop D D2 A2 D3 G3 B3 D4 the same -2 0 0 0 0 -2 2 D G A BDropD D2 A2 D3 G3 B3 E4 the same -2 0 0 0 0 0 2 D E G A BOpenCMajor C2 G2 C3 G3 C3 E4 the same -4 -2 -2 0 -11 0 11 C majorOpenDMajor D2 A2 D3 F#3 A3 D4 the same -2 0 0 -1 -2 -2 2 D majorOpenEMajorV1 E2 B2 E3 G#3 B3 E4 the same 0 2 2 1 0 0 2 E majorOpenEMajorV2 E2 B2 E3 G3 B3 E4 the same 0 2 2 0 0 0 2 E minorOpenGMajorV1 D2 G2 D3 G3 B3 D4 the same -2 -2 0 0 0 -2 2 G majorOpenGMinorV2 D2 G2 D3 G3 Bb3 D4 the same -2 -2 0 0 -1 -2 2 G minorOpenAMajor E2 A2 E3 A3 C#3 E4 the same 0 0 2 2 -10 0 10 A majorRenaissance G3 G4 C4 C4 E4 E4 A4 the sameBaroque1 A3 A3 D4 D4 G3 G3 B3 B3 E4 E4 the sameBaroque2 A3 A3 D4 D3 G3 G3 B3 B3 E4 E4 the sameTwelveStrings E2 E3 A2 A3 D3 D4 G3 G4 B3 B3 E4 E4 the sameentry Wikipedia Tunings.toml checkOpenCMajor C G C G C E C G C G C E okOpenDMajor D A D F♯ A D D A D F♯ A D okOpenEMajorV1 E B E G♯ B E E B E G♯ B E okOpenGMajorV1 D G D G B D D G D G B D okThe 15 guitar entries are those of Instruments.yaml, octave errors included: OpenCMajor’s C3 lowers string 2 by 11 semitones and OpenAMajor’s C#3 by 10 (Tunings.toml#L364-L366, #L388-L390), while the nine other six-string tunings move no string by more than 2. Each open tuning sounds the chord its full name gives: OpenEMajorV2, despite its entry name, is E minor, as its full name, “Open E - 2 Minor”, says (#L376-L378). Wikipedia’s four string orders match, because they compare letters: the octave error does not show in note names.
What ga_easier_voicings offers
Section titled “What ga_easier_voicings offers”GA’s MCP server has a tool for guitarists who struggle with barre chords: “Find easier, beginner-friendly alternative voicings for a chord — ideal when barre chords are painful or difficult. … Example: F with no-barre → Fmaj7 (103210), Fsus2 (133011), or C/F alternatives at a simpler fret span.” (GuitaristProblemTools.cs#L574-L577). It answers from a table of 41 voicings, “frets per string E-A-D-G-B-e” (#L503-L562). The program reads the table as text and plays each shape in standard tuning (Lesson17.cs#L376-L393):
== The 41 voicings of ga_easier_voicings (GaMcpServer/Tools/GuitaristProblemTools.cs, read as text): each shape read in standard tuning, against its Notes; HasBarre and Difficulty as writtensymbol frets notes, string 6 to 1 Notes not in Notes not played fretted HasBarre DifficultyC x32010 C E G C E C, E, G - - 3 False 1D xx0232 D A D F♯ D, F♯, A - - 3 False 1E 022100 E B E G♯ B E E, G♯, B - - 3 False 1G 320003 G B D G B G G, B, D - - 3 False 1A x02220 A E A C♯ E A, C♯, E - - 3 False 1F 133211 F C F A C F F, A, C - - 6 True 3Bb x13331 B♭ F B♭ D F B♭, D, F - - 5 True 3B x24442 B F♯ B D♯ F♯ B, D♯, F♯ - - 5 True 3Am x02210 A E A C E A, C, E - - 3 False 1Em 022000 E B E G B E E, G, B - - 2 False 1Dm xx0231 D A D F D, F, A - - 3 False 1Bm x24432 B F♯ B D F♯ B, D, F♯ - - 5 True 3E7 020100 E B D G♯ B E E, G♯, B, D - - 2 False 1A7 x02020 A E G C♯ E A, C♯, E, G - - 2 False 1D7 xx0212 D A C F♯ D, F♯, A, C - - 3 False 1G7 320001 G B D G B F G, B, D, F - - 3 False 2C7 x32310 C E B♭ C E C, E, G, B♭ - G 4 False 2B7 x21202 B D♯ A B F♯ B, D♯, F♯, A - - 4 False 2Cmaj7 x32000 C E G B E C, E, G, B - - 2 False 1Gmaj7 320002 G B D G B F♯ G, B, D, F♯ - - 3 False 1Amaj7 x02120 A E G♯ C♯ E A, C♯, E, G♯ - - 3 False 1Dmaj7 xx0222 D A C♯ F♯ D, F♯, A, C♯ - - 3 False 1Emaj7 021100 E B D♯ G♯ B E E, G♯, B, D♯ - - 3 False 2Fmaj7 103210 F A F A C E F, A, C, E - - 4 False 2Am7 x02010 A E G C E A, C, E, G - - 2 False 1Em7 020000 E B D G B E E, G, B, D - - 1 False 1Dm7 xx0211 D A C F D, F, A, C - - 3 False 1Dsus2 xx0230 D A D E D, E, A - - 2 False 1Asus2 x02200 A E A B E A, B, E - - 2 False 1Esus2 024400 E B F♯ B B E E, F♯, B - - 3 False 2Dsus4 xx0233 D A D G D, G, A - - 3 False 1Asus4 x02230 A E A D E A, D, E - - 3 False 1Esus4 022200 E B E A B E E, A, B - - 3 False 1Gsus4 310013 G B♭ D G C G G, C, D B♭ - 4 False 2C5 x3500x C G G B C, G B - 2 False 1D5 xx023x D A D D, A - - 2 False 1E5 022xxx E B E E, B - - 2 False 1G5 3500xx G D D G G, D - - 2 False 1A5 x022xx A E A A, E - - 2 False 1B5 x244xx B F♯ B B, F♯ - - 3 False 2F5 133xxx F C F F, C - - 3 True 2Notes are the notes of the symbol: 41 of 41; a note outside the Notes: Gsus4, C5; a note of the Notes not played: C7HasBarre: F, Bb, B, Bm, F5; more than four fretted notes: F, Bb, B, BmEvery Notes field lists the notes of its symbol, but two shapes play a note outside it. Gsus4, 310013, plays B♭ at the first fret of string 5 (#L552); C5, x3500x, plays the open B string (#L555). C7, x32310, leaves out its fifth, as that grip usually does (#L529). Five voicings are marked HasBarre; four of them have more than four fretted notes, and F5, 133xxx, has three.
Under its default constraint, “no-barre”, the tool keeps the voicings of the table on the same root, minus the chord asked for and those marked HasBarre (#L611-L646), and sorts them, easiest first (#L649-L652); the substitutions it asks GA for go into the answer only as text (#L670-L678). The program applies that filter to each voicing marked HasBarre (Lesson17.cs#L395-L406):
== What ga_easier_voicings offers for each voicing marked HasBarre, under its default constraint "no-barre": the table's other voicings on the same root without HasBarre, easiest first (the course's reading of lines 611 to 652) F [133211]: Fmaj7 [103210], all of F's notes Bb [x13331]: nothing B [x24442]: B7 [x21202], all of B's notes; B5 [x244xx], not all of B's notes Bm [x24432]: B7 [x21202], not all of Bm's notes; B5 [x244xx], not all of Bm's notes F5 [133xxx]: Fmaj7 [103210], all of F5's notes the description's example, "F with no-barre → Fmaj7 (103210), Fsus2 (133011), or C/F": Fsus2 in the table False, C/F False; 133011 plays F2 C3 F3 G3 C4 F4, 5 fretted notesFor F the tool offers Fmaj7, which holds all of F’s notes and an E. For Bm it offers B7, a dominant seventh whose third is D♯, and B5, which has no third: neither plays the D of B minor. For B♭ it offers nothing, since the table has no other voicing on B♭, nor on A♯. The description’s Fsus2 and C/F are not in the table, and 133011 has five fretted notes.
Exercises
Section titled “Exercises”- GA’s reach constant admits frets 1 to 5 from fret 1. How many frets does it admit from fret 12, and why more?
- In C major, which note does the A shape, x35553, play on string 2, and on which strings does it play C?
- Why can
DetectCagedShapenever answer “A-Shape” or “C-Shape”? - Why does
BiomechanicalAnalyzerrate F, 133211, easier than open C, x32010? - What does
ga_easier_voicingsoffer for Bm under “no-barre”, and why does neither voicing play B minor?
Solutions
- Ten, frets 12 to 21. The constant is a fraction of the whole string, and above fret 12 the frets are half as far apart as the frets at the nut.
- E, at the fifth fret of string 2. It plays C on strings 5 and 3.
- Line 265 returns null when the first position is muted, and both tests need it muted (lines 297 and 323). Only the E-shape test, which needs that position played, can succeed.
- It measures the span from the lowest played fret, open strings included: open C spans frets 0 to 3, F frets 1 to 3. F’s six notes also get a full stability score. The result: 0.92 for F, 0.82 for C.
- B7, x21202, which plays B D♯ A B F♯, a dominant seventh whose third is D♯; and B5, x244xx, B F♯ B, with no third. B minor needs D.
Key takeaways
Section titled “Key takeaways”- Fret n lies at L(1 − 2^(−n/12)) from the nut. GA’s two calculators agree with the formula at every fret, on 647.7 and 648 mm; the document next to them quotes 5-fret spans that neither gives. Five frets from fret 12 measure exactly half of five frets from the nut.
- GA’s comfortable reach is the distance from the nut to fret 4, but it is compared with the span between fretted notes, so it admits five frets from fret 1 and ten from fret 12. No measure reads the player’s hand size.
- The five CAGED shapes of C sit at frets 0, 3, 5, 8 and 10, and in every key their order is C A G E D read from one of its letters. GA’s shape detector can only answer “E-Shape”, and it recognizes the E shape only when the shape is written from string 6, the reverse of GA’s own order; in GA’s order it names 001220 instead.
- Of GA’s three playability measures, the cost has no barre term, one analyzer calls open C “Intermediate”, and the other rates F “Very Easy”.
Tunings.tomlrepeatsInstruments.yaml, octave errors included, and nothing reads it.ga_easier_voicingsanswers from a table of 41 shapes, two of which play a note outside their chord, and offers B7 or B5 for Bm.
Sources
Section titled “Sources”- Wikipedia: Fret (the twelfth root of two, the twelfth fret), Bar chord (barre chords, the CAGED system and its order), Guitar tunings (the first position, open tunings, the irregular major third).
- Streeling: GTR-002 · CAGED Geometry, MUS-009 · Tuning and Fretboard Geometry, and for the physics of the string, PHY-001 · The Science of Guitar Sound.
- GuitarAlchemist/ga at
a826864:Common/GA.Domain.Services/Fretboard/Analysis/FretboardGeometry.cs,PhysicalFretboardCalculator.cs,PhysicalCostService.cs,PHYSICAL_PLAYABILITY_IMPROVEMENTS.md,Fretboard/Voicings/Analysis/VoicingPhysicalAnalyzer.cs,Fretboard/Voicings/Generation/VoicingGenerator.cs,Fretboard/Biomechanics/BiomechanicalAnalyzer.cs,Common/GA.Domain.Core/Instruments/Biomechanics/BiomechanicsConstants.cs,Common/GA.Business.Core/Context/PlayerProfile.cs,Common/GA.Business.ML/Search/VoicingFilterEngine.cs,Embeddings/MusicalEmbeddingGenerator.cs,Common/GA.Business.Config/Tunings.toml,GA.Business.Config.fsproj,ReactComponents/ga-react-components/src/components/BSP/HarmonicNavigator3D.tsx,GaMcpServer/Tools/GuitaristProblemTools.cs,Tests/Common/GA.Business.Core.Tests/GA.Business.Core.Tests.csproj,Fretboard/PhysicalFretboardCalculatorTests.cs,Fretboard/Biomechanics/BiomechanicalAnalyzerTests.cs.