Jump to content

ABC Transcription Tools

Michael Eskin

Recommended Posts

To address a user request to have a way to export .mp3 files of the tunes with some delay before the music starts, I've added  additional options to the batch .MP3 exporter on the "More Tools" "Export All Audio or Images" dialog.


While primarily designed to do batch .MP3 export of all the tunes in a tunebook at one time, it also works just fine if you have a single tune.  


Think of this as an enhanced version of the simple single tune .mp3 export that is available from the Player.


You can now select between three options for what to inject before the tune(s) when exporting .mp3 files using the "Export All Tunes as MP3" dialog:


Do nothing
Inject two bars of silence
Inject a two-bar style-appropriate click intro

Inject both two bars of silence and click intro


You can also pick how many times you'd like the tunes to repeat in the .MP3 file.


It's really important when using this exporter, particularly with automatic repeat injection that you have properly formatted ABC with regards to repeat marks and pickups:


For clean repeats your tunes must not have extraneous pickup or trailing notes and must have proper and complete timing.


If there is a repeat at the end of the first part of a tune, either  standalone or in a first ending, there must be a matching |: bar at the  start of the tune for the silence/click injects and tune repeats to work properly.

Update 2/10/24: Added this same functionality to the "Inject Repeats and Two-Bar Click Intros" dialog as well.

Edited by Michael Eskin
Link to comment
Share on other sites

This video demonstrates how to create a set of tunes that will play continuously in the player:


Summary of the process shown in the video:

1) Remove the X: tags from all but the first tune.
2) Make sure the tunes are all run together by deleting any extra blank lines between the tunes.
3) Delete the R: tags on all but the first tune to get rid of the stacked style directives at the top.
4) Add space above the T: tags for the tunes after the first one using a %%text directive.
5) Add a matching %%titlefont and %%subtitle font directives to the top of the set so that all the titles display with the same font.

Link to comment
Share on other sites

Added a new "Inject Font Settings" feature on the "More Tools" dialog to allow you to easily inject your default font annotations into the header of one or all of the tunes.

Since the ABC font directives are pretty large, injecting all of them starts to impact the share links, while compressed, still have some maximum sizes for QR codes, Adobe Acrobat compatibility and such. So it makes more sense to just inject the directives you need, not all of them as I was doing in the first pass at this feature.

Note: This is an entirely optional feature, you only want to use this if you want to make sure that the way the ABC looks in the tool as far as fonts when someone opens one of your share links absolutely matches how it looked when you created the share link. Otherwise, if not specified in the ABC, the ABC will be rendered with the default fonts the user has setup in their their Settings/Font Settings. The notation in any PDF files will match however it looked at the time it was rendered, this is only about fonts in opened share links or exchanged ABC files.
Link to comment
Share on other sites

I've added a new annotation to the PDF exporter that will automagically inject the required fonts for a tune into the ABC contained in the share links:


So that you don't have to worry about dealing with it manually, I've added a new option in the PDF Tunebook Features setup dialog that will add the annotation for you:

"Inject all required fonts into the ABC in the playback links"

When this is checked, the ABC font annotations required to render each tune, much like is done for the MIDI instrument programs used for playback, will be inject to the top of each tune.

The default is for this to be unchecked (you have to opt-in to it).

The values in the PDF Feature Settings dialog are persistent so once you make any changes, they will be used the next time you open the dialog.

The most commonly required font descriptions like %%titlefont and %%subtitlefont are always added, but less common ones like for vocal parts and multi-voice tunes are only injected if required to try and keep the share link sizes down.

Again, this only comes into play if you want a tune opened from a share link in a PDF to have the same fonts as on your system when you generated the PDF tunebook.

The appearance of the tunes in the PDF tunebook itself will always reflect the fonts you have set in the tool's Settings/Font Settings dialog.

Link to comment
Share on other sites

I've added a new Bodhran instrument with multiple samples at various strike velocities, a scrape, and edge tap sound at MIDI program 117.
Full details on the mapping of notes to bodhran sounds at:

Demo video:

Live demo in the tool of the arrangement in the video:


Also included pitched bodhran samples starting at C5:

% Basic versions start at C4
C4 - Strike level 1
C#4 - Strike level 1
D4 - Strike level 2
D#4 - Strike level 2
E4 - Strike level 3
F4 - Strike level 4
F#4 - Strike level 4
G4 - Scrape
G#4 - Scrape
A4 - Edge tap
A#4 - Edge tap
% Pitched strike versions start at C5
C5 - Strike level 1
C#5 - Strike level 1 + 1 semitone
D5 - Strike level 1 + 2 semitones
D#5 - Strike level 1 + 3 semitones
E5 - Strike level 1 + 4 semitones
F5 - Strike level 2
F#5 - Strike level 2 + 1 semitone
G5 - Strike level 2 + 2 semitones
G#5 - Strike level 2 + 3 semitones
A5 - Strike level 2 + 4 semitones
A#5 - Strike level 3
B5 - Strike level 3 + 1 semitone
C6 - Strike level 3 + 2 semitones
C#6 - Strike level 3 + 3 semitones
D6 - Strike level 3 + 4 semitones
D#6 - Strike level 4
E6 - Strike level 4 + 1 semitone
F6 - Strike level 4 + 2 semitones
F#6 - Strike level 4 + 3 semitones
G6 - Strike level 4 + 4 semitones


When using the pitched sounds starting on C5, if you want to avoid excessive ledger lines, you can set an octave up transpose in the voice declaration:

V:2 name="Bodhran" transpose=12
% Use MIDI program 117 for the Bodhran sound
%%MIDI program 117

Edited by Michael Eskin
Link to comment
Share on other sites

A huge thank you to Ben Hockenberry for providing some lovely example bodhran templates in multiple styles for my ABC Transcription Tools.

You'll find them on the "Add" dialog, there is a new button labeled "Add Bodhran Backing Track Tune Template"

There are six tune styles available as Bodhran backing track templates:

Slip Jig

Once added, the ABC for the bodhran track is no different from any other ABC and can be edited if you want to customize the track and save off your own modified templates to open later in the tool like any other tune.



Edited by Michael Eskin
Link to comment
Share on other sites

The tuning of the bodhran for a tune can be now set using the following comment-based annotation anywhere in the tune's ABC:

%bodhran_pitch (drum pitch)


%bodhran_tuning (drum pitch)

Where the drum fundamental pitch can be:

C, C#, Db, D, D#, Eb, E, F, F#, Gb, G, G#, Ab, A, A#, Bb, or B.

If no pitch is specified the default fundamental pitch is A.



Edited by Michael Eskin
Link to comment
Share on other sites

Completely re-wrote the instrument sample fetching code in my custom version of abcjs in my ABC Transcription Tools to use fetch() instead of XMLHttpRequest and seeing dramatically faster load times for tunes at playback time.

This is a pretty major change.  

I've tested it on Firefox, Chrome, Safari, and mobile Safari, and it's looking really good and stable.

Please let me know if you run into any issues on any platform.  All you should notice is that it takes less time for the Player control bar to change from grey to black when playing, indicating that it's ready to play.

Link to comment
Share on other sites

  • 2 weeks later...

Really getting into the deep weeds here...

Detailed end-to-end technical demo of taking a three voice version of "Greensleeves" arranged for Cello and Harpsichord, combining and transposing the voices so that they both play at the correct pitch and have a compact visual representation that shows just the top melody line.

Original transcription, live in the tool:

Final transcription, live in the tool:

Demo video:

While I'm using a classical piece for this demo, the same process would be used for any multi-part arrangement.

Link to comment
Share on other sites

Demo of voice combining and hiding on a three-part version of "Greensleeves" with injected Solfège note names and my Solfège note names instrument.

Original transcription, live in the tool:

Demo video:

This concept could easily be adapted to create "Music Minus One" tunebooks for any instrument.


Link to comment
Share on other sites

Posted (edited)

Demo of voice combining and hiding to create a "Music Minus One" style tune for a Telemann trio for Flute and Continuo.

Original transcription, live in the tool:

PDF Tunebook shown in the video:

In the tunebook, click the title of the arrangement to launch it into the tool's Player.

In the tunebook, click the title of the arrangement to launch it into the tool's Player.

Once in the Player, you could also use the Tune Trainer to practice.

Demo video:


Edited by Michael Eskin
Link to comment
Share on other sites

If you would prefer to have tunes played with a specific instrument sound when opened from a PDF tunebook, go into the Settings, selected your preferred default instruments, and check the box labeled "Override all MIDI programs and volumes in the ABC with the defaults when playing tunes".

This video will walk you through the process:


Link to comment
Share on other sites

  • 3 weeks later...
Some exciting news, you may now add reverb when playing a tune by adding the following annotation anywhere in the tune's ABC:
%reverb reverb_style dry_mix_fraction wet_mix_fraction

Where reverb_style is one of:

room (same as room3)
chamber (same as chamber2)
hall (same as hall2)
church (same as church1)

dry_mix_fraction and wet_mix_fraction are fractional values that indicate how much of the original "dry" sound and reverb "wet" sound should be in the final playback mix.

Generally dry_mix_fraction and wet_mix_fraction should add up to 1.0, but any values are allowed.

For example, here's how to select the hall2 style reverb with .7 of the original sound and .3 of the reverb in the final mix:
%reverb hall2 0.7 0.3

For example, here's how to select the chamber1 style reverb with .8 of the original sound and .2 of the reverb in the final mix:

%reverb chamber1 0.8 0.2

Note: Reverb is only applied during live play, it does not get added to exported .wav or .mp3 audio files.

Demo video:

If you want to always have reverb enabled on tunes that don't already have %reverb annotations, there is a new setting in the Advanced Controls where you can enter %reverb parameters that will automatically be injected at play time.

By default, this is blank (no reverb).
Since reverb both requires fetching the impulse response file as well as takes additional CPU, I've made this one of the "opt-in" features rather than enabling reverb by default.
Maybe in the future I'll make having some reverb for playback be the default once this feature has had some time to be used in the field. For now, it's opt-in and may the odds be ever in your favor.
Full details about this are in the User Guide sections on "Adding Reverb When Playing Tunes" and "Advanced Settings"
On my system, I've specified that I'd like to have chamber reverb enabled by default with a dry mix of 0.8 and a wet mix of 0.2 by having the field set to:
chamber 0.8 0.2
I'm really liking how its working so far.
Link to comment
Share on other sites

You know, I'll bet Michael throws really interesting, great parties. 😎 With a great music mix.



Edited by Ken_Coles
Inserted essential missing word!
Link to comment
Share on other sites

46 minutes ago, Ken_Coles said:

You, I'll bet Michael throws really interesting, great parties. 😎 With a great music mix.



Yeah, it's interesting trying to develop a music tool that works well for both the traditional Irish players as well as, well, everyone else. 🙂 

My personal use for it is almost exclusively traditional Irish tunes, but as you see, it's quite capable of dealing with all kinds of other musical genres.


Link to comment
Share on other sites

Posted (edited)

You can now load custom convolution reverb impulse response files into the tool for simulating acoustic environments.

Full details in the User Guide sections on "Adding Reverb During Playback" and the "Advanced Settings" dialog:





OpenAIR website shown in the video with many free downloadable custom environment impulse response .wav files:  


Here's where you can download 271 impulse response files for a wide variety of environments:


Using IndexedDB I'm able to persist the loaded custom impulse response files so you don't need to reload them each time you run the tool.
It will use the last loaded custom impulse response file if you specify "custom" as the reverb style.
If no custom impulse response file has been loaded, "custom" defaults to "chamber2".


Demo video:


Edited by Michael Eskin
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...