Inversion
Chord fingering search for string instruments.
Install / Use
/learn @blacktaxi/InversionREADME
Inversion 
inversion is a chord search assistant for stringed instruments with
frets. It is a command line tool that takes an instrument configuration and chord
specification and outputs all possible chords in a rank-based order.
Command line argument syntax and most of the functionality is not stable yet, stay tuned for updates.
Currently it can generate chords for an E-standard tuned guitar and for ukulele in standard tuning. There's also a separate tool that can play the chords using a MIDI output device.
Generate and pretty-print top 5 Cmaj7add9 chords on a ukulele:
$ inversion.bat -c=C(maj7)add9
1-A |---|-O-|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2-E O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3-C O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4-g O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1-A |---|---|---|---|---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|
2-E O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3-C O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4-g O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1-A |---|---|---|---|---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|
2-E O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3-C O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4-g |---|---|---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1-A |---|---|---|---|---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|
2-E |---|---|---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|
3-C |---|---|---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|
4-g O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1-A |---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|
2-E |---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|
3-C |---|---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|
4-g O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Generate and pretty-print top 5 chords:
- with a G root at any octave
- with mandatory 0 and 4th semitone intervals
- optional 7th, 12th, 11th and 16th
- on a ukulele
$ inversion.bat -c=G{=0,4,7?,12?,11?,16?}
1-A |---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|
2-E |---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|
3-C |---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|
4-g O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1-A |---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|
2-E |---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|
3-C |---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|
4-g |---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1-A |---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|---|---|
2-E |---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|
3-C |---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|
4-g O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1-A |---|-O-|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2-E |---|---|-O-|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3-C |---|-O-|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4-g O---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1-A |---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|
2-E |---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|---|
3-C |---|---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|
4-g |---|---|---|---|---|---|---|---|---|---|-O-|---|---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Similarly, for guitar, but output results in JSON:
$ inversion.bat -i=guitar -c=A{=0,4,7?,12?,11?,14?} -o=Json
{"instrument":{"frets":21,"strings":{"1-e":["E",5],"2-B":["B",4],"3-G":["G",4],"4-D":["D",4],"5-A":["A",3],"6-E":["E",3]}},"chords":[{"6-E":5,"5-A":4,"1-e":0,"3-G":2,"4-D":6,"2-B":0},{"5-A":0,"3-G":6,"1-e":0,"4-D":6,"2-B":0},{"5-A":0,"3-G":6,"6-E":0,"4-D":6,"2-B":0},{"5-A":0,"3-G":6,"1-e":0,"4-D":7,"2-B":0},{"5-A":0,"3-G":6,"6-E":0,"4-D":7,"2-B":0}]}
Generate chords with any root, but with specified intervals. Output results as lists of MIDI notes and pipe that to the script that plays chords:
$ inversion.bat -c=*{0,3,7,9} -o=Midi | playchords.bat
[67, 60, 75, 69]
[78, 60, 64, 69]
[67, 60, 69, 75]
[67, 60, 75, 81]
[79, 60, 75, 69]
See more options with inversion.bat -?.
Related Skills
node-connect
337.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.3kCommit, push, and open a PR
