Jump to content

My new client-side abcjs-based ABC-to-notation converter


Michael Eskin

Recommended Posts

With the demise of the mandolintab converter, I forked another abcjs based project and built this completely client-side open-source abc-to-notation converter. 

Perhaps others might find it useful:

http://michaeleskin.com/abctools/abctools.html



Works best on Chrome and Firefox.

Full source on my GitHub repo, feel free to fork it and modify it to your requirements!

https://github.com/seisiuneer/abctools


 

  • Like 3
Link to comment
Share on other sites

2 hours ago, eskin said:

It’s probably not up to the task of complex ABC files, but should be useful for simple traditional single tunes with chord indications.  It is sufficient to meet my humble needs for my whistle and B/C box teaching.

Points/questions arising:

 

I guess everyone has their own definition of 'complex'? For me, it's anything which can't be done in the context of an ABC w: line. Most of my (locally-hosted) programs generate modified ABC - the modifications go into the w: lines. The w: lines don't take cognisance of grace notes (as far as I know), therefore my stuff doesn't handle grace notes. Your converter seems to gobble 'em up with no problem whatsoever - I even threw a couple of pipe tunes at it (lots of grace notes there), and it seemed to thrive on this diet. So there are different perceptions of what's complex, and what isn't...

 

3-4 years ago, I provided modified scores (note-names only) to a whistle teacher in Vermont. We agreed that in the key of G (say), Fs would be designated as F, not F# - because on the score it's written as F, even though in absolute terms it is an F#. I notice that your converter marks 'em up as F#. So my question is: Is there a convention when using note-name tablature to either mark the notes relative to the key signature, or in absolute terms? I hope that made sense?

 

Final question: Somewhere along the line, your converter generates 'stuff' for the modified score. Is that 'stuff' rendered as ABC? If yes, is there any way of making the modified ABC code available to your 'umble servant...

 

Ta.

Edited by lachenal74693
Link to comment
Share on other sites

I finally figured out a way to detect whether sharps or flats are used in the key signature on each line and adapt the note name tablature accordingly.  It can't handle a key change in the middle of a line, but is way better than before.  The change is now live.

image.thumb.png.6170d4431d61decbb00430b0c07127a5.png

Edited by eskin
Link to comment
Share on other sites

While the converter is limited to single tunes, with a bit of creative ABC editing, you can get it to generate multipage tune sets.

Here’s how I could get it to do a 3-tune polka set in PDF form, two tunes on the first page, one tune on the second:

Starting with:
 

X: 1
T: The Blackwater
R: polka
M: 2/4
L: 1/8
K: Dmaj
|:Fd Bd/B/|AF ED|A,B, DE|FE EF|
Ad Bd/B/|AF EF|DF A/B/A/F/|ED D>E:|
|:FA Bc|d2 Ad|fg/f/ ed|fe e2|
dc/d/ ed|BA FE|DF A/B/A/F/|ED D>E:|


X: 2
T: Kathleen's
R: polka
M: 2/4
L: 1/8
K: Bmin
|:dc/d/ fe|dB Bd|e>f ed|cA Ac|
dc/d/ fe|dB Bd|c/B/A Bc|1 B2 Bc:|2 B2 f>g||
|:af ge|fd de/f/|gf ed|cA A>e|
fd ec|dB cA|BA FA|1 B2 Bf/g/:|2 B2 Bc||


X: 3
T: Mícheál's
R: polka
M: 2/4
L: 1/8
K: A
|:A2 BA/B/ | cA A>B | ce ae |f/a/f/e/ cB|
A2 BA/B/ | cA A>F | EF A/B/c/A/ |1 BA AE :|2 BA A2 ||
ag/a/ ba | fa fe |cA/c/ eA |cB B2 |
ag/a/ ba | fa fe |Ac e/f/e/c/ |BA A2 |
ag/a/ ba | fa fe |cA/c/ eA |cB Bc |
A2 BA/B/ | cA A>F | EF A/B/c/A/ | BA A2 |]

I strip all the headers other than the key from the second and third tunes, use %%center annotation to generate the names and add a %%vskip on the last tune to push it to a second page:

X: 1
T: The Blackwater Polka Set
R: polka
M: 2/4
L: 1/8
K: Dmaj
%%center
%%center The Blackwater
%%center
|:Fd Bd/B/|AF ED|A,B, DE|FE EF|
Ad Bd/B/|AF EF|DF A/B/A/F/|ED D>E:|
|:FA Bc|d2 Ad|fg/f/ ed|fe e2|
dc/d/ ed|BA FE|DF A/B/A/F/|ED D>E:|
%%center
%%center
%%center Kathleen’s
K:Bmin
|:dc/d/ fe|dB Bd|e>f ed|cA Ac|
dc/d/ fe|dB Bd|c/B/A Bc|1 B2 Bc:|2 B2 f>g||
|:af ge|fd de/f/|gf ed|cA A>e|
fd ec|dB cA|BA FA|1 B2 Bf/g/:|2 B2 Bc||
K: A
%%vskip 125
%%center Mícheál’s
|:A2 BA/B/ | cA A>B | ce ae |f/a/f/e/ cB|
A2 BA/B/ | cA A>F | EF A/B/c/A/ |1 BA AE :|2 BA A2 ||
ag/a/ ba | fa fe |cA/c/ eA |cB B2 |
ag/a/ ba | fa fe |Ac e/f/e/c/ |BA A2 |
ag/a/ ba | fa fe |cA/c/ eA |cB Bc |
A2 BA/B/ | cA A>F | EF A/B/c/A/ | BA A2 |]

PDF export results in:

https://www.dropbox.com/s/yln6jlgbgvl7w4c/The_Blackwater%20Polka%20Set.pdf?dl=0
 

Edited by eskin
Link to comment
Share on other sites

11 hours ago, eskin said:

I finally figured out a way to detect whether sharps or flats are used in the key signature on each line and adapt the note name tablature accordingly.  It can't handle a key change in the middle of a line, but is way better than before.  The change is now live.

 

8 hours ago, eskin said:

No, the various options for stripping annotations, text, chords, etc don't currently have a way to export the modified ABC other than just exporting the PDF or screen-shotting the preview.

Thanks for that!

 

In the specific case I outlined, the user and I agreed that accidentals would not be shown in the score (unless they were explicit accidentals). However, it would be pretty easy to tweak my software to do exactly what you have done. Maybe I need to think about offering either option? 'On-the-fly' key changes are handled, but like you, I can't handle mid-line key changes😢

 

Thanks for the explanation about the non-availability of the 'modified' ABC. Reading between the lines, that's what I had thought the answer might be.

 

What I didn't say (and should have done!) is that this is a pretty nice tool! What you (but not necessarily others), almost certainly know is that there's a bit of a discussion going on on melodeon.net about finding 'The Perfect ABC Editor'. The underlying abcjs software used in this program goes a long way towards providing just exactly that.

 

Thank you for providing it.

Edited by lachenal74693
Link to comment
Share on other sites

A new experimental feature for the ABC Transcription Tool: Auto-formatting of tune sets.
 
This option now shows up on the "Advanced Controls" panel if there is more than one tune is detected in the ABC.
 
Clicking "Auto-Format Tune Set" will reformat the set into one big tune that can then be exported to PDF.
 
You may have to adjust the %%vskip values to get proper paging of tunes if that is important to you, but this is a big step forward.

The tool is available at:


http://michaeleskin.com/abctools/abctools.html

Demo video:
Edited by eskin
Typo in link URL
  • Like 1
Link to comment
Share on other sites

My browser-based ABC transcription tool can now natively handle editing multiple tunes in one ABC file and export multi-tune PDF files (one tune per page)!
 

The tool is available at:


http://michaeleskin.com/abctools/abctools.html


Source code available on GitHub at:


https://github.com/seisiuneer/abctools


Demonstration video showing several examples of multi-tune import and PDF generation:
 

https://youtu.be/A_arBse7u5Q

Link to comment
Share on other sites

For my client-side web-based ABC-to-notation transcription tool, I changed out the Javascript framework I was using for the PDF rasterization.

 

It's now 10-100x faster generating PDF files for multiple tunes.

 

The original Javascript framework, html2canvas, would get slower and slower as the number of tunes being rendered increased.

 

The replacement Javascript framework, html-to-image, does not have that issue and renders each individual tune in the same time whether there are 3 or 30 tunes.

 

The tool is available at:

 

http://michaeleskin.com/abctools/abctools.html

 

The source is available on my GitHub repo at:

 

https://github.com/seisiuneer/abctools

 

Demo video showing the new PDF generation speed at:

 

https://youtu.be/vWoDCb3-n2M

 

Link to comment
Share on other sites

Sorry for all the posts, been a manic week...

If you're using the new "Multiple tunes per page" feature in my ABC converter and you want to force a tune to another page, here's a demo for how to modify the ABC by adding a series of:
 
W:
W:
(as many as you need)
W:
W: . (have to have a character on the final line)
 
to the end of the tune you want to have the extra space after.
 
In the demo video, first I render a set of tunes to PDF, and in the resulting PDF the second tune is split between two pages.
 
Then I add some space manually and regenerate the PDF pushing the second tune to the second page.
 
This info is now also on the Instructions page (click the link at the top of the converter page).
 
Thank you to Paul Gitlitz for this idea!

Demo video:
 
Link to comment
Share on other sites

You can now easily share tunes with others right from my ABC Transcription tool!

Clicking on the "Advanced Controls" button and then the "Create URL to Share" will give you a URL you can copy and paste into any browser to bring up the editor with the same tune set.

Thank you to Philip McGarvey for the new feature!

Demo Video:


https://youtu.be/3UUazwWcae0

The tool is at:


http://michaeleskin.com/abctools/abctools.html

GitHub repo is:


https://github.com/seisiuneer/abctools
Link to comment
Share on other sites

New feature: Sharing tunes sets via a QR code!
 

When sharing a tune set via the "Share URL" button, once a share URL is generated, if it is short enough to fit in a QR code, a new button appears.


Clicking the button will generate a QR code for the share URL and open it in a new browser tab where it can be saved or printed.


Scanning the code code with your devices camera will open the converter with the same tune set and tab settings.


Demo video showing QR code generation from a set of tunes:


https://youtu.be/tNTAAJzla_s


My ABC transcription tool is available at:


http://michaeleskin.com/abctools/abctools.html


The project Git repo is:


https://github.com/seisiuneer/abctools

 

Link to comment
Share on other sites

You can now easily force a page break after a tune when generating PDF files with multiple tunes per page in my ABC Transcription tool.

To force a page break after a specific tune during Multiple Tunes / Page PDF generation, add the following ABC at the bottom of the tune:

%%newpage

This will allow you to easily format a tune book where you want multiple tunes per page, but some tunes to not be split between pages

The tool is available at:

http://michaeleskin.com/abctools/abctools.html

The project repo is at:

https://github.com/seisiuneer/abctools

Demo video showing adding a %%newpage ABC directive at the end of a tune to force a break for a tune set where a tune was previously split between two pages:

https://youtu.be/GcGF8CGfRE4

Edited by eskin
typo
  • Like 1
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...