Jump to content

New concertina fingering command-line tool


Recommended Posts

I've just released a command-line tool to help find good fingerings for tunes provided in ABC notation:

https://github.com/mccalluc/concertina-helper

 

There are several other packages out there, but I think this offers something new by making it possible to choose different weights for different strategies (ie, avoiding change in bellows direction vs. avoiding finger moves between rows), and there is also a documented API which should make it possible for this to be used as a dependency in other projects. Hope it can be useful.

  • Like 1
Link to comment
Share on other sites

Oh, I like this. I've been wanting for a while to make a flashcard app that asks things like "how do you play B-C-D-E without changing bellows," and I think this with the bellows-change constraint cranked way up would take care of the hard part of that job.

Link to comment
Share on other sites

5 hours ago, eskin said:

Very cool! Also enjoying the other page you cite:

https://jvandonsel.github.io/fingering/fingering.html

That was one of the two programs which inspired me to develop my own fingering generator(s) starting ~5 years ago. Currently I can add basic fingering tabs (melody only), and ABC note-names to large ABC files. I use hard-wired 'along-the-row' or 'cross-row' mapping of notes to buttons. The program(s) generate tabs for G/D, Bb/F and C/G concertinas and D/G Hohner Pokerwork melodeon. The next step is to optimise the mappings so that the note-button choices are a little more 'player-friendly'.

 

It's very un-cool and old-fashioned because it runs locally rather than remotely, and runs in a simple command-window without an ASAD window-based user-interface, but that's the way I prefer to work.

Edited by lachenal74693
Link to comment
Share on other sites

On 5/15/2023 at 6:37 PM, Chuck McCallum said:

I've just released a command-line tool to help find good fingerings for tunes provided in ABC notation etc...

Any chance of seeing a sample input file and the output it generates? There may be one in the github repository, but I'm afraid I missed it. Thanks.

Edited by lachenal74693
Link to comment
Share on other sites

Quote

Any chance of seeing a sample input file and the output it generates?



Sure. So it takes ABC files as input:
 

$ cat tests/g-major.abc
X: 1
T: G major scale
M: 4/4
L: 1/4
K: Gmaj
GABc|defg||


Its default output looks like:
 

$ concertina-helper tests/g-major.abc --layout_name 30_wheatstone_cg | head
Measure 1 - G4
PUSH:
--- --- --- --- ---    --- --- --- --- ---
--- --- --- --- ---    --- --- --- --- ---
--- --- G4  --- ---    --- --- --- --- ---
Measure 1 - A4
PUSH:
--- --- --- A4  ---    --- --- --- --- ---
--- --- --- --- ---    --- --- --- --- ---
--- --- --- --- ---    --- --- --- --- ---


But there are more options: You can define your own layout, and provide it instead. (Just using an example I have checked in, but you could use any file with this structure.)
 

$ cat concertina_helper/layouts/30_wheatstone_cg.yaml
push:
  left:
    - E3 A3 C#4 A4 G#4
    - C3 G3 C4  E4 G4
    - B3 D4 G4  B4 D5
  right:
    - C#5 A5 G#5 C#6 A6
    - C5  E5 G5  C6  E6
    - G5  B5 D6  G6  B6
pull:
  left:
    - F3 Bb3 D#4 G4 Bb4
    - G3 B3  D4  F4 A4
    - A3 F#4 A4  C5 E5
  right:
    - D#5 G5 Bb5 D#6 F6
    - B4  D5 F5  A5  B5
    - F#5 A5 C6  E6  F#6


And then you can transpose the layout, choose a more concise output mode, and weight the fingering strategies differently:

$ concertina-helper tests/g-major.abc \
   --layout_path concertina_helper/layouts/30_jefferies_cg.yaml \
   --layout_transpose 2 \
   --format ascii \
   --bellows_change_cost 3 \
   --finger_in_same_column_cost 6 | head
Measure 1 - G4
PULL:
.....   .....
...@.   .....
.....   .....
Measure 1 - A4
PUSH:
.....   .....
....@   .....
.....   .....


And if you need more flexibility than that, there's the API: https://mccalluc.github.io/concertina-helper/concertina_helper.html

Edited by Chuck McCallum
Link to comment
Share on other sites

1 hour ago, Chuck McCallum said:

Sure. So it takes ABC files as input:
 

$ cat tests/g-major.abc
X: 1
T: G major scale
M: 4/4
L: 1/4
K: Gmaj
GABc|defg||


Its default output looks like: etc...

OK, that's helpful. Thanks

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...