This tool finds the optimal fingering route for any tune on a 30-button Anglo concertina in C/G. You paste in a tune in ABC notation, and the tool tells you which button to press for each note — and whether to push or pull the bellows.
Because many notes can be played on more than one button, there are often hundreds or thousands of possible combinations for a whole tune. This tool searches through all of them and picks the route that is easiest to play — minimising awkward jumps, finger hops, and unnecessary bellows reversals.
An Anglo concertina is a bisonoric instrument: each button produces a different note depending on whether you push or pull the bellows. A standard 30-button C/G Anglo has two sides (left hand and right hand), each with three rows of five buttons.
Rows are named t, c, and g (the main push notes of each row on the left side). Buttons are numbered 1–5, with 1 closest to the player. This tool covers all 60 button positions (30 push + 30 pull).
The note layout below matches exactly what is stored in KEYS_DATA.
If your concertina differs, the source code can be adapted.
Blue = push Red = pull.
| ← Left hand (outer to inner) | Right hand (inner to outer) → | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Row | btn 5 | btn 4 | btn 3 | btn 2 | btn 1 | btn 1 | btn 2 | btn 3 | btn 4 | btn 5 | Row | |
| t | E1F1 | A1B♭1 | C#2D#2 | A2G2 | G#2B♭2 | C#3C#3 | C#3D#3 | G#3G3 | C#4B♭3 | A4D4 | t | |
| c | C1G1 | G1B1 | C2D2 | E2F2 | G2A2 | C3B2 | E3D3 | G3F3 | C4A3 | E4B3 | c | |
| g | B1A1 | D2F#2 | G2A2 | B2C3 | D3E3 | G3F#3 | B3A3 | D4C4 | G4E4 | D#4F#4 | g | |
Copy a tune in ABC format and paste it into the text area on the left. You can find thousands of tunes in ABC format at sites like thesession.org or abcnotation.com.
A minimal example:
X:1 T:The Kesh Jig R:jig M:6/8 L:1/8 K:Gmaj |:GAG GAB|ABA ABd|egd edB|dBA ABd:|
The tool parses the tune, reads the key signature, and runs the search. For most tunes this takes well under a second. The Tune Info panel on the right shows the metadata extracted from the ABC headers.
Two panels appear:
Each small diagram represents one note in the tune, labelled by position and note name (e.g. 3. G3). Inside each diagram, all 60 buttons are shown as dots:
Example — three consecutive notes from a jig in G (G3, A3, B3):
Left-hand buttons appear on the left side of each diagram, right-hand buttons on the right. Within each side, button 1 is closest to the centre and button 5 is outermost. The three rows (t, c, g) run top to bottom.
ABC is a text-based music notation format. Here are the header fields this tool uses:
| Field | Meaning | Example |
|---|---|---|
X: | Tune index number | X:1 |
T: | Title | T:The Kesh Jig |
R: | Rhythm / tune type | R:jig |
M: | Time signature | M:6/8 |
L: | Default note length | L:1/8 |
K: | Key signature | K:Gmaj |
| ABC | Note | Octave |
|---|---|---|
C, D, E, … | C, D, E … | Octave 1 (very low) |
C D E … | C, D, E … | Octave 2 |
c d e … | C, D, E … | Octave 3 (middle) |
c' d' e' … | C, D, E … | Octave 4 (high) |
Sharps in the key signature are applied automatically from the K: field.
Explicit accidentals (^ sharp, _ flat) in the note line
are not yet supported — these are stripped during parsing.
The tool automatically applies the correct sharps for the following keys:
| Note sharpened | Keys where it applies |
|---|---|
| F → F# | G, D, A, Em, Bm, Cm, Edor, Ador |
| C → C# | D, A, E, Bm, Edor |
| G → G# | E, A |
Keys not in this list are treated as having no sharps (e.g. C major, A minor, D Dorian).
The search is a beam search. For each note in the tune, all possible buttons that produce that note are looked up. The algorithm then builds all combinations, step by step, keeping only the most promising routes at each step.
Each transition between two buttons gets a score based on:
When the number of routes exceeds 4,096, the worst-scoring routes are pruned. The route with the lowest total score is returned as the best fingering.
^c, _B) in the note line are not yet parsed.K:
key field is present and correctly spelled in your ABC. The key signature has a big
effect on which notes get sharpened.
This tool was originally written in Ruby in 2015–2018 under the name MUPHIN. The JavaScript port and web interface were created in 2024. The source code is available publicly — feel free to study, adapt, or improve it.
If this tool has been useful to you, consider buying the author a coffee: paypal.me/muphin