TLDR: Researchers Matthew Keating and Michael Casey have developed a graph-based engine to assist guitar students in learning jazz chord-tone soloing. The system constructs a weighted graph where nodes represent chord-tone arpeggios and edges represent transitions between chords. By calculating edge weights based on optimal musical transitions and using Dijkstra’s algorithm to find the shortest path, the engine generates personalized, playable chord-tone lines displayed as guitar tablature. This tool aims to provide dynamic and accessible practice material for jazz guitar improvisation, addressing limitations of static educational resources.
Learning to improvise on the guitar, especially in jazz, can be a daunting task. A fundamental technique for jazz guitarists is chord-tone soloing, where a player uses only the notes within the current chord as they navigate a chord progression. This practice is crucial for advanced jazz theory but presents significant challenges due to the guitar’s unique layout and the need to quickly transition between many possible note positions across the fretboard.
Traditional learning resources, such as textbooks and instructional videos, often come with paywalls and offer static content that doesn’t adapt to every chord progression a student might encounter. Recognizing this gap, Matthew Keating and Michael Casey from Dartmouth College have developed a novel solution: a graph-based engine designed to generate personalized chord-tone soloing suggestions for guitar students. Their work, detailed in the paper A Graph Engine for Guitar Chord-Tone Soloing Education, aims to make this complex skill more accessible.
How the Engine Works
The core of this innovative system is a weighted graph. Imagine a map where each point (node) represents a set of chord tones for a specific chord in a progression. The lines connecting these points (edges) describe the movement between consecutive chords. The engine constructs this graph by first generating all possible chord-tone patterns of a desired length for each chord in a given progression. These patterns can be derived from hard-coded arpeggios or generated using a rules-based algorithm that considers factors like finger stretch.
The crucial element is the ‘weight’ assigned to each edge. This weight quantifies the musical quality of the transition between two chord-tone sets. In jazz guitar, the best transitions typically involve minimal distance traveled between notes, often a semitone or full tone apart. The engine calculates this weight by finding the minimum fret-wise distance between notes in consecutive chord-tone sets. It can even incorporate penalties for switching strings, reflecting a guitarist’s natural tendencies. More complex weighting functions can also be introduced, factoring in hand movement efficiency or user preferences, allowing for a highly customizable experience.
Once the graph is built, the engine queries it using Dijkstra’s algorithm, a well-known method for finding the shortest path in a weighted graph. This shortest path represents the most musically optimal sequence of chord-tone arpeggios. The system then reconstructs this path into an ordered list of notes, which is then presented as guitar tablature.
Also Read:
- MuseTok: A New Approach to Understanding and Generating Symbolic Music with AI
- Assessing Creativity: A Look at AI vs. Human Grading in Design Thinking Education
Enhancing the Learning Experience
To prevent deterministic outputs and encourage students to explore various neck positions, the engine can introduce a slight element of randomness. By starting the shortest path search from a random fretboard position, the system can nudge the generated soloing line towards different areas of the guitar neck while still adhering to the musical constraints.
The ultimate vision for this engine is a user-friendly educational tool. It would accept chord progressions as input, either typed in by the user, recognized automatically from audio (ACR), or even scanned from physical chord charts using optical music recognition (OMR). The output is always in tablature notation, which is ideal for guitarists as it precisely indicates which string and fret to play each note, eliminating ambiguity common with standard staff notation.
This system promises to lower the barrier to entry for jazz guitar improvisation, offering dynamic and personalized practice materials for any chord progression. Future developments could involve using machine learning to refine the edge weights based on the playing styles of professional jazz guitarists, further enhancing the realism and musicality of the generated solos.


