Jump to content

Recommended Posts

Posted (edited)

You may have noticed that the long thread in this subgroup with updates about my ABC Transcription Tools has disappeared from this site.

That was at my request.

As the features I've been adding to the tool in the past few months really weren't Concertina-specific, it really didn't seen appropriate to post about them here going forward, so I requested that the admins remove the thread and instead, I'll only post here when I have Concertina-related updates.

And today, I do!

I've (hopefully) finally figured out a way to automagically inject G/D Anglo Concertina fingering tablature into ABC tunes with my ABC Transcription Tools.
 

Previously, it was only possible to inject C/G fingering tablature.


It takes advantage of the ability of abcjs to independently transpose the ABC itself and the notation displayed from that ABC, then injecting C/G tablature at the transposed pitch.


The general idea is the fingerings for a tune on G/D are essentially the same as C/G if you had transposed the tune either down a fifth or up a fourth to the key of C. So for a G tune, the G/D fingerings are the same as if you you play the tune in C on a C/G.

The trick is getting the notation to show the proper pitch when played on G/D independent of the ABC itself, and this is absolutely possible in my tool.


There are two solutions, the first I call a "low pitch" solution and it goes like this:


Select your tablature style (Jeffries or Wheatstone, along-the-row or cross-row style, show Gary Coover style or button numbers with arrows) from the "Tablature Injection Settings" on the "More Tools" window.


Click the "Transpose Down" button 7 times to bring the ABC itself down a fifth.


Add the following line to your ABC to visually transpose the displayed notation up to the original pitch:


%abcjs_render_params {"visualTranspose":7}


From the "More Tools" window, click "Inject Anglo Concertina Tab"


If you play the tune, it will be at the wrong pitch.


To fix this, you can add this line to your ABC which forces abcjs to play the pitch as displayed (but an octave down) in the notation:


%%MIDI transpose -12



Here is the "high pitch" solution, which creates tab for the tune played an octave higher than the "low pitch" solution:


Select your tablature style (Jeffries or Wheatstone, along-the-row or cross-row style, show Gary Coover style or button numbers with arrows) from the "Tablature Injection Settings" on the "More Tools" window.


Click the "Transpose Up" button 5 times to bring the ABC itself up a fourth.


Add the following line to your ABC to visually transpose the displayed notation down to the original pitch:


%abcjs_render_params {"visualTranspose":-5}


From the "More Tools" window, click "Inject Anglo Concertina Tab"


If you play the tune, it will be at the wrong pitch.


To fix this, you can add this line to your ABC which forces abcjs to play the pitch as displayed in the notation:


%%MIDI transpose 0

Since you can transpose all the tunes in a tunebook at once, generate the Anglo Concertina tablature for all the tunes, as well as add header to all the tunes via the "Inject ABC Header Text" feature it's trivial to do this for all the tunes in an entire tunebook at one time.


Most likely this process can be generalized for any tuning of Anglo, i.e. Bb/F, A/E, etc.


More details about the Anglo Concertina tablature feature of the tool can be found at:


https://michaeleskin.com/abctools/userguide.html#tab_concertina


and


https://michaeleskin.com/abctools/userguide.html#tablature_settings
 

Demo video of the process:

 

Edited by Michael Eskin
  • Michael Eskin changed the title to Automagically Generating G/D Anglo Concertina Fingering Tablature with my ABC Transcription Tools
Posted

If this is actually useful and not just a "party trick", I could easily automate this whole process as a new option in the tool, but I'll wait to hear if anyone actually cares. 🙂

Posted
9 hours ago, Michael Eskin said:

If this is actually useful and not just a "party trick", I could easily automate this whole process as a new option in the tool, but I'll wait to hear if anyone actually cares. 🙂

Last night, I'd just re-surfaced after spending about an hour trying this out, when I saw your most recent
post. I've thought hard about what to say without seeming downbeat, while also keeping it brief. This is
my best shot.

 

It does seem a tad complicated? If it is possible to do so, I think it's worth considering doing it in 'one
hit'? Surely it's also possible to just add tabs to a tune directly, according to what key it's in?


As to whether people care or not, (unfortunately) my own experience (here and elsewhere), is that usually,

after expressing an initial interest, they 'fade away'...🙁

 

Posted (edited)

Roger,


Yes, one could do it entirely by hand using ABC text annotations exactly the same way the tool injects automatically.  
 

It'd be quite tedious and probably error-prone since these kinds of annotations are at least 4 characters and as many as 8 characters that have to be injected for every single ABC note.

 

I think this is one of those things that's far easier done by an algorithm, at least for a first-level solution that can easily be tweaked manually (the "Highlighting" feature in my tool makes that simple), than done entirely by hand.  

 

Additionally, if one extensively edits the ABC for a tune, then it's trivial for the tool to regenerate the tablature compared to manually having to fix every note changed.

 

Both the along-the-row and cross-row solutions I make available are least-cost mapping algorithms that use a certain set of weightings of preferred fingers for certain notes based on specific playing styles combined with rules like avoiding having the same finger jump rows between notes. The cross-row solution in particular comes up with solutions that very closely match how I would play tunes myself, and that's by design, not by accident.

 

Regarding:

 

"It does seem a tad complicated? If it is possible to do so, I think it's worth considering doing it in 'one hit'? Surely it's also possible to just add tabs to a tune directly, according to what key it's in?"

 

I don't think it's complicated at all if, as I said in the video, you are comfortable using the features available in my tool and working with ABC in general. 

 

Considering that the tool can generate (hopefully) useful fingering solutions for one tune or 1000 tunes all at once following three simple steps, each of which can be done to all the tunes in an ABC tunebook in one operation:

 

1) Transpose the ABC down a fifth or up a fourth

2) Inject C/G Anglo Concertina tab

3) Inject offsetting visual and MIDI transpose annotations 

 

compared to doing even a single tune by hand, particularly if you are G/D player new to the instrument who is looking for examples of along-the-row or cross-row fingering solutions, might find value in this style of tablature, it's actually pretty simple.

 

Now, are there cases where doing this all manually might make sense, for example for a complete harmonic-style arrangement with melody and chords that my melody-only algorithm, which really was designed for traditional Irish tunes in common playing styles can't solve, absolutely.


As far as automating this three-step process in the tool, the question remains, does anyone besides you and I, since we both develop software tools that do this sort of thing, actually care about any of this or might find it potentially useful?  
 

I honestly have no idea.  
 

The C/G tablature solutions made a lot of sense for communicating specific fingering patterns for playing Traditional Irish tunes to newer players and has been very well received, but whether it's useful for those playing G/D, I just don't know.
 

I don't know if it makes sense for the styles of tunes that get played on these instruments, for example if most people are playing G/D in the harmonic style, then my tab solution is of no use to them, and that's fine, it was a fun experiment.
 

I'm going to wait for more feedback/interest from other G/D teachers and players before doing any more work on automating this specific process.

 

 

 

 

 

 

 

Edited by Michael Eskin
Posted
2 hours ago, Michael Eskin said:

Roger,


Yes, one could do it entirely by hand using ABC text annotations exactly the same way the tool injects automatically.  
 

etc...

Thanks for that detailed reply!

 

I'm talking (like you, I think?) about simple, melody-only tablatures.

 

I'm not actually doing anything by hand, except for the occasional fine-tune edit. Doing it by hand is slow, tedious and error-prone - a nightmare, in fact. That's how I started. Quickly abandoned in favour of a 'global edit'. In its turn, quickly abandoned in favour of a 'real program' (because the global edit could only handle really simple tunes). These days, the only stuff I do by hand is the occasional 'tweak' of the type you refer to.

 

I started out using text annotations to encode the tabs, but these days I encode them in lyrics (w:) lines.

 

My note/button allocation strategy is a little simpler than yours, I think? I use simple hard-wired look-up tables which are different for 'along-the-row' and 'cross-row' solutions. There's no weighting allowing for different playing styles, etc. (though I have tried this, with indifferent success so far). Consequently, I do generate the odd 'collision' where I have to suddenly shift from one row to another with the same finger, but this happens surprisingly infrequently (it surprises me, anyway!).

 

Whatever, my stuff works reasonably satisfactorily for the relatively simple music I play.

 

I really do think the process is a little complicated as it stands (but I'm going to have another look at that video when I get to a quieter location). We'll have to agree to differ on that one for the time being (amicably I hope)

 

I think you are right about not progressing automation of the process any further until someone else expresses an interest. You can end up wasting a lot of time doing stuff no-one is interested in (I've done it more than once!)

 

Thanks again for that detailed reply!

Posted

Hi Michael,

As I'm writing my own suite of music related software (which is far from being ready for a public release but which is pretty good for my own use), I've taken another approach to generate tablatures for the concertina.
As I'm pretty new to the concertina, I couldn't devise a fully automated tablature generator and those I've tried -- including yours --were not not convincing.

Then I opted for a semi-automated tablature generator. Here is how it works. First I've implement three basic algorithms : first finger, first row and second row.
When I want to generate a tablature for a new tune, I use the "first finger" algorithm and I start playing according to what has been generated. If some part of the tune is hard to play, I can select this part of the tune to try locally another algorithm (for example "first row" ). Eventually, I can change the button of any single note. 
As you may understand, it is more an interactive process that I use repeatedly until I find the fingering that matches my way of playing.
The fingering is then recorded in a database so that it can be retrieved and modified (and printed).

 

Yvon

Posted (edited)

Cool Yvon, the more options the better!

 

Not sure what you mean by "not convincing" other than I'm guessing you didn't agree with the resulting tab.  If you are new to the instrument I suggest you might want to give it another chance, there is truly some method to my madness. 😄

 

I've been playing the C/G Anglo in the Irish style for over 20 years.

 

My fingering solutions are based on two mapping models, one very close to my own cross-row style of C/G playing which I originally learned from Noel Hill, and the other an "on-row" style more typical of those who prefer to stay on the C-row.
 

They both have weightings for preferred fingers for specific notes when there are multiple options and attempt to avoid ever having the same finger jump between rows on two successive notes. 
 

The algorithm is essentially a least-cost mapping solution, which finds its way through the tune in the most efficient manner based on the button preference weightings and avoiding single row jumping. Eventually it converges on a solution and it can be spooky how close the cross-row solutions often are to exactly how I'd play a tune, either matching it 100% or coming up with very reasonable alternatives.

 

The resulting tablature is added to each note in the ABC as an annotation and can be easily edited after the fact if desired. 

 

It's one thing to just create any tablature. The real Holy Grail is creating tablature that actually reflects a specific playing style. I feel I have accomplished that for the two styles I support with my system.  
 

If additional styles or solutions with different preferred button weights were desired it would be fairly simple for me (or really anyone with JavaScript programming experience since the source code is fully available on GitHub)  to add them in the future.

 

Please keep us posted about your work! There aren't very many of us in the world who have decided to take on this rather complex task.

Edited by Michael Eskin
Posted (edited)
2 hours ago, Michael Eskin said:

Cool Yvon, the more options the better!

 ...

Please keep us posted about your work! There aren't very many of us in the world who have decided to take on this rather complex task.

Another option was outlined in the lead post in this thread from 2022. The mathematics involved was (and remains 🙁) above my pay grade. It looks interesting, but I don't know that any progress has been made - I certainly can't see any recent posts relating to this approach...

Edited by Roger Hare
Posted

Hi Michael,

 

I'm very sorry to understand that you might feel I don't like your ABC Transcription tools. Make sure that I think you did a great job,the most impressive among the other tools that process ABC files.

There is nothing wrong that I can detect in you way of generating tablatures for the concertina. The limits are that I like to find my one way and to experiment with my own hands the multiple paths that can be followed to play a tune on the concertina, hence my preference for a user driven generator of tablature versus a fully automated process.
The other limitation is that I have not been able to integrate your tablature system in my own application. This one is closely linked to MuseScore and the musicxml files that you generate did not integrate well in MuseScore.


If you don't mind I will explain in a few words what does my own application.
This application is a desktop application aimed to collect all the tunes I know or that I would like to learn in the short term.
As explained previously, it is closely linked to MuseScore software that I use to edit the tunes I have collected.

The main features are:
- import of ABC files (most often collected from thesession.org).
- classification and rating of the tunes (how I like them, how well I play them)...
- comment the tunes (i.e. who plays it, hightlight of the tricky parts...)
- multi-criterion search in my collection of tunes.
- score display,
- Midi playing (with additionnals features : swing, drum, off-beat stress...),
- MP3 playing : I have converted to MP3 all my CDs and for each of MP3 files, I can create links with the tunes in my collection so that I can loop play each tune individually. I can also play an MP3 file and display the score of each tune of the set while they are played.
- tunes can be edited with MuseScore and the modification imported back (MuseScore is launched to open the tune immediatly, no need to browse the file system with MuseScore).

The generation of tablature for the concertina is a recent new feature.

 

For the technical part:
The application has been developped on Linux with Go langage, GTK+, Sqlite database...
When I tried to port the application to Windows, the combination of GTK+ and Go appears to be a dead end, I had also many trouble with Midi and MP3 playing, so I am rewriting the front end on the basis of web technology, keeping the backend written in Go. Several months (elapsed time) of work will be needed for an eventual public release).

 

You will find attached, the main view of the application, before the rewrite that is ongoing.

 

image.thumb.png.539c9349c3ddc36f843a7d2b3574d1b4.png

Posted
9 hours ago, Roger Hare said:

Another option was outlined in the lead post in this thread from 2022. The mathematics involved was (and remains 🙁) above my pay grade. It looks interesting, but I don't know that any progress has been made - I certainly can't see any recent posts relating to this approach...

A very interesting thread but a important question was not raised : what about the human being who is expected to play according to these super optimized algorithm ? 
Who will be able to memorize these optimized fingerings ? 

Posted (edited)

Hi Yvon,

I don't know what style of music you are interested in, but my focus is on traditional Irish dance music as would be played in sessions and for step and ceili dancers.

 

If you get lessons from an experienced traditional Irish style player, as I have with Noel Hill multiple times at his week long workshops when I first started playing Anglo Concertina in the early 2000s, they teach you specific fingering patterns for the most common scales in traditional Irish music to use to play tunes. 

They have figured out their own optimal solutions for most efficient playing, and while you're taking lessons with them, will strongly encourage you to stick to their system. 

They can tell you exactly why they chose the rules they chose and can explain when you need to alter from the rules for the needs of a specific tune. Nothing happens by accident.

You learn how they play a G major scale (which works with G major, A Dorian, and D Mixolydian tunes), a D major scale (which works with D major, E Dorian, and A Mixolydian tunes), etc.   

You don't "memorize" anything intellectually.  It's all about muscle memory. 

Like practicing scales for any instrument, you learn how to play the most common scales using certain fingering patterns, and then learn how to alter those patterns to avoid jumping fingers between rows by using the duplicated notes on the instrument.

You learn the patterns and use them in your early playing and as you learn more tunes, you'll find that you automatically start using the scale patterns you've played hundreds and hundreds of times for other tunes until it becomes completely automatic, even dealing with the occasional exceptions to the rules for specific tunes.

My Anglo Concertina button tab generation algorithm does it's best to model those fingering patterns and exception rules and the results are either identical or extremely close (in cases where there are essentially two equivalent solutions) to a system that, for example, a cross-row player like Noel would teach.

Tablature is primarily for new players to the instrument to help them establish those patterns in the body by playing by rote from the tunes with the tablature added. 

It also can be useful for those who have limited fluency with reading music notation, to better help them associate the notation with the buttons on the instrument.

After a year or so of work, I can't imagine anyone needing tab.

As you said yourself, you're a new player to the instrument, assuming you're interested in playing in the traditional Irish style, if you've not had formal instruction in the style, some exposure to these systems explored through use of my tool might be useful to you. 

Michael


 

Edited by Michael Eskin
Posted (edited)
2 hours ago, Yvon said:

A very interesting thread but a important question was not raised : what about the human being who is expected to play according to these super optimized algorithm ? 
Who will be able to memorize these optimized fingerings ? 

I think the idea was that the 'super optimized algorithm' would generate 'playable' fingerings. If the fingerings were playable, they should (presumably) be relatively easy to memorise? That's how I interpreted it at the time.

 

From memory, the problem the OP was experiencing was the difficulty of integrating those fingering solutions into an ABC tune script.

 

I think what Michael Eskin just said is right. I've never had lessons (completely self-taught), but I'm one of the folks who have 'limited fluency with reading music notation', so I continue to use tabs when learning new tunes. A couple of folks I've supplied with tabbed versions of our Morris tunes have ditched them after the first few months, when they've got the tunes sorted - by a combination of learning by ear and muscle memory I suppose, coupled with using the tabs as a starting point and (later) as an aide-memoire.

Edited by Roger Hare
Posted (edited)

Yvon,

The desktop version of MuseScore 4 is an amazing tool for sure.

I use the desktop version on my Mac to transcode really complex MIDI to MusicXML for import and transcoding to ABC with my tool.

Otherwise I really don't enjoy using it, or really any other WYSIWYG drag-and-drop based music editor, having gotten used to the simplicity of ABC in comparison. 

MuseScore 4 just seems like massive overkill for simple single melody line tunes that can be typed out in ABC in a couple of minutes.

I keep MuseScore 4 around for the sorts of "heavy lifting" notation transformation operations that aren't easy to do natively with either my tool or other ABC tools, but I can't imagine using it as my primary notation editor, but that's just me.

I also really despise them hoovering up all the arrangements they could find and putting them behind a paywall on their website as well as their seemly every-other-day stream of promotional emails trying to sell me vaguely defined tiered (do I need a Pro account, or is it Pro + or Songbook Bonus Extras Elite account, why do I get access to these 19,000 scores but not these 35,000 others?) overpriced services this week only for 90% off but then renew in a year for 10x the price. 

I'm having a bit of fun with them but still, nope.

I'll never use or pay for their service, as I've learned the hard way to never depend on a third party service that is server-based.

They can just go away and you're left in the dust as did the previous server-side web ABC renderer I had used for years until it stopped working. 

That's why my tool is entirely client-side and other than two very minor features that are written in Python (only because there were no Javascript libraries available to do the function) and setup as web services on PythonAnywhere (MusicXML export and MIDI import), there are no dependencies on external services and the tool runs completely offline with nothing stored outside your own device.

But that's just me and my priorities. 

It's great that you're able to create extensions to MuseScore that do the things you're interested in.

Edited by Michael Eskin
  • Like 1

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...